crewly 1.20.180 → 1.20.182
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/config/skills/agent/remote-browser/SKILL.md +28 -8
- package/dist/backend/backend/src/constants.d.ts +89 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +99 -2
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +2 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +15 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts +11 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js +44 -9
- package/dist/backend/backend/src/controllers/system/runtime-fallback.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/system/runtime-terms.controller.d.ts +31 -0
- package/dist/backend/backend/src/controllers/system/runtime-terms.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/system/runtime-terms.controller.js +99 -0
- package/dist/backend/backend/src/controllers/system/runtime-terms.controller.js.map +1 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +51 -0
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/modules/system.routes.js +3 -0
- package/dist/backend/backend/src/routes/modules/system.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/antigravity-runtime.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/antigravity-runtime.service.js +5 -0
- package/dist/backend/backend/src/services/agent/antigravity-runtime.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts +202 -0
- package/dist/backend/backend/src/services/browser/browser-approval.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-approval.service.js +533 -0
- package/dist/backend/backend/src/services/browser/browser-approval.service.js.map +1 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts +24 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js +55 -0
- package/dist/backend/backend/src/services/browser/browser-bridge.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-session.service.d.ts +51 -0
- package/dist/backend/backend/src/services/browser/browser-session.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-session.service.js +82 -3
- package/dist/backend/backend/src/services/browser/browser-session.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/held-action-store.d.ts +125 -0
- package/dist/backend/backend/src/services/browser/held-action-store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/browser/held-action-store.js +141 -0
- package/dist/backend/backend/src/services/browser/held-action-store.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-card.d.ts +23 -5
- package/dist/backend/backend/src/services/decisions/decision-card.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-card.js +56 -9
- package/dist/backend/backend/src/services/decisions/decision-card.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +96 -1
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.service.js +190 -8
- package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision.wiring.js +7 -0
- package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts +8 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js +5 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-availability.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts +2 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js +4 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +2 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js +3 -0
- package/dist/backend/backend/src/services/runtime-fallback/runtime-fallback.wiring.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-smoke-test.service.d.ts +15 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-smoke-test.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/runtime-fallback/runtime-smoke-test.service.js +13 -2
- package/dist/backend/backend/src/services/runtime-fallback/runtime-smoke-test.service.js.map +1 -1
- package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-driver.d.ts +92 -0
- package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-driver.d.ts.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-driver.js +199 -0
- package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-driver.js.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-screens.d.ts +79 -0
- package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-screens.d.ts.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-screens.js +145 -0
- package/dist/backend/backend/src/services/runtime-terms/antigravity-terms-screens.js.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/fake-agy-tui.fixture.d.ts +75 -0
- package/dist/backend/backend/src/services/runtime-terms/fake-agy-tui.fixture.d.ts.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/fake-agy-tui.fixture.js +218 -0
- package/dist/backend/backend/src/services/runtime-terms/fake-agy-tui.fixture.js.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts +245 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.js +428 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.js.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms.store.d.ts +67 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms.store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms.store.js +78 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms.store.js.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms.wiring.d.ts +39 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms.wiring.js +161 -0
- package/dist/backend/backend/src/services/runtime-terms/runtime-terms.wiring.js.map +1 -0
- package/dist/backend/backend/src/types/decision.types.d.ts +55 -2
- package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +89 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +99 -2
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/agent/antigravity-runtime.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/antigravity-runtime.service.js +5 -0
- package/dist/cli/backend/src/services/agent/antigravity-runtime.service.js.map +1 -1
- package/dist/cli/backend/src/services/decisions/decision-card.d.ts +165 -0
- package/dist/cli/backend/src/services/decisions/decision-card.d.ts.map +1 -0
- package/dist/cli/backend/src/services/decisions/decision-card.js +358 -0
- package/dist/cli/backend/src/services/decisions/decision-card.js.map +1 -0
- package/dist/cli/backend/src/services/decisions/decision-contract.d.ts +83 -0
- package/dist/cli/backend/src/services/decisions/decision-contract.d.ts.map +1 -0
- package/dist/cli/backend/src/services/decisions/decision-contract.js +226 -0
- package/dist/cli/backend/src/services/decisions/decision-contract.js.map +1 -0
- package/dist/cli/backend/src/services/decisions/decision-store.d.ts +80 -0
- package/dist/cli/backend/src/services/decisions/decision-store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/decisions/decision-store.js +151 -0
- package/dist/cli/backend/src/services/decisions/decision-store.js.map +1 -0
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts +376 -0
- package/dist/cli/backend/src/services/decisions/decision.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/decisions/decision.service.js +821 -0
- package/dist/cli/backend/src/services/decisions/decision.service.js.map +1 -0
- package/dist/cli/backend/src/services/decisions/ticket-thread-store.d.ts +97 -0
- package/dist/cli/backend/src/services/decisions/ticket-thread-store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/decisions/ticket-thread-store.js +137 -0
- package/dist/cli/backend/src/services/decisions/ticket-thread-store.js.map +1 -0
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts +136 -0
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.d.ts.map +1 -0
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js +152 -0
- package/dist/cli/backend/src/services/runtime-fallback/runtime-fallback.types.js.map +1 -0
- package/dist/cli/backend/src/services/runtime-fallback/runtime-smoke-test.service.d.ts +217 -0
- package/dist/cli/backend/src/services/runtime-fallback/runtime-smoke-test.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/runtime-fallback/runtime-smoke-test.service.js +430 -0
- package/dist/cli/backend/src/services/runtime-fallback/runtime-smoke-test.service.js.map +1 -0
- package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-driver.d.ts +92 -0
- package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-driver.d.ts.map +1 -0
- package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-driver.js +199 -0
- package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-driver.js.map +1 -0
- package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-screens.d.ts +79 -0
- package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-screens.d.ts.map +1 -0
- package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-screens.js +145 -0
- package/dist/cli/backend/src/services/runtime-terms/antigravity-terms-screens.js.map +1 -0
- package/dist/cli/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts +245 -0
- package/dist/cli/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts.map +1 -0
- package/dist/cli/backend/src/services/runtime-terms/runtime-terms-consent.service.js +428 -0
- package/dist/cli/backend/src/services/runtime-terms/runtime-terms-consent.service.js.map +1 -0
- package/dist/cli/backend/src/services/runtime-terms/runtime-terms.store.d.ts +67 -0
- package/dist/cli/backend/src/services/runtime-terms/runtime-terms.store.d.ts.map +1 -0
- package/dist/cli/backend/src/services/runtime-terms/runtime-terms.store.js +78 -0
- package/dist/cli/backend/src/services/runtime-terms/runtime-terms.store.js.map +1 -0
- package/dist/cli/backend/src/types/decision.types.d.ts +192 -0
- package/dist/cli/backend/src/types/decision.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/decision.types.js +13 -0
- package/dist/cli/backend/src/types/decision.types.js.map +1 -0
- package/dist/cli/cli/src/commands/harness-setup.js +2 -2
- package/frontend/dist/assets/{index-4271e95e.js → index-9c91de50.js} +138 -138
- package/frontend/dist/index.html +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-smoke-test.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/runtime-fallback/runtime-smoke-test.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drive Antigravity CLI's first-run screens to the owner's choice,
|
|
3
|
+
* deterministically, in a terminal the harness controls.
|
|
4
|
+
*
|
|
5
|
+
* One key at a time; before every key the screen is read and parsed
|
|
6
|
+
* ({@link parseAntigravityTermsScreen}) and the next key is chosen from what
|
|
7
|
+
* is on screen — never from a fixed key count:
|
|
8
|
+
*
|
|
9
|
+
* - colour scheme: bring the focus to `terminal`, Enter; leave "Import
|
|
10
|
+
* extensions from Gemini CLI" unchecked; Enter on Next only when the
|
|
11
|
+
* screen shows `* terminal` and the import box unchecked;
|
|
12
|
+
* - Terms: toggle the data-sharing box only when it differs from the
|
|
13
|
+
* owner's choice, re-read to verify, then go to Done and press Enter —
|
|
14
|
+
* only when the box (read again, right then) matches the choice;
|
|
15
|
+
* - then wait for the main prompt.
|
|
16
|
+
*
|
|
17
|
+
* Anything that does not match (an unknown screen for too long, an account
|
|
18
|
+
* sign-in, no focus, too many keys) aborts: Done is never pressed after a
|
|
19
|
+
* mismatch. specs/2026-10-01-runtime-terms-consent.md
|
|
20
|
+
*
|
|
21
|
+
* @module services/runtime-terms/antigravity-terms-driver
|
|
22
|
+
*/
|
|
23
|
+
import { type AntigravityTermsScreen } from './antigravity-terms-screens.js';
|
|
24
|
+
/** A terminal the driver can type into and read (a PTY session; the fake TUI in tests). */
|
|
25
|
+
export interface TermsTerminal {
|
|
26
|
+
/** Write raw bytes (key escape sequences) */
|
|
27
|
+
write(data: string): void | Promise<void>;
|
|
28
|
+
/** Current screen text */
|
|
29
|
+
capture(): string | Promise<string>;
|
|
30
|
+
}
|
|
31
|
+
/** Keys the driver sends. */
|
|
32
|
+
export type DriverKey = 'Up' | 'Down' | 'Left' | 'Right' | 'Enter';
|
|
33
|
+
/** Their bytes (the same as the session helper's KEY_CODES). */
|
|
34
|
+
export declare const DRIVER_KEY_BYTES: Readonly<Record<DriverKey, string>>;
|
|
35
|
+
/** Outcome of a drive. */
|
|
36
|
+
export interface TermsDriveResult {
|
|
37
|
+
ok: boolean;
|
|
38
|
+
/** Done was pressed (the terms were accepted on screen) */
|
|
39
|
+
donePressed: boolean;
|
|
40
|
+
/** The runtime opened straight to its prompt: terms were already accepted */
|
|
41
|
+
alreadyAccepted: boolean;
|
|
42
|
+
/** Data-sharing box state when Done was pressed */
|
|
43
|
+
dataSharing?: boolean;
|
|
44
|
+
/** Why it stopped (English), when not ok */
|
|
45
|
+
error?: string;
|
|
46
|
+
/** Keys sent, in order */
|
|
47
|
+
keys: DriverKey[];
|
|
48
|
+
/** Last screen text */
|
|
49
|
+
screen: string;
|
|
50
|
+
}
|
|
51
|
+
/** Options. */
|
|
52
|
+
export interface TermsDriveOptions {
|
|
53
|
+
/** Leave the data-sharing box checked */
|
|
54
|
+
shareData: boolean;
|
|
55
|
+
now?: () => number;
|
|
56
|
+
sleep?: (ms: number) => Promise<void>;
|
|
57
|
+
pollMs?: number;
|
|
58
|
+
keySettleMs?: number;
|
|
59
|
+
launchTimeoutMs?: number;
|
|
60
|
+
unknownScreenTimeoutMs?: number;
|
|
61
|
+
promptTimeoutMs?: number;
|
|
62
|
+
maxKeys?: number;
|
|
63
|
+
}
|
|
64
|
+
/** What the next step is. */
|
|
65
|
+
type Step = {
|
|
66
|
+
key: DriverKey;
|
|
67
|
+
} | {
|
|
68
|
+
wait: true;
|
|
69
|
+
} | {
|
|
70
|
+
done: true;
|
|
71
|
+
} | {
|
|
72
|
+
abort: string;
|
|
73
|
+
};
|
|
74
|
+
/**
|
|
75
|
+
* Decide the next step for a parsed screen.
|
|
76
|
+
*
|
|
77
|
+
* @param s - Parsed screen
|
|
78
|
+
* @param shareData - Owner's choice for the data-sharing box
|
|
79
|
+
* @param donePressed - Done was already pressed
|
|
80
|
+
* @returns Next step
|
|
81
|
+
*/
|
|
82
|
+
export declare function nextTermsStep(s: AntigravityTermsScreen, shareData: boolean, donePressed: boolean): Step;
|
|
83
|
+
/**
|
|
84
|
+
* Drive the first-run screens. Never throws.
|
|
85
|
+
*
|
|
86
|
+
* @param term - Terminal running a freshly launched `agy`
|
|
87
|
+
* @param opts - Owner's choice and timing
|
|
88
|
+
* @returns Result
|
|
89
|
+
*/
|
|
90
|
+
export declare function driveAntigravityTerms(term: TermsTerminal, opts: TermsDriveOptions): Promise<TermsDriveResult>;
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=antigravity-terms-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-terms-driver.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/runtime-terms/antigravity-terms-driver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAGH,OAAO,EAA+B,KAAK,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAK1G,2FAA2F;AAC3F,MAAM,WAAW,aAAa;IAC7B,6CAA6C;IAC7C,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1C,0BAA0B;IAC1B,OAAO,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CACpC;AAED,6BAA6B;AAC7B,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAEnE,gEAAgE;AAChE,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAMhE,CAAC;AAEF,0BAA0B;AAC1B,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,OAAO,CAAC;IACZ,2DAA2D;IAC3D,WAAW,EAAE,OAAO,CAAC;IACrB,6EAA6E;IAC7E,eAAe,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,uBAAuB;IACvB,MAAM,EAAE,MAAM,CAAC;CACf;AAED,eAAe;AACf,MAAM,WAAW,iBAAiB;IACjC,yCAAyC;IACzC,SAAS,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,6BAA6B;AAC7B,KAAK,IAAI,GAAG;IAAE,GAAG,EAAE,SAAS,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAErF;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,sBAAsB,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,GAAG,IAAI,CAuCvG;AAED;;;;;;GAMG;AACH,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA4FnH"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drive Antigravity CLI's first-run screens to the owner's choice,
|
|
3
|
+
* deterministically, in a terminal the harness controls.
|
|
4
|
+
*
|
|
5
|
+
* One key at a time; before every key the screen is read and parsed
|
|
6
|
+
* ({@link parseAntigravityTermsScreen}) and the next key is chosen from what
|
|
7
|
+
* is on screen — never from a fixed key count:
|
|
8
|
+
*
|
|
9
|
+
* - colour scheme: bring the focus to `terminal`, Enter; leave "Import
|
|
10
|
+
* extensions from Gemini CLI" unchecked; Enter on Next only when the
|
|
11
|
+
* screen shows `* terminal` and the import box unchecked;
|
|
12
|
+
* - Terms: toggle the data-sharing box only when it differs from the
|
|
13
|
+
* owner's choice, re-read to verify, then go to Done and press Enter —
|
|
14
|
+
* only when the box (read again, right then) matches the choice;
|
|
15
|
+
* - then wait for the main prompt.
|
|
16
|
+
*
|
|
17
|
+
* Anything that does not match (an unknown screen for too long, an account
|
|
18
|
+
* sign-in, no focus, too many keys) aborts: Done is never pressed after a
|
|
19
|
+
* mismatch. specs/2026-10-01-runtime-terms-consent.md
|
|
20
|
+
*
|
|
21
|
+
* @module services/runtime-terms/antigravity-terms-driver
|
|
22
|
+
*/
|
|
23
|
+
import { RUNTIME_TERMS_CONSTANTS } from '../../constants.js';
|
|
24
|
+
import { parseAntigravityTermsScreen } from './antigravity-terms-screens.js';
|
|
25
|
+
const A = RUNTIME_TERMS_CONSTANTS.ANTIGRAVITY;
|
|
26
|
+
const D = RUNTIME_TERMS_CONSTANTS.DRIVE;
|
|
27
|
+
/** Their bytes (the same as the session helper's KEY_CODES). */
|
|
28
|
+
export const DRIVER_KEY_BYTES = {
|
|
29
|
+
Up: '\x1b[A',
|
|
30
|
+
Down: '\x1b[B',
|
|
31
|
+
Right: '\x1b[C',
|
|
32
|
+
Left: '\x1b[D',
|
|
33
|
+
Enter: '\r',
|
|
34
|
+
};
|
|
35
|
+
/**
|
|
36
|
+
* Decide the next step for a parsed screen.
|
|
37
|
+
*
|
|
38
|
+
* @param s - Parsed screen
|
|
39
|
+
* @param shareData - Owner's choice for the data-sharing box
|
|
40
|
+
* @param donePressed - Done was already pressed
|
|
41
|
+
* @returns Next step
|
|
42
|
+
*/
|
|
43
|
+
export function nextTermsStep(s, shareData, donePressed) {
|
|
44
|
+
switch (s.kind) {
|
|
45
|
+
case 'login':
|
|
46
|
+
return { abort: 'Antigravity CLI asked for a Google account sign-in (Crewly only runs it on a Gemini API key)' };
|
|
47
|
+
case 'trust':
|
|
48
|
+
// The folder-trust screen: its pre-selected "Yes, I trust this folder" (the harness's scratch folder).
|
|
49
|
+
return { key: 'Enter' };
|
|
50
|
+
case 'main_prompt':
|
|
51
|
+
return { done: true };
|
|
52
|
+
case 'unknown':
|
|
53
|
+
return { wait: true };
|
|
54
|
+
case 'color_scheme': {
|
|
55
|
+
if (donePressed)
|
|
56
|
+
return { abort: 'The setup screens came back after Done was pressed' };
|
|
57
|
+
const f = s.focus;
|
|
58
|
+
if (!f)
|
|
59
|
+
return { wait: true };
|
|
60
|
+
if (f.type === 'scheme') {
|
|
61
|
+
if (f.name === A.DEFAULT_COLOR_SCHEME)
|
|
62
|
+
return { key: 'Enter' };
|
|
63
|
+
// Move toward `terminal` (the first scheme).
|
|
64
|
+
return { key: 'Up' };
|
|
65
|
+
}
|
|
66
|
+
if (f.type === 'import') {
|
|
67
|
+
if (f.checked)
|
|
68
|
+
return { key: 'Enter' };
|
|
69
|
+
if (s.chosenScheme !== A.DEFAULT_COLOR_SCHEME)
|
|
70
|
+
return { key: 'Up' };
|
|
71
|
+
return { key: 'Down' };
|
|
72
|
+
}
|
|
73
|
+
// Next
|
|
74
|
+
if (s.chosenScheme === A.DEFAULT_COLOR_SCHEME && s.importChecked !== true)
|
|
75
|
+
return { key: 'Enter' };
|
|
76
|
+
return { key: 'Up' };
|
|
77
|
+
}
|
|
78
|
+
case 'terms': {
|
|
79
|
+
if (donePressed)
|
|
80
|
+
return { wait: true };
|
|
81
|
+
if (s.dataChecked === null)
|
|
82
|
+
return { abort: 'Could not read the data-sharing checkbox on the Terms screen' };
|
|
83
|
+
if (!s.focus)
|
|
84
|
+
return { wait: true };
|
|
85
|
+
if (s.focus === 'data')
|
|
86
|
+
return s.dataChecked === shareData ? { key: 'Down' } : { key: 'Enter' };
|
|
87
|
+
if (s.focus === 'previous')
|
|
88
|
+
return s.dataChecked === shareData ? { key: 'Right' } : { key: 'Up' };
|
|
89
|
+
// Done is focused: press it only when the box matches the choice.
|
|
90
|
+
return s.dataChecked === shareData ? { key: 'Enter' } : { key: 'Left' };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Drive the first-run screens. Never throws.
|
|
96
|
+
*
|
|
97
|
+
* @param term - Terminal running a freshly launched `agy`
|
|
98
|
+
* @param opts - Owner's choice and timing
|
|
99
|
+
* @returns Result
|
|
100
|
+
*/
|
|
101
|
+
export async function driveAntigravityTerms(term, opts) {
|
|
102
|
+
const now = opts.now ?? (() => Date.now());
|
|
103
|
+
const sleep = opts.sleep ?? ((ms) => new Promise((r) => setTimeout(r, ms)));
|
|
104
|
+
const pollMs = opts.pollMs ?? D.POLL_MS;
|
|
105
|
+
const keySettleMs = opts.keySettleMs ?? D.KEY_SETTLE_MS;
|
|
106
|
+
const maxKeys = opts.maxKeys ?? D.MAX_KEYS;
|
|
107
|
+
const keys = [];
|
|
108
|
+
let screen = '';
|
|
109
|
+
let donePressed = false;
|
|
110
|
+
let dataSharing;
|
|
111
|
+
let sawFirstRun = false;
|
|
112
|
+
const started = now();
|
|
113
|
+
let unknownSince = null;
|
|
114
|
+
let doneAt = 0;
|
|
115
|
+
const read = async () => {
|
|
116
|
+
try {
|
|
117
|
+
screen = String(await term.capture());
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
// keep the last screen
|
|
121
|
+
}
|
|
122
|
+
return screen;
|
|
123
|
+
};
|
|
124
|
+
const result = (ok, error) => ({
|
|
125
|
+
ok,
|
|
126
|
+
donePressed,
|
|
127
|
+
alreadyAccepted: ok && !donePressed && !sawFirstRun,
|
|
128
|
+
...(dataSharing !== undefined ? { dataSharing } : {}),
|
|
129
|
+
...(error ? { error } : {}),
|
|
130
|
+
keys,
|
|
131
|
+
screen,
|
|
132
|
+
});
|
|
133
|
+
try {
|
|
134
|
+
for (;;) {
|
|
135
|
+
const parsed = parseAntigravityTermsScreen(await read());
|
|
136
|
+
if (parsed.kind === 'color_scheme' || parsed.kind === 'terms')
|
|
137
|
+
sawFirstRun = true;
|
|
138
|
+
const step = nextTermsStep(parsed, opts.shareData, donePressed);
|
|
139
|
+
if ('abort' in step)
|
|
140
|
+
return result(false, step.abort);
|
|
141
|
+
if ('done' in step) {
|
|
142
|
+
if (sawFirstRun && !donePressed)
|
|
143
|
+
return result(false, 'The prompt appeared without the Terms screen being completed');
|
|
144
|
+
return result(true);
|
|
145
|
+
}
|
|
146
|
+
if ('wait' in step) {
|
|
147
|
+
const t = now();
|
|
148
|
+
if (donePressed) {
|
|
149
|
+
if (t - doneAt > (opts.promptTimeoutMs ?? D.PROMPT_TIMEOUT_MS)) {
|
|
150
|
+
return result(false, 'Done was pressed, but Antigravity CLI did not show its prompt in time');
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
else if (!sawFirstRun && parsed.kind === 'unknown') {
|
|
154
|
+
if (t - started > (opts.launchTimeoutMs ?? D.LAUNCH_TIMEOUT_MS)) {
|
|
155
|
+
return result(false, 'Antigravity CLI did not show its setup screens or its prompt in time');
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
unknownSince ??= t;
|
|
160
|
+
if (t - unknownSince > (opts.unknownScreenTimeoutMs ?? D.UNKNOWN_SCREEN_TIMEOUT_MS)) {
|
|
161
|
+
return result(false, 'The screen did not match the expected setup screens');
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
await sleep(pollMs);
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
unknownSince = null;
|
|
168
|
+
if (keys.length >= maxKeys)
|
|
169
|
+
return result(false, `Gave up after ${maxKeys} keys without reaching the end of the setup screens`);
|
|
170
|
+
const pressingDone = parsed.kind === 'terms' && parsed.focus === 'done' && step.key === 'Enter';
|
|
171
|
+
if (pressingDone) {
|
|
172
|
+
// Last check right before accepting: read again, everything must still match.
|
|
173
|
+
const again = parseAntigravityTermsScreen(await read());
|
|
174
|
+
if (again.kind !== 'terms' || again.focus !== 'done' || again.dataChecked !== opts.shareData) {
|
|
175
|
+
return result(false, 'The Terms screen changed just before Done; nothing was accepted');
|
|
176
|
+
}
|
|
177
|
+
dataSharing = again.dataChecked;
|
|
178
|
+
}
|
|
179
|
+
const before = screen;
|
|
180
|
+
await term.write(DRIVER_KEY_BYTES[step.key]);
|
|
181
|
+
keys.push(step.key);
|
|
182
|
+
if (pressingDone) {
|
|
183
|
+
donePressed = true;
|
|
184
|
+
doneAt = now();
|
|
185
|
+
}
|
|
186
|
+
// Wait for the screen to react before deciding again.
|
|
187
|
+
const settleUntil = now() + keySettleMs;
|
|
188
|
+
while (now() < settleUntil) {
|
|
189
|
+
await sleep(pollMs);
|
|
190
|
+
if ((await read()) !== before)
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
catch (err) {
|
|
196
|
+
return result(false, `Driving the setup screens failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=antigravity-terms-driver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-terms-driver.js","sourceRoot":"","sources":["../../../../../../backend/src/services/runtime-terms/antigravity-terms-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity CLI first-run screens, read from screen text (pure).
|
|
3
|
+
*
|
|
4
|
+
* What agy 1.2.14 paints on its first interactive launch (captured in a PTY,
|
|
5
|
+
* focus marked by `> `, a chosen colour scheme by `* `, a focused button
|
|
6
|
+
* drawn without its brackets):
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* Welcome to Antigravity CLI!
|
|
10
|
+
* Choose your color scheme: ╭──── preview ────╮
|
|
11
|
+
* > terminal │ … │
|
|
12
|
+
* light │ … │
|
|
13
|
+
* …
|
|
14
|
+
* Migration options: ← only when Gemini CLI extensions exist
|
|
15
|
+
* > [ ] Import extensions from Gemini CLI (1 found: …)
|
|
16
|
+
* [Next] ← focused: "> Next"
|
|
17
|
+
*
|
|
18
|
+
* Terms of Service & Data Use
|
|
19
|
+
* > [x] Yes, I agree to help improve Antigravity CLI by allowing …
|
|
20
|
+
* [Previous] [Done] ← focused: "> Previous" / "> Done"
|
|
21
|
+
* ↑/↓ Navigate · enter Toggle
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Every field is derived from text, never from a key count, so the driver
|
|
25
|
+
* can check the screen before and after each key.
|
|
26
|
+
* specs/2026-10-01-runtime-terms-consent.md
|
|
27
|
+
*
|
|
28
|
+
* @module services/runtime-terms/antigravity-terms-screens
|
|
29
|
+
*/
|
|
30
|
+
/** Focus on the colour-scheme screen. */
|
|
31
|
+
export type ColorSchemeFocus = {
|
|
32
|
+
type: 'scheme';
|
|
33
|
+
name: string;
|
|
34
|
+
} | {
|
|
35
|
+
type: 'import';
|
|
36
|
+
checked: boolean;
|
|
37
|
+
} | {
|
|
38
|
+
type: 'next';
|
|
39
|
+
};
|
|
40
|
+
/** Focus on the Terms screen. */
|
|
41
|
+
export type TermsFocus = 'data' | 'previous' | 'done';
|
|
42
|
+
/** A parsed screen. */
|
|
43
|
+
export type AntigravityTermsScreen = {
|
|
44
|
+
kind: 'color_scheme';
|
|
45
|
+
focus: ColorSchemeFocus | null;
|
|
46
|
+
/** Scheme marked `*` (chosen), when one is */
|
|
47
|
+
chosenScheme: string | null;
|
|
48
|
+
/** The migration section is shown */
|
|
49
|
+
migration: boolean;
|
|
50
|
+
/** Its import checkbox, when shown */
|
|
51
|
+
importChecked: boolean | null;
|
|
52
|
+
} | {
|
|
53
|
+
kind: 'terms';
|
|
54
|
+
focus: TermsFocus | null;
|
|
55
|
+
dataChecked: boolean | null;
|
|
56
|
+
} | {
|
|
57
|
+
kind: 'trust';
|
|
58
|
+
} | {
|
|
59
|
+
kind: 'login';
|
|
60
|
+
} | {
|
|
61
|
+
kind: 'main_prompt';
|
|
62
|
+
} | {
|
|
63
|
+
kind: 'unknown';
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Parse an Antigravity CLI screen.
|
|
67
|
+
*
|
|
68
|
+
* @param screen - Captured screen (ANSI is stripped here)
|
|
69
|
+
* @returns What is on screen
|
|
70
|
+
*/
|
|
71
|
+
export declare function parseAntigravityTermsScreen(screen: string): AntigravityTermsScreen;
|
|
72
|
+
/**
|
|
73
|
+
* Whether a screen shows the first-run (colour scheme / Terms) screens.
|
|
74
|
+
*
|
|
75
|
+
* @param screen - Captured screen
|
|
76
|
+
* @returns True on either first-run screen
|
|
77
|
+
*/
|
|
78
|
+
export declare function isAntigravityFirstRunScreen(screen: string): boolean;
|
|
79
|
+
//# sourceMappingURL=antigravity-terms-screens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-terms-screens.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/runtime-terms/antigravity-terms-screens.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAOH,yCAAyC;AACzC,MAAM,MAAM,gBAAgB,GACzB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACpC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpB,iCAAiC;AACjC,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;AAEtD,uBAAuB;AACvB,MAAM,MAAM,sBAAsB,GAC/B;IACA,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,8CAA8C;IAC9C,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qCAAqC;IACrC,SAAS,EAAE,OAAO,CAAC;IACnB,sCAAsC;IACtC,aAAa,EAAE,OAAO,GAAG,IAAI,CAAC;CAC7B,GACD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAAC,WAAW,EAAE,OAAO,GAAG,IAAI,CAAA;CAAE,GACxE;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GACjB;IAAE,IAAI,EAAE,aAAa,CAAA;CAAE,GACvB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,CAAC;AA4EvB;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,sBAAsB,CAUlF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAGnE"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Antigravity CLI first-run screens, read from screen text (pure).
|
|
3
|
+
*
|
|
4
|
+
* What agy 1.2.14 paints on its first interactive launch (captured in a PTY,
|
|
5
|
+
* focus marked by `> `, a chosen colour scheme by `* `, a focused button
|
|
6
|
+
* drawn without its brackets):
|
|
7
|
+
*
|
|
8
|
+
* ```
|
|
9
|
+
* Welcome to Antigravity CLI!
|
|
10
|
+
* Choose your color scheme: ╭──── preview ────╮
|
|
11
|
+
* > terminal │ … │
|
|
12
|
+
* light │ … │
|
|
13
|
+
* …
|
|
14
|
+
* Migration options: ← only when Gemini CLI extensions exist
|
|
15
|
+
* > [ ] Import extensions from Gemini CLI (1 found: …)
|
|
16
|
+
* [Next] ← focused: "> Next"
|
|
17
|
+
*
|
|
18
|
+
* Terms of Service & Data Use
|
|
19
|
+
* > [x] Yes, I agree to help improve Antigravity CLI by allowing …
|
|
20
|
+
* [Previous] [Done] ← focused: "> Previous" / "> Done"
|
|
21
|
+
* ↑/↓ Navigate · enter Toggle
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* Every field is derived from text, never from a key count, so the driver
|
|
25
|
+
* can check the screen before and after each key.
|
|
26
|
+
* specs/2026-10-01-runtime-terms-consent.md
|
|
27
|
+
*
|
|
28
|
+
* @module services/runtime-terms/antigravity-terms-screens
|
|
29
|
+
*/
|
|
30
|
+
import { ANTIGRAVITY_CONSTANTS, RUNTIME_TERMS_CONSTANTS } from '../../constants.js';
|
|
31
|
+
import { stripAnsiCodes } from '../../utils/terminal-string-ops.js';
|
|
32
|
+
const A = RUNTIME_TERMS_CONSTANTS.ANTIGRAVITY;
|
|
33
|
+
/**
|
|
34
|
+
* The left column of a line (the colour list shares lines with the preview box).
|
|
35
|
+
*
|
|
36
|
+
* @param line - Screen line
|
|
37
|
+
* @returns Text before the preview box border
|
|
38
|
+
*/
|
|
39
|
+
function leftColumn(line) {
|
|
40
|
+
const cut = line.search(/[│╭╰]/);
|
|
41
|
+
return (cut >= 0 ? line.slice(0, cut) : line).replace(/\s+$/, '');
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Parse the colour-scheme screen.
|
|
45
|
+
*
|
|
46
|
+
* @param lines - Screen lines
|
|
47
|
+
* @returns Parsed screen
|
|
48
|
+
*/
|
|
49
|
+
function parseColorScheme(lines) {
|
|
50
|
+
let focus = null;
|
|
51
|
+
let chosenScheme = null;
|
|
52
|
+
let importChecked = null;
|
|
53
|
+
let migration = false;
|
|
54
|
+
for (const raw of lines) {
|
|
55
|
+
const line = leftColumn(raw);
|
|
56
|
+
const scheme = /^\s*([>*])?\s*(.+?)\s*$/.exec(line);
|
|
57
|
+
if (scheme && A.COLOR_SCHEMES.includes(scheme[2])) {
|
|
58
|
+
if (scheme[1] === '>')
|
|
59
|
+
focus = { type: 'scheme', name: scheme[2] };
|
|
60
|
+
if (scheme[1] === '*')
|
|
61
|
+
chosenScheme = scheme[2];
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (raw.includes(A.MIGRATION_TITLE))
|
|
65
|
+
migration = true;
|
|
66
|
+
if (raw.includes(A.IMPORT_ITEM)) {
|
|
67
|
+
const m = /^\s*(>)?\s*\[([ xX])\]/.exec(raw);
|
|
68
|
+
if (m) {
|
|
69
|
+
importChecked = m[2].toLowerCase() === 'x';
|
|
70
|
+
if (m[1])
|
|
71
|
+
focus = { type: 'import', checked: importChecked };
|
|
72
|
+
}
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (new RegExp(`^\\s*>\\s+${A.NEXT_BUTTON}\\s*$`).test(raw))
|
|
76
|
+
focus = { type: 'next' };
|
|
77
|
+
}
|
|
78
|
+
return { kind: 'color_scheme', focus, chosenScheme, migration, importChecked };
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Parse the Terms screen.
|
|
82
|
+
*
|
|
83
|
+
* @param lines - Screen lines
|
|
84
|
+
* @returns Parsed screen
|
|
85
|
+
*/
|
|
86
|
+
function parseTerms(lines) {
|
|
87
|
+
let focus = null;
|
|
88
|
+
let dataChecked = null;
|
|
89
|
+
let dataLines = 0;
|
|
90
|
+
for (const raw of lines) {
|
|
91
|
+
if (raw.includes(A.DATA_ITEM)) {
|
|
92
|
+
dataLines += 1;
|
|
93
|
+
const m = /^\s*(>)?\s*\[([ xX])\]\s/.exec(raw);
|
|
94
|
+
if (m) {
|
|
95
|
+
dataChecked = m[2].toLowerCase() === 'x';
|
|
96
|
+
if (m[1])
|
|
97
|
+
focus = 'data';
|
|
98
|
+
}
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
if (raw.includes(A.PREVIOUS_BUTTON) && raw.includes(A.DONE_BUTTON)) {
|
|
102
|
+
if (new RegExp(`>\\s+${A.PREVIOUS_BUTTON}\\b`).test(raw))
|
|
103
|
+
focus = 'previous';
|
|
104
|
+
else if (new RegExp(`>\\s+${A.DONE_BUTTON}\\b`).test(raw))
|
|
105
|
+
focus = 'done';
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
// Two copies of the item would make "the" checkbox ambiguous.
|
|
109
|
+
if (dataLines !== 1)
|
|
110
|
+
dataChecked = null;
|
|
111
|
+
return { kind: 'terms', focus, dataChecked };
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Parse an Antigravity CLI screen.
|
|
115
|
+
*
|
|
116
|
+
* @param screen - Captured screen (ANSI is stripped here)
|
|
117
|
+
* @returns What is on screen
|
|
118
|
+
*/
|
|
119
|
+
export function parseAntigravityTermsScreen(screen) {
|
|
120
|
+
const clean = stripAnsiCodes(screen);
|
|
121
|
+
const lines = clean.split(/\r?\n/);
|
|
122
|
+
if (clean.includes(A.TERMS_TITLE))
|
|
123
|
+
return parseTerms(lines);
|
|
124
|
+
if (clean.includes(A.COLOR_SCHEME_TITLE))
|
|
125
|
+
return parseColorScheme(lines);
|
|
126
|
+
const S = ANTIGRAVITY_CONSTANTS.SCREEN;
|
|
127
|
+
if (clean.includes(S.TRUST_PROMPT) && clean.includes(S.TRUST_ACCEPT_OPTION))
|
|
128
|
+
return { kind: 'trust' };
|
|
129
|
+
if (S.ACCOUNT_LOGIN_MARKERS.some((m) => clean.includes(m)))
|
|
130
|
+
return { kind: 'login' };
|
|
131
|
+
if (clean.includes(S.IDLE_FOOTER))
|
|
132
|
+
return { kind: 'main_prompt' };
|
|
133
|
+
return { kind: 'unknown' };
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Whether a screen shows the first-run (colour scheme / Terms) screens.
|
|
137
|
+
*
|
|
138
|
+
* @param screen - Captured screen
|
|
139
|
+
* @returns True on either first-run screen
|
|
140
|
+
*/
|
|
141
|
+
export function isAntigravityFirstRunScreen(screen) {
|
|
142
|
+
const kind = parseAntigravityTermsScreen(screen).kind;
|
|
143
|
+
return kind === 'terms' || kind === 'color_scheme';
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=antigravity-terms-screens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"antigravity-terms-screens.js","sourceRoot":"","sources":["../../../../../../backend/src/services/runtime-terms/antigravity-terms-screens.ts"],"names":[],"mappings":"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"}
|