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,218 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests-only fake of Antigravity CLI's first-run TUI (agy 1.2.14): a
|
|
3
|
+
* scripted terminal that takes the raw bytes a PTY would get, renders the
|
|
4
|
+
* screens the real binary paints (same text, same focus markers) and
|
|
5
|
+
* records every key, so a test can check exactly what was pressed and the
|
|
6
|
+
* resulting checkbox state.
|
|
7
|
+
*
|
|
8
|
+
* Behaviour copied from the real binary:
|
|
9
|
+
* - colour list: ↑/↓ move (wrapping inside the list), Enter chooses (`* name`);
|
|
10
|
+
* without Gemini CLI extensions Enter goes straight to the Terms screen,
|
|
11
|
+
* with them the focus moves to "Import extensions…" (↑ from there returns
|
|
12
|
+
* to the bottom of the list and un-chooses the scheme), then Next;
|
|
13
|
+
* - Terms: the data item starts checked; Enter / Space toggle it; ↓ moves to
|
|
14
|
+
* the buttons ([Previous] first), ←/→ between them, ↑ back to the item;
|
|
15
|
+
* Enter on Previous goes back, Enter on Done accepts and shows the prompt.
|
|
16
|
+
*
|
|
17
|
+
* @module services/runtime-terms/fake-agy-tui.fixture
|
|
18
|
+
*/
|
|
19
|
+
const SCHEMES = ['terminal', 'light', 'solarized light', 'colorblind-friendly light', 'dark', 'solarized dark', 'colorblind-friendly dark', 'tokyo night'];
|
|
20
|
+
const BYTES = {
|
|
21
|
+
'\x1b[A': 'Up',
|
|
22
|
+
'\x1b[B': 'Down',
|
|
23
|
+
'\x1b[C': 'Right',
|
|
24
|
+
'\x1b[D': 'Left',
|
|
25
|
+
'\r': 'Enter',
|
|
26
|
+
' ': 'Space',
|
|
27
|
+
'\x03': 'CtrlC',
|
|
28
|
+
};
|
|
29
|
+
/** The fake. */
|
|
30
|
+
export class FakeAgyTui {
|
|
31
|
+
opts;
|
|
32
|
+
/** Every key received, in order */
|
|
33
|
+
keys = [];
|
|
34
|
+
screenName = 'color';
|
|
35
|
+
focusZone = 'list';
|
|
36
|
+
focusIdx = 0;
|
|
37
|
+
chosen = null;
|
|
38
|
+
importChecked = false;
|
|
39
|
+
termsFocus = 'data';
|
|
40
|
+
dataChecked = true;
|
|
41
|
+
/** What Done accepted, once pressed */
|
|
42
|
+
accepted = null;
|
|
43
|
+
/** Times Done was pressed */
|
|
44
|
+
doneCount = 0;
|
|
45
|
+
/**
|
|
46
|
+
* @param opts - Scenario
|
|
47
|
+
*/
|
|
48
|
+
constructor(opts = {}) {
|
|
49
|
+
this.opts = opts;
|
|
50
|
+
if (opts.alreadyAccepted)
|
|
51
|
+
this.screenName = 'main';
|
|
52
|
+
if (opts.accountLogin)
|
|
53
|
+
this.screenName = 'login';
|
|
54
|
+
if (opts.startScheme)
|
|
55
|
+
this.focusIdx = Math.max(0, SCHEMES.indexOf(opts.startScheme));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Receive bytes as a PTY would.
|
|
59
|
+
*
|
|
60
|
+
* @param data - Raw bytes
|
|
61
|
+
*/
|
|
62
|
+
write(data) {
|
|
63
|
+
let rest = data;
|
|
64
|
+
while (rest.length > 0) {
|
|
65
|
+
const seq = Object.keys(BYTES).find((b) => rest.startsWith(b));
|
|
66
|
+
const key = seq ? BYTES[seq] : 'Other';
|
|
67
|
+
rest = rest.slice(seq ? seq.length : 1);
|
|
68
|
+
this.keys.push(key);
|
|
69
|
+
this.press(key);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
press(key) {
|
|
73
|
+
if (key === 'CtrlC') {
|
|
74
|
+
this.screenName = 'exited';
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
if (this.screenName === 'color')
|
|
78
|
+
this.pressColor(key);
|
|
79
|
+
else if (this.screenName === 'terms')
|
|
80
|
+
this.pressTerms(key);
|
|
81
|
+
}
|
|
82
|
+
pressColor(key) {
|
|
83
|
+
const migration = Boolean(this.opts.migration);
|
|
84
|
+
if (this.focusZone === 'list') {
|
|
85
|
+
if (key === 'Up')
|
|
86
|
+
this.focusIdx = (this.focusIdx + SCHEMES.length - 1) % SCHEMES.length;
|
|
87
|
+
else if (key === 'Down')
|
|
88
|
+
this.focusIdx = (this.focusIdx + 1) % SCHEMES.length;
|
|
89
|
+
else if (key === 'Enter') {
|
|
90
|
+
this.chosen = SCHEMES[this.focusIdx];
|
|
91
|
+
if (migration)
|
|
92
|
+
this.focusZone = 'import';
|
|
93
|
+
else
|
|
94
|
+
this.screenName = 'terms';
|
|
95
|
+
}
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
if (this.focusZone === 'import') {
|
|
99
|
+
if (key === 'Enter' || key === 'Space')
|
|
100
|
+
this.importChecked = !this.importChecked;
|
|
101
|
+
else if (key === 'Down')
|
|
102
|
+
this.focusZone = 'next';
|
|
103
|
+
else if (key === 'Up') {
|
|
104
|
+
this.focusZone = 'list';
|
|
105
|
+
this.focusIdx = SCHEMES.length - 1;
|
|
106
|
+
this.chosen = null;
|
|
107
|
+
}
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (key === 'Up')
|
|
111
|
+
this.focusZone = 'import';
|
|
112
|
+
else if (key === 'Enter')
|
|
113
|
+
this.screenName = 'terms';
|
|
114
|
+
}
|
|
115
|
+
pressTerms(key) {
|
|
116
|
+
if (this.termsFocus === 'data') {
|
|
117
|
+
if ((key === 'Enter' || key === 'Space') && !this.opts.stuckCheckbox)
|
|
118
|
+
this.dataChecked = !this.dataChecked;
|
|
119
|
+
else if (key === 'Down')
|
|
120
|
+
this.termsFocus = 'previous';
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
if (key === 'Up')
|
|
124
|
+
this.termsFocus = 'data';
|
|
125
|
+
else if (key === 'Right')
|
|
126
|
+
this.termsFocus = 'done';
|
|
127
|
+
else if (key === 'Left')
|
|
128
|
+
this.termsFocus = 'previous';
|
|
129
|
+
else if (key === 'Enter') {
|
|
130
|
+
if (this.termsFocus === 'previous') {
|
|
131
|
+
this.screenName = 'color';
|
|
132
|
+
this.focusZone = 'list';
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
this.doneCount += 1;
|
|
136
|
+
this.accepted = { scheme: this.chosen, importExtensions: this.importChecked, dataSharing: this.dataChecked };
|
|
137
|
+
this.screenName = 'main';
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
/** @returns The screen as text */
|
|
141
|
+
capture() {
|
|
142
|
+
switch (this.screenName) {
|
|
143
|
+
case 'main':
|
|
144
|
+
return [
|
|
145
|
+
' Antigravity CLI 1.2.14',
|
|
146
|
+
' Gemini API key',
|
|
147
|
+
'─'.repeat(60),
|
|
148
|
+
'> Accept-edits mode: file edits auto-approved (shift+tab to cycle)',
|
|
149
|
+
'─'.repeat(60),
|
|
150
|
+
'? for shortcuts accept-edits · Gemini 3.1 Pro · low',
|
|
151
|
+
].join('\n');
|
|
152
|
+
case 'exited':
|
|
153
|
+
return '$ ';
|
|
154
|
+
case 'login':
|
|
155
|
+
return ' Welcome to the Antigravity CLI. You are currently not signed in.\n\n Select login method:\n > 1. Google OAuth\n 2. Use a Google Cloud project';
|
|
156
|
+
case 'terms':
|
|
157
|
+
return this.renderTerms();
|
|
158
|
+
default:
|
|
159
|
+
return this.renderColor();
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
renderColor() {
|
|
163
|
+
const box = '│ > you: add a greeting function │';
|
|
164
|
+
const lines = [' ▄▀▀▄', '', 'Welcome to Antigravity CLI!', '', 'Choose your color scheme: ╭──────────────────────────╮'];
|
|
165
|
+
SCHEMES.forEach((name, i) => {
|
|
166
|
+
const focused = this.focusZone === 'list' && i === this.focusIdx;
|
|
167
|
+
const marker = focused ? '>' : this.chosen === name ? '*' : ' ';
|
|
168
|
+
lines.push(` ${marker} ${name}`.padEnd(33) + box);
|
|
169
|
+
});
|
|
170
|
+
lines.push(' ╰──────────────────────────╯', '');
|
|
171
|
+
if (this.opts.migration) {
|
|
172
|
+
lines.push('Migration options:');
|
|
173
|
+
const f = this.focusZone === 'import' ? '>' : ' ';
|
|
174
|
+
lines.push(` ${f} [${this.importChecked ? 'x' : ' '}] Import extensions from Gemini CLI (1 found: google-workspace)`, '');
|
|
175
|
+
lines.push(this.focusZone === 'next' ? ' > Next' : ' [Next]');
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
lines.push(' [Next]');
|
|
179
|
+
}
|
|
180
|
+
lines.push('', ` ↑/↓ Navigate · enter ${this.focusZone === 'import' ? 'Toggle' : 'Confirm'}`);
|
|
181
|
+
return lines.join('\n');
|
|
182
|
+
}
|
|
183
|
+
renderTerms() {
|
|
184
|
+
const title = 'Terms of Service & Data Use';
|
|
185
|
+
const item = this.opts.changedTerms
|
|
186
|
+
? 'Allow Google to use my Interactions data to improve its products.'
|
|
187
|
+
: 'Yes, I agree to help improve Antigravity CLI by allowing';
|
|
188
|
+
const f = this.termsFocus === 'data' ? '>' : ' ';
|
|
189
|
+
const buttons = this.termsFocus === 'previous' ? ' > Previous [Done]' : this.termsFocus === 'done' ? ' [Previous] > Done' : ' [Previous] [Done]';
|
|
190
|
+
return [
|
|
191
|
+
' ▄▀▀▄',
|
|
192
|
+
'',
|
|
193
|
+
title,
|
|
194
|
+
'',
|
|
195
|
+
'AI coding agents are known to have certain security risks, including autonomous code execution, data exfiltration,',
|
|
196
|
+
'prompt injection and supply chain risks. Ensure that you monitor and verify all actions taken by the agent.',
|
|
197
|
+
'',
|
|
198
|
+
'-'.repeat(120),
|
|
199
|
+
'',
|
|
200
|
+
` ${f} [${this.dataChecked ? 'x' : ' '}] ${item}`,
|
|
201
|
+
' Google to collect and use my Interactions data,',
|
|
202
|
+
' subject to the Google Antigravity CLI Terms of Service',
|
|
203
|
+
' and Google Privacy Policy. I understand I can',
|
|
204
|
+
' choose to opt out later whenever I want via my',
|
|
205
|
+
' settings.',
|
|
206
|
+
'',
|
|
207
|
+
' Links:',
|
|
208
|
+
' - Terms of Service: https://antigravity.google/terms',
|
|
209
|
+
' - Privacy Policy: https://policies.google.com/privacy',
|
|
210
|
+
'',
|
|
211
|
+
buttons,
|
|
212
|
+
'',
|
|
213
|
+
'',
|
|
214
|
+
' ↑/↓ Navigate · enter Toggle',
|
|
215
|
+
].join('\n');
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=fake-agy-tui.fixture.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fake-agy-tui.fixture.js","sourceRoot":"","sources":["../../../../../../backend/src/services/runtime-terms/fake-agy-tui.fixture.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner consent for a runtime's first-run Terms of Service.
|
|
3
|
+
*
|
|
4
|
+
* The harness never accepts third-party terms on its own. When a runtime's
|
|
5
|
+
* Terms screen is seen (on launch, by the smoke test, or on a probe), ONE
|
|
6
|
+
* decision card per runtime per machine goes to the owner's DM with this
|
|
7
|
+
* machine's orc bot: "Agree, no data sharing" / "Agree + share data" /
|
|
8
|
+
* "Don't agree", 24 h, default Don't agree. On the answer:
|
|
9
|
+
*
|
|
10
|
+
* - agree: launch the runtime in a dedicated PTY session, drive its setup
|
|
11
|
+
* screens to the choice (data box verified on screen before Done), check
|
|
12
|
+
* the prompt appears, close the session, run the runtime smoke test and
|
|
13
|
+
* report both in the card's thread;
|
|
14
|
+
* - don't agree (or no answer): mark the runtime "terms not accepted" so the
|
|
15
|
+
* fallback order skips it (reason shown in Settings → Runtimes); asked
|
|
16
|
+
* again only when the owner presses Test, re-adds it, or Accept terms….
|
|
17
|
+
*
|
|
18
|
+
* specs/2026-10-01-runtime-terms-consent.md
|
|
19
|
+
*
|
|
20
|
+
* @module services/runtime-terms/runtime-terms-consent.service
|
|
21
|
+
*/
|
|
22
|
+
import type { OwnerDecision } from '../../types/decision.types.js';
|
|
23
|
+
import { type ComponentLogger } from '../core/logger.service.js';
|
|
24
|
+
import type { SystemAskInput } from '../decisions/decision.service.js';
|
|
25
|
+
import type { SmokeTestResult } from '../runtime-fallback/runtime-smoke-test.service.js';
|
|
26
|
+
import type { TermsDriveResult, TermsTerminal } from './antigravity-terms-driver.js';
|
|
27
|
+
import type { RuntimeTermsRecord, RuntimeTermsStore } from './runtime-terms.store.js';
|
|
28
|
+
/** The owner's three answers. */
|
|
29
|
+
export type TermsChoice = 'agree_no_data' | 'agree_share_data' | 'decline';
|
|
30
|
+
/** Card text of a runtime. */
|
|
31
|
+
export interface TermsCardText {
|
|
32
|
+
title: string;
|
|
33
|
+
question: string;
|
|
34
|
+
body: string[];
|
|
35
|
+
}
|
|
36
|
+
/** What Settings shows next to the inline choices. */
|
|
37
|
+
export interface TermsInfo {
|
|
38
|
+
/** One plain-English sentence on what is asked */
|
|
39
|
+
summary: string;
|
|
40
|
+
/** The pre-checked data-sharing item, verbatim */
|
|
41
|
+
dataItem: string;
|
|
42
|
+
links: Array<{
|
|
43
|
+
label: string;
|
|
44
|
+
url: string;
|
|
45
|
+
}>;
|
|
46
|
+
}
|
|
47
|
+
/** What the service knows about one runtime's Terms screens. */
|
|
48
|
+
export interface RuntimeTermsProfile {
|
|
49
|
+
runtime: string;
|
|
50
|
+
label: string;
|
|
51
|
+
info: TermsInfo;
|
|
52
|
+
/** Card text for this machine */
|
|
53
|
+
card(machine: string): TermsCardText;
|
|
54
|
+
/** Drive the setup screens of a freshly launched runtime */
|
|
55
|
+
drive(term: TermsTerminal, shareData: boolean): Promise<TermsDriveResult>;
|
|
56
|
+
/** What a screen shows: the Terms / setup screens, the ready prompt, a refusal, or not yet known */
|
|
57
|
+
classify(screen: string): 'terms' | 'ready' | 'blocked' | 'unknown';
|
|
58
|
+
}
|
|
59
|
+
/** Result of {@link RuntimeTermsConsentService.probe}. */
|
|
60
|
+
export interface TermsProbeResult {
|
|
61
|
+
outcome: 'terms' | 'ready' | 'blocked' | 'unknown';
|
|
62
|
+
record: RuntimeTermsRecord | null;
|
|
63
|
+
/** Screen text at the end (secrets redacted) */
|
|
64
|
+
screen: string;
|
|
65
|
+
}
|
|
66
|
+
/** A launched dedicated session. */
|
|
67
|
+
export interface TermsSession {
|
|
68
|
+
terminal: TermsTerminal;
|
|
69
|
+
/** Leave the runtime and kill the session (always called) */
|
|
70
|
+
close(): Promise<void>;
|
|
71
|
+
}
|
|
72
|
+
/** The decision-card calls used. */
|
|
73
|
+
export interface TermsDecisionApi {
|
|
74
|
+
askSystem(input: SystemAskInput): Promise<OwnerDecision>;
|
|
75
|
+
get(id: string): Promise<OwnerDecision | null>;
|
|
76
|
+
chooseFromDashboard(id: string, optionKey: string): Promise<OwnerDecision>;
|
|
77
|
+
replyInThread(id: string, text: string): Promise<boolean>;
|
|
78
|
+
}
|
|
79
|
+
/** Dependencies. */
|
|
80
|
+
export interface RuntimeTermsDeps {
|
|
81
|
+
store: RuntimeTermsStore;
|
|
82
|
+
decisions: () => TermsDecisionApi | null;
|
|
83
|
+
profiles: Record<string, RuntimeTermsProfile>;
|
|
84
|
+
/** Launch the runtime in the harness's dedicated session */
|
|
85
|
+
launch: (runtime: string) => Promise<TermsSession>;
|
|
86
|
+
/** Kill the dedicated session if it is running (Don't agree) */
|
|
87
|
+
closeSession?: (runtime: string) => Promise<void>;
|
|
88
|
+
runSmokeTest: (runtime: string) => Promise<SmokeTestResult>;
|
|
89
|
+
machineName: () => string;
|
|
90
|
+
/** A runtime's consent changed (availability caches) */
|
|
91
|
+
onChange?: (runtime: string) => void;
|
|
92
|
+
now?: () => Date;
|
|
93
|
+
sleep?: (ms: number) => Promise<void>;
|
|
94
|
+
/** How long a probe waits for a recognisable screen */
|
|
95
|
+
probeTimeoutMs?: number;
|
|
96
|
+
logger?: ComponentLogger;
|
|
97
|
+
}
|
|
98
|
+
/** How a report was triggered. */
|
|
99
|
+
export interface TermsReport {
|
|
100
|
+
/** launch | smoke_test | probe | settings | chain */
|
|
101
|
+
source: string;
|
|
102
|
+
/** The owner asked (Test, Accept terms…, re-added): re-ask even after Don't agree */
|
|
103
|
+
ownerInitiated?: boolean;
|
|
104
|
+
}
|
|
105
|
+
/** A runtime's Terms state as the API shows it. */
|
|
106
|
+
export interface RuntimeTermsView extends Omit<RuntimeTermsRecord, 'status' | 'updatedAt'> {
|
|
107
|
+
/** `none` = never seen a Terms screen on this machine */
|
|
108
|
+
status: RuntimeTermsRecord['status'] | 'none';
|
|
109
|
+
updatedAt?: string;
|
|
110
|
+
label: string;
|
|
111
|
+
info: TermsInfo;
|
|
112
|
+
/** Why the runtime is skipped, when it is */
|
|
113
|
+
blockedReason: string | null;
|
|
114
|
+
/** Choices the inline Settings action offers */
|
|
115
|
+
choices: Array<{
|
|
116
|
+
choice: TermsChoice;
|
|
117
|
+
label: string;
|
|
118
|
+
}>;
|
|
119
|
+
}
|
|
120
|
+
/** Choice ↔ button label. */
|
|
121
|
+
export declare const TERMS_CHOICE_LABELS: Readonly<Record<TermsChoice, string>>;
|
|
122
|
+
/**
|
|
123
|
+
* The choice an option label means.
|
|
124
|
+
*
|
|
125
|
+
* @param label - Button label
|
|
126
|
+
* @returns Choice, or null
|
|
127
|
+
*/
|
|
128
|
+
export declare function choiceOfLabel(label: string | undefined): TermsChoice | null;
|
|
129
|
+
/**
|
|
130
|
+
* Screen text for a Slack code block: secrets redacted, last lines only, no
|
|
131
|
+
* fence breakers.
|
|
132
|
+
*
|
|
133
|
+
* @param screen - Screen text
|
|
134
|
+
* @returns Block text
|
|
135
|
+
*/
|
|
136
|
+
export declare function screenForThread(screen: string): string;
|
|
137
|
+
/** The service. */
|
|
138
|
+
export declare class RuntimeTermsConsentService {
|
|
139
|
+
private readonly deps;
|
|
140
|
+
private readonly logger;
|
|
141
|
+
private readonly now;
|
|
142
|
+
/** Serialises asks per runtime (launch + smoke test can report at once) */
|
|
143
|
+
private readonly asking;
|
|
144
|
+
/** Running accept / decline per runtime */
|
|
145
|
+
private readonly running;
|
|
146
|
+
/**
|
|
147
|
+
* @param deps - Dependencies
|
|
148
|
+
*/
|
|
149
|
+
constructor(deps: RuntimeTermsDeps);
|
|
150
|
+
/**
|
|
151
|
+
* Whether the service handles a runtime.
|
|
152
|
+
*
|
|
153
|
+
* @param runtime - Runtime id
|
|
154
|
+
* @returns True when it has a profile
|
|
155
|
+
*/
|
|
156
|
+
supports(runtime: string): boolean;
|
|
157
|
+
/**
|
|
158
|
+
* A runtime's Terms screen was seen: ask the owner, once.
|
|
159
|
+
*
|
|
160
|
+
* No new card while one is open or the harness is accepting; none after
|
|
161
|
+
* Don't agree / a failed attempt unless the owner asked
|
|
162
|
+
* (`ownerInitiated`).
|
|
163
|
+
*
|
|
164
|
+
* @param runtime - Runtime id
|
|
165
|
+
* @param report - Source
|
|
166
|
+
* @returns The record, or null for a runtime without a profile
|
|
167
|
+
*/
|
|
168
|
+
reportTermsScreen(runtime: string, report: TermsReport): Promise<RuntimeTermsRecord | null>;
|
|
169
|
+
/**
|
|
170
|
+
* Settings → Runtimes → Accept terms…: post the card (or return the open one).
|
|
171
|
+
*
|
|
172
|
+
* @param runtime - Runtime id
|
|
173
|
+
* @returns The record
|
|
174
|
+
* @throws Error for a runtime without Terms handling
|
|
175
|
+
*/
|
|
176
|
+
requestConsent(runtime: string): Promise<RuntimeTermsRecord>;
|
|
177
|
+
/**
|
|
178
|
+
* Probe: launch the runtime in the dedicated session, read (never press
|
|
179
|
+
* anything) until the screen is recognisable, close it. A Terms screen
|
|
180
|
+
* asks the owner (the owner asked for the check); a ready prompt means
|
|
181
|
+
* the Terms were accepted here already (e.g. in a terminal).
|
|
182
|
+
*
|
|
183
|
+
* @param runtime - Runtime id
|
|
184
|
+
* @returns What was on screen and the record after
|
|
185
|
+
* @throws Error while an answer is being applied, or for a runtime without a profile
|
|
186
|
+
*/
|
|
187
|
+
probe(runtime: string): Promise<TermsProbeResult>;
|
|
188
|
+
/**
|
|
189
|
+
* Answer inline from Settings: through the open card when there is one
|
|
190
|
+
* (so the card updates), else directly.
|
|
191
|
+
*
|
|
192
|
+
* @param runtime - Runtime id
|
|
193
|
+
* @param choice - Owner's choice
|
|
194
|
+
* @returns The record after the answer was taken (driving continues in the background)
|
|
195
|
+
*/
|
|
196
|
+
answer(runtime: string, choice: TermsChoice): Promise<RuntimeTermsRecord>;
|
|
197
|
+
/**
|
|
198
|
+
* The `runtime_terms` decision-kind handler
|
|
199
|
+
* (`DecisionService.registerKindHandler`): acts on the answer. No agent
|
|
200
|
+
* asked, so there is no note for one.
|
|
201
|
+
*
|
|
202
|
+
* @param d - Settled decision
|
|
203
|
+
* @returns null (nothing to deliver)
|
|
204
|
+
*/
|
|
205
|
+
onSettled(d: OwnerDecision): Promise<null>;
|
|
206
|
+
/**
|
|
207
|
+
* A decision was settled: act on runtime-terms ones.
|
|
208
|
+
*
|
|
209
|
+
* @param d - Settled decision
|
|
210
|
+
*/
|
|
211
|
+
handleSettled(d: OwnerDecision): void;
|
|
212
|
+
/**
|
|
213
|
+
* Why a runtime cannot be used because of its Terms (null = it can).
|
|
214
|
+
*
|
|
215
|
+
* @param runtime - Runtime id
|
|
216
|
+
* @returns Owner-facing reason, or null
|
|
217
|
+
*/
|
|
218
|
+
blockedReason(runtime: string): string | null;
|
|
219
|
+
/** @returns Every runtime with a Terms flow, with its record */
|
|
220
|
+
list(): RuntimeTermsView[];
|
|
221
|
+
/**
|
|
222
|
+
* Wait for a running accept / decline (tests, the API's `?wait=1`).
|
|
223
|
+
*
|
|
224
|
+
* @param runtime - Runtime id
|
|
225
|
+
*/
|
|
226
|
+
whenIdle(runtime: string): Promise<void>;
|
|
227
|
+
private askOnce;
|
|
228
|
+
private start;
|
|
229
|
+
private decline;
|
|
230
|
+
private accept;
|
|
231
|
+
private reply;
|
|
232
|
+
private save;
|
|
233
|
+
}
|
|
234
|
+
/** @returns The backend's instance, or null before wiring (and in tests) */
|
|
235
|
+
export declare function getRuntimeTermsConsentService(): RuntimeTermsConsentService | null;
|
|
236
|
+
/** @param service - Instance to install (null clears) */
|
|
237
|
+
export declare function setRuntimeTermsConsentService(service: RuntimeTermsConsentService | null): void;
|
|
238
|
+
/**
|
|
239
|
+
* Report a Terms screen to the backend's service, when wired (fire and forget).
|
|
240
|
+
*
|
|
241
|
+
* @param runtime - Runtime id
|
|
242
|
+
* @param report - Source
|
|
243
|
+
*/
|
|
244
|
+
export declare function reportRuntimeTermsScreen(runtime: string, report: TermsReport): void;
|
|
245
|
+
//# sourceMappingURL=runtime-terms-consent.service.d.ts.map
|
package/dist/backend/backend/src/services/runtime-terms/runtime-terms-consent.service.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-terms-consent.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/runtime-terms/runtime-terms-consent.service.ts"],"names":[],"mappings":"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"}
|