crewly 1.20.160 → 1.20.162
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/roles/orchestrator/prompt.md +2 -0
- package/config/roles/team-leader/prompt.md +12 -0
- package/config/roles/team-leader/tl-addon.md +12 -0
- package/config/skills/agent/core/project-tickets/SKILL.md +32 -1
- package/config/skills/agent/core/project-tickets/execute.sh +56 -2
- package/config/skills/agent/core/project-tickets/execute.test.sh +22 -0
- package/dist/backend/backend/src/constants.d.ts +125 -1
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +146 -16
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts +27 -0
- package/dist/backend/backend/src/controllers/browser/browser.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js +203 -1
- package/dist/backend/backend/src/controllers/browser/browser.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.js +4 -1
- package/dist/backend/backend/src/controllers/browser/browser.routes.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +43 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +85 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts +12 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js +19 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.routes.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +30 -1
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/models/Project.d.ts +3 -0
- package/dist/backend/backend/src/models/Project.d.ts.map +1 -1
- package/dist/backend/backend/src/models/Project.js +7 -0
- package/dist/backend/backend/src/models/Project.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +3 -1
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +66 -13
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js +161 -32
- package/dist/backend/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/browser-session.service.d.ts +15 -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 +25 -0
- package/dist/backend/backend/src/services/browser/browser-session.service.js.map +1 -1
- package/dist/backend/backend/src/services/browser/owner-browser-input.d.ts +211 -0
- package/dist/backend/backend/src/services/browser/owner-browser-input.d.ts.map +1 -0
- package/dist/backend/backend/src/services/browser/owner-browser-input.js +373 -0
- package/dist/backend/backend/src/services/browser/owner-browser-input.js.map +1 -0
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js +5 -3
- package/dist/backend/backend/src/services/cloud/mobile-api-relay.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts +48 -0
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js +77 -1
- package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts +223 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js +240 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts +94 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js +195 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts +286 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js +626 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js.map +1 -0
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts +37 -3
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js +57 -6
- package/dist/backend/backend/src/services/reconciler/reconcile-rules.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts +21 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js +62 -4
- package/dist/backend/backend/src/services/reconciler/reconciler-data-provider.js.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts +6 -0
- package/dist/backend/backend/src/services/reconciler/reconciler.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js +9 -5
- package/dist/backend/backend/src/services/reconciler/reconciler.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/claim.service.d.ts +23 -3
- package/dist/backend/backend/src/services/task-pool/claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/claim.service.js +52 -11
- package/dist/backend/backend/src/services/task-pool/claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts +42 -0
- package/dist/backend/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js +82 -1
- package/dist/backend/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.d.ts +19 -0
- package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.d.ts.map +1 -1
- package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.js +33 -0
- package/dist/backend/backend/src/services/task-pool/ticket-claim-policy.js.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts +28 -0
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js +74 -29
- package/dist/backend/backend/src/services/v3/agent-auto-claim.service.js.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.d.ts.map +1 -1
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js +3 -2
- package/dist/backend/backend/src/services/v3/workitem-dispatch.subscriber.js.map +1 -1
- package/dist/backend/backend/src/types/index.d.ts +6 -0
- package/dist/backend/backend/src/types/index.d.ts.map +1 -1
- package/dist/backend/backend/src/types/index.js.map +1 -1
- package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts +73 -0
- package/dist/backend/backend/src/types/ticket-autopilot.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/ticket-autopilot.types.js +88 -0
- package/dist/backend/backend/src/types/ticket-autopilot.types.js.map +1 -0
- package/dist/backend/backend/src/types/v2/claim.types.d.ts +27 -0
- package/dist/backend/backend/src/types/v2/claim.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/claim.types.js +37 -0
- package/dist/backend/backend/src/types/v2/claim.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/work-item.types.js +1 -0
- package/dist/backend/backend/src/types/v2/work-item.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +125 -1
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +146 -16
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/models/Project.d.ts +3 -0
- package/dist/cli/backend/src/models/Project.d.ts.map +1 -1
- package/dist/cli/backend/src/models/Project.js +7 -0
- package/dist/cli/backend/src/models/Project.js.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts +66 -13
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js +161 -32
- package/dist/cli/backend/src/services/agent/oauth-relogin-monitor.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/claim.service.d.ts +23 -3
- package/dist/cli/backend/src/services/task-pool/claim.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/claim.service.js +52 -11
- package/dist/cli/backend/src/services/task-pool/claim.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts +42 -0
- package/dist/cli/backend/src/services/task-pool/task-pool.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js +82 -1
- package/dist/cli/backend/src/services/task-pool/task-pool.service.js.map +1 -1
- package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.d.ts +19 -0
- package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.d.ts.map +1 -1
- package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.js +33 -0
- package/dist/cli/backend/src/services/task-pool/ticket-claim-policy.js.map +1 -1
- package/dist/cli/backend/src/types/index.d.ts +6 -0
- package/dist/cli/backend/src/types/index.d.ts.map +1 -1
- package/dist/cli/backend/src/types/index.js.map +1 -1
- package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts +73 -0
- package/dist/cli/backend/src/types/ticket-autopilot.types.d.ts.map +1 -0
- package/dist/cli/backend/src/types/ticket-autopilot.types.js +88 -0
- package/dist/cli/backend/src/types/ticket-autopilot.types.js.map +1 -0
- package/dist/cli/backend/src/types/v2/claim.types.d.ts +27 -0
- package/dist/cli/backend/src/types/v2/claim.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/claim.types.js +37 -0
- package/dist/cli/backend/src/types/v2/claim.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/work-item.types.js +1 -0
- package/dist/cli/backend/src/types/v2/work-item.types.js.map +1 -1
- package/frontend/dist/assets/index-0707e2ac.css +42 -0
- package/frontend/dist/assets/{index-f79676aa.js → index-64c8a616.js} +265 -265
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/index-edd6f262.css +0 -42
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Owner Browser Input
|
|
3
|
+
*
|
|
4
|
+
* Turns what the owner does to a picture of a page — tap here, type this,
|
|
5
|
+
* press Enter — into the browser operations an agent would use, aimed at the
|
|
6
|
+
* tab of the session the owner has taken over.
|
|
7
|
+
*
|
|
8
|
+
* The owner is usually not at the machine. They are on a phone, looking at a
|
|
9
|
+
* frame the live view captured, and "Take control" used to lock the agent
|
|
10
|
+
* out and then leave them with nothing they could do. This module is the
|
|
11
|
+
* pure half of fixing that: validating input, mapping a tap on the frame to a
|
|
12
|
+
* point on the page, and choosing the operation. Dispatch lives in the browser
|
|
13
|
+
* controller, which already owns transport selection.
|
|
14
|
+
*
|
|
15
|
+
* **Typed text is a password more often than not.** Nothing here logs it,
|
|
16
|
+
* describes it or keeps it; {@link describeOwnerInput} reports only how many
|
|
17
|
+
* characters were typed.
|
|
18
|
+
*
|
|
19
|
+
* @module services/browser/owner-browser-input
|
|
20
|
+
*/
|
|
21
|
+
import { BROWSER_OWNER_INPUT_CONSTANTS } from '../../constants.js';
|
|
22
|
+
/**
|
|
23
|
+
* Whether a value is a finite number.
|
|
24
|
+
*
|
|
25
|
+
* @param v - Anything
|
|
26
|
+
* @returns True for a finite number
|
|
27
|
+
*/
|
|
28
|
+
function isFiniteNumber(v) {
|
|
29
|
+
return typeof v === 'number' && Number.isFinite(v);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Whether a string is one of the keys the control bar offers.
|
|
33
|
+
*
|
|
34
|
+
* @param key - Candidate key name
|
|
35
|
+
* @returns True when allowed
|
|
36
|
+
*/
|
|
37
|
+
export function isOwnerKey(key) {
|
|
38
|
+
return typeof key === 'string' && BROWSER_OWNER_INPUT_CONSTANTS.KEYS.includes(key);
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Normalise a URL the owner typed into the address field.
|
|
42
|
+
*
|
|
43
|
+
* A bare host (`login.gov`) gets `https://`. Anything that is not http(s)
|
|
44
|
+
* after that — `javascript:`, `file:`, `chrome:` — is refused: the address
|
|
45
|
+
* field opens pages, it does not run code or read the disk.
|
|
46
|
+
*
|
|
47
|
+
* @param raw - What the owner typed
|
|
48
|
+
* @returns The URL to open, or null when it is not an http(s) URL
|
|
49
|
+
*/
|
|
50
|
+
export function normalizeOwnerUrl(raw) {
|
|
51
|
+
const trimmed = raw.trim();
|
|
52
|
+
if (!trimmed || trimmed.length > BROWSER_OWNER_INPUT_CONSTANTS.MAX_URL_LENGTH)
|
|
53
|
+
return null;
|
|
54
|
+
const withScheme = /^[a-z][a-z0-9+.-]*:/i.test(trimmed) ? trimmed : `https://${trimmed}`;
|
|
55
|
+
try {
|
|
56
|
+
const url = new URL(withScheme);
|
|
57
|
+
if (url.protocol !== 'http:' && url.protocol !== 'https:')
|
|
58
|
+
return null;
|
|
59
|
+
return url.toString();
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Validate a request body into an {@link OwnerInput}.
|
|
67
|
+
*
|
|
68
|
+
* Error messages never quote the body: for `type` it is a password.
|
|
69
|
+
*
|
|
70
|
+
* @param body - Parsed JSON body
|
|
71
|
+
* @returns The input, or a reason it was refused
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* ```typescript
|
|
75
|
+
* parseOwnerInput({ kind: 'key', key: 'Enter' }); // { ok: true, input: { kind: 'key', key: 'Enter' } }
|
|
76
|
+
* parseOwnerInput({ kind: 'key', key: 'F5' }); // { ok: false, error: '...' }
|
|
77
|
+
* ```
|
|
78
|
+
*/
|
|
79
|
+
export function parseOwnerInput(body) {
|
|
80
|
+
const b = (body ?? {});
|
|
81
|
+
switch (b.kind) {
|
|
82
|
+
case 'tap': {
|
|
83
|
+
const { x, y, frameWidth, frameHeight } = b;
|
|
84
|
+
if (!isFiniteNumber(x) || !isFiniteNumber(y) || !isFiniteNumber(frameWidth) || !isFiniteNumber(frameHeight)) {
|
|
85
|
+
return { ok: false, error: 'tap needs numeric x, y, frameWidth and frameHeight' };
|
|
86
|
+
}
|
|
87
|
+
if (frameWidth <= 0 || frameHeight <= 0) {
|
|
88
|
+
return { ok: false, error: 'frameWidth and frameHeight must be positive' };
|
|
89
|
+
}
|
|
90
|
+
if (x < 0 || y < 0 || x > frameWidth || y > frameHeight) {
|
|
91
|
+
return { ok: false, error: 'tap is outside the frame' };
|
|
92
|
+
}
|
|
93
|
+
return { ok: true, input: { kind: 'tap', x, y, frameWidth, frameHeight } };
|
|
94
|
+
}
|
|
95
|
+
case 'type': {
|
|
96
|
+
if (typeof b.text !== 'string' || b.text.length === 0) {
|
|
97
|
+
return { ok: false, error: 'type needs non-empty text' };
|
|
98
|
+
}
|
|
99
|
+
if (b.text.length > BROWSER_OWNER_INPUT_CONSTANTS.MAX_TEXT_LENGTH) {
|
|
100
|
+
return { ok: false, error: `text is longer than ${BROWSER_OWNER_INPUT_CONSTANTS.MAX_TEXT_LENGTH} characters` };
|
|
101
|
+
}
|
|
102
|
+
return { ok: true, input: { kind: 'type', text: b.text } };
|
|
103
|
+
}
|
|
104
|
+
case 'key': {
|
|
105
|
+
if (!isOwnerKey(b.key)) {
|
|
106
|
+
return { ok: false, error: `key must be one of ${BROWSER_OWNER_INPUT_CONSTANTS.KEYS.join(', ')}` };
|
|
107
|
+
}
|
|
108
|
+
return { ok: true, input: { kind: 'key', key: b.key } };
|
|
109
|
+
}
|
|
110
|
+
case 'scroll': {
|
|
111
|
+
if (!isFiniteNumber(b.dy) || b.dy === 0)
|
|
112
|
+
return { ok: false, error: 'scroll needs a non-zero numeric dy' };
|
|
113
|
+
const max = BROWSER_OWNER_INPUT_CONSTANTS.MAX_SCROLL_PX;
|
|
114
|
+
return { ok: true, input: { kind: 'scroll', dy: Math.max(-max, Math.min(max, Math.round(b.dy))) } };
|
|
115
|
+
}
|
|
116
|
+
case 'navigate': {
|
|
117
|
+
const url = typeof b.url === 'string' ? normalizeOwnerUrl(b.url) : null;
|
|
118
|
+
if (!url)
|
|
119
|
+
return { ok: false, error: 'navigate needs an http(s) URL' };
|
|
120
|
+
return { ok: true, input: { kind: 'navigate', url } };
|
|
121
|
+
}
|
|
122
|
+
case 'back':
|
|
123
|
+
return { ok: true, input: { kind: 'back' } };
|
|
124
|
+
default:
|
|
125
|
+
return { ok: false, error: 'kind must be one of tap, type, key, scroll, navigate, back' };
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Map a tap on the displayed frame to a point on the page.
|
|
130
|
+
*
|
|
131
|
+
* The frame is a downscaled capture of the visible viewport — at half scale
|
|
132
|
+
* on a 2× display its pixels happen to equal CSS pixels, at 1× they are half
|
|
133
|
+
* of them, and when the extension could not apply the scale they are device
|
|
134
|
+
* pixels. Rather than guess which, the tap is taken as a fraction of the
|
|
135
|
+
* frame and applied to the viewport's measured CSS size, which is the space
|
|
136
|
+
* CDP mouse events use. The frame covers exactly the visual viewport (the
|
|
137
|
+
* extension clips to it), so the fractions line up.
|
|
138
|
+
*
|
|
139
|
+
* @param tap - Where the owner tapped, in frame pixels, and the frame's size
|
|
140
|
+
* @param viewport - The page's visible area in CSS pixels
|
|
141
|
+
* @returns The point to click, in CSS pixels, clamped inside the viewport
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* // 1× display, half-scale frame: 640×400 frame over a 1280×800 viewport
|
|
146
|
+
* mapTapToViewport({ x: 320, y: 100, frameWidth: 640, frameHeight: 400 }, { width: 1280, height: 800 });
|
|
147
|
+
* // → { x: 640, y: 200 }
|
|
148
|
+
* ```
|
|
149
|
+
*/
|
|
150
|
+
export function mapTapToViewport(tap, viewport) {
|
|
151
|
+
const fx = Math.max(0, Math.min(1, tap.x / tap.frameWidth));
|
|
152
|
+
const fy = Math.max(0, Math.min(1, tap.y / tap.frameHeight));
|
|
153
|
+
// Keep the point strictly inside, so a tap on the very edge still lands on
|
|
154
|
+
// the page rather than on the boundary pixel outside it.
|
|
155
|
+
const x = Math.min(viewport.width - 1, Math.max(0, Math.round(fx * viewport.width)));
|
|
156
|
+
const y = Math.min(viewport.height - 1, Math.max(0, Math.round(fy * viewport.height)));
|
|
157
|
+
return { x, y };
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Best guess at the viewport from the frame alone, for when the page could
|
|
161
|
+
* not be measured.
|
|
162
|
+
*
|
|
163
|
+
* The live view captures at `scale` of the CSS viewport, and the capture is
|
|
164
|
+
* in device pixels, so a frame is `css × scale × devicePixelRatio` wide.
|
|
165
|
+
*
|
|
166
|
+
* @param frameWidth - Natural width of the frame
|
|
167
|
+
* @param frameHeight - Natural height of the frame
|
|
168
|
+
* @param devicePixelRatio - DPR the frame was captured at, when known
|
|
169
|
+
* @param scale - The capture's downscale factor
|
|
170
|
+
* @returns The estimated viewport in CSS pixels
|
|
171
|
+
*/
|
|
172
|
+
export function estimateViewportFromFrame(frameWidth, frameHeight, devicePixelRatio, scale) {
|
|
173
|
+
const dpr = devicePixelRatio && devicePixelRatio > 0 ? devicePixelRatio : 1;
|
|
174
|
+
const factor = scale > 0 ? scale * dpr : dpr;
|
|
175
|
+
return { width: Math.round(frameWidth / factor), height: Math.round(frameHeight / factor) };
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Page script that measures the visible viewport in CSS pixels.
|
|
179
|
+
*
|
|
180
|
+
* `visualViewport` is what the extension clips its capture to
|
|
181
|
+
* (`cssVisualViewport` in CDP terms); `clientWidth` is the fallback on pages
|
|
182
|
+
* where it is missing.
|
|
183
|
+
*/
|
|
184
|
+
export const VIEWPORT_PROBE_SCRIPT = '(() => { const v = window.visualViewport; const d = document.documentElement; ' +
|
|
185
|
+
'return { width: (v && v.width) || d.clientWidth || window.innerWidth, ' +
|
|
186
|
+
'height: (v && v.height) || d.clientHeight || window.innerHeight }; })()';
|
|
187
|
+
/**
|
|
188
|
+
* Read the result of {@link VIEWPORT_PROBE_SCRIPT} out of an extension reply.
|
|
189
|
+
*
|
|
190
|
+
* @param result - The `result` field of the extension's response
|
|
191
|
+
* @returns The viewport, or null when the reply is not usable
|
|
192
|
+
*/
|
|
193
|
+
export function parseViewportProbe(result) {
|
|
194
|
+
const value = result?.value;
|
|
195
|
+
const width = value?.width;
|
|
196
|
+
const height = value?.height;
|
|
197
|
+
if (!isFiniteNumber(width) || !isFiniteNumber(height) || width <= 0 || height <= 0)
|
|
198
|
+
return null;
|
|
199
|
+
return { width, height };
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Page script that presses one key and performs what the key would do.
|
|
203
|
+
*
|
|
204
|
+
* The extension's `pressKey` dispatches synthetic keyboard events, which
|
|
205
|
+
* pages can listen to but which the browser does not act on: Enter does not
|
|
206
|
+
* submit, Backspace does not delete, Tab does not move focus. For an owner
|
|
207
|
+
* trying to sign in, those defaults are the whole point, so this script
|
|
208
|
+
* dispatches the events (so page handlers still run) and then, unless a
|
|
209
|
+
* handler cancelled the key, carries out the default itself. It runs through
|
|
210
|
+
* `executeJs`, which evaluates with a user gesture.
|
|
211
|
+
*
|
|
212
|
+
* Only reaches focus in the top document and same-origin frames; a field
|
|
213
|
+
* inside a cross-origin iframe is out of its reach.
|
|
214
|
+
*
|
|
215
|
+
* @param key - One of the allowed keys
|
|
216
|
+
* @returns JavaScript source to evaluate in the page
|
|
217
|
+
*/
|
|
218
|
+
export function keyEffectScript(key) {
|
|
219
|
+
const arrowPx = BROWSER_OWNER_INPUT_CONSTANTS.ARROW_SCROLL_PX;
|
|
220
|
+
return `(() => {
|
|
221
|
+
const key = ${JSON.stringify(key)};
|
|
222
|
+
let el = document.activeElement;
|
|
223
|
+
while (el && (el.tagName === 'IFRAME' || el.tagName === 'FRAME')) {
|
|
224
|
+
let inner = null;
|
|
225
|
+
try { inner = el.contentDocument && el.contentDocument.activeElement; } catch (e) { inner = null; }
|
|
226
|
+
if (!inner) break;
|
|
227
|
+
el = inner;
|
|
228
|
+
}
|
|
229
|
+
const target = el || document.body;
|
|
230
|
+
const doc = target.ownerDocument || document;
|
|
231
|
+
const win = doc.defaultView || window;
|
|
232
|
+
const tag = (target.tagName || '').toUpperCase();
|
|
233
|
+
const editable = tag === 'TEXTAREA' || target.isContentEditable ||
|
|
234
|
+
(tag === 'INPUT' && !/^(button|submit|reset|checkbox|radio|file|image|range|color)$/i.test(target.type || ''));
|
|
235
|
+
const opts = { key, code: key, bubbles: true, cancelable: true, composed: true };
|
|
236
|
+
const proceed = target.dispatchEvent(new win.KeyboardEvent('keydown', opts));
|
|
237
|
+
let effect = 'none';
|
|
238
|
+
if (proceed) {
|
|
239
|
+
if (key === 'Enter') {
|
|
240
|
+
target.dispatchEvent(new win.KeyboardEvent('keypress', opts));
|
|
241
|
+
const buttonLike = tag === 'BUTTON' || tag === 'A' || target.getAttribute('role') === 'button' ||
|
|
242
|
+
(tag === 'INPUT' && /^(submit|button|image|reset)$/i.test(target.type || ''));
|
|
243
|
+
if (tag === 'TEXTAREA' || target.isContentEditable) {
|
|
244
|
+
doc.execCommand('insertLineBreak'); effect = 'newline';
|
|
245
|
+
} else if (buttonLike) {
|
|
246
|
+
target.click(); effect = 'clicked';
|
|
247
|
+
} else if (tag === 'INPUT' && target.form) {
|
|
248
|
+
const f = target.form;
|
|
249
|
+
if (typeof f.requestSubmit === 'function') f.requestSubmit(); else f.submit();
|
|
250
|
+
effect = 'submitted';
|
|
251
|
+
}
|
|
252
|
+
} else if (key === 'Backspace') {
|
|
253
|
+
if (editable) { doc.execCommand('delete'); effect = 'deleted'; }
|
|
254
|
+
} else if (key === 'Tab') {
|
|
255
|
+
const sel = 'a[href],button:not([disabled]),input:not([disabled]):not([type=hidden]),select:not([disabled]),textarea:not([disabled]),[tabindex]:not([tabindex="-1"]),[contenteditable="true"]';
|
|
256
|
+
const all = Array.prototype.filter.call(doc.querySelectorAll(sel), (n) => {
|
|
257
|
+
const r = n.getBoundingClientRect(); return r.width > 0 && r.height > 0;
|
|
258
|
+
});
|
|
259
|
+
if (all.length > 0) {
|
|
260
|
+
const i = all.indexOf(target);
|
|
261
|
+
const next = all[(i + 1) % all.length];
|
|
262
|
+
next.focus(); effect = 'focused';
|
|
263
|
+
}
|
|
264
|
+
} else if (key === 'ArrowUp' || key === 'ArrowDown') {
|
|
265
|
+
if (!editable) { win.scrollBy(0, key === 'ArrowUp' ? -${arrowPx} : ${arrowPx}); effect = 'scrolled'; }
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
target.dispatchEvent(new win.KeyboardEvent('keyup', opts));
|
|
269
|
+
return { key, effect, target: tag };
|
|
270
|
+
})()`;
|
|
271
|
+
}
|
|
272
|
+
/** Script for the Back control. */
|
|
273
|
+
export const HISTORY_BACK_SCRIPT = '(() => { history.back(); return { back: true }; })()';
|
|
274
|
+
/**
|
|
275
|
+
* Choose the browser operation for one owner input.
|
|
276
|
+
*
|
|
277
|
+
* Typing uses `insertText`, which inserts at the focused element through CDP
|
|
278
|
+
* the way an IME does: the owner taps the field first, exactly as on a real
|
|
279
|
+
* screen, and needs no selector.
|
|
280
|
+
*
|
|
281
|
+
* @param input - What the owner did
|
|
282
|
+
* @param viewport - The page's viewport in CSS pixels; required for `tap`
|
|
283
|
+
* @returns The operation to dispatch
|
|
284
|
+
* @throws When a tap is planned without a viewport
|
|
285
|
+
*/
|
|
286
|
+
export function planOwnerInput(input, viewport) {
|
|
287
|
+
switch (input.kind) {
|
|
288
|
+
case 'tap': {
|
|
289
|
+
if (!viewport)
|
|
290
|
+
throw new Error('A tap needs the page viewport');
|
|
291
|
+
const point = mapTapToViewport(input, viewport);
|
|
292
|
+
return {
|
|
293
|
+
tool: 'click',
|
|
294
|
+
params: {
|
|
295
|
+
x: point.x,
|
|
296
|
+
y: point.y,
|
|
297
|
+
reactIdleQuietMs: BROWSER_OWNER_INPUT_CONSTANTS.TAP_IDLE_QUIET_MS,
|
|
298
|
+
reactIdleMaxWaitMs: BROWSER_OWNER_INPUT_CONSTANTS.TAP_IDLE_MAX_WAIT_MS,
|
|
299
|
+
},
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
case 'type':
|
|
303
|
+
return { tool: 'insertText', params: { text: input.text } };
|
|
304
|
+
case 'key':
|
|
305
|
+
return { tool: 'executeJs', params: { code: keyEffectScript(input.key) } };
|
|
306
|
+
case 'scroll':
|
|
307
|
+
return { tool: 'scroll', params: { x: 0, y: input.dy } };
|
|
308
|
+
case 'navigate':
|
|
309
|
+
return { tool: 'navigate', params: { url: input.url } };
|
|
310
|
+
case 'back':
|
|
311
|
+
return { tool: 'executeJs', params: { code: HISTORY_BACK_SCRIPT } };
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* Describe an owner input for the session's "last action" line.
|
|
316
|
+
*
|
|
317
|
+
* Never includes typed text — only its length.
|
|
318
|
+
*
|
|
319
|
+
* @param input - What the owner did
|
|
320
|
+
* @returns A short sentence
|
|
321
|
+
*/
|
|
322
|
+
export function describeOwnerInput(input) {
|
|
323
|
+
switch (input.kind) {
|
|
324
|
+
case 'tap':
|
|
325
|
+
return 'You tapped the page';
|
|
326
|
+
case 'type':
|
|
327
|
+
return `You typed ${input.text.length} character${input.text.length === 1 ? '' : 's'}`;
|
|
328
|
+
case 'key':
|
|
329
|
+
return `You pressed ${input.key}`;
|
|
330
|
+
case 'scroll':
|
|
331
|
+
return input.dy < 0 ? 'You scrolled up' : 'You scrolled down';
|
|
332
|
+
case 'navigate': {
|
|
333
|
+
let host = '';
|
|
334
|
+
try {
|
|
335
|
+
host = new URL(input.url).host;
|
|
336
|
+
}
|
|
337
|
+
catch {
|
|
338
|
+
host = '';
|
|
339
|
+
}
|
|
340
|
+
return host ? `You opened ${host}` : 'You opened a page';
|
|
341
|
+
}
|
|
342
|
+
case 'back':
|
|
343
|
+
return 'You went back';
|
|
344
|
+
}
|
|
345
|
+
}
|
|
346
|
+
/**
|
|
347
|
+
* What may be logged about an owner input: its kind, and for text only its
|
|
348
|
+
* length. Kept here so the controller cannot accidentally log the body.
|
|
349
|
+
*
|
|
350
|
+
* @param input - What the owner did
|
|
351
|
+
* @returns Log-safe fields
|
|
352
|
+
*/
|
|
353
|
+
export function ownerInputLogFields(input) {
|
|
354
|
+
switch (input.kind) {
|
|
355
|
+
case 'type':
|
|
356
|
+
return { kind: 'type', length: input.text.length };
|
|
357
|
+
case 'key':
|
|
358
|
+
return { kind: 'key', key: input.key };
|
|
359
|
+
case 'navigate': {
|
|
360
|
+
let host = '';
|
|
361
|
+
try {
|
|
362
|
+
host = new URL(input.url).host;
|
|
363
|
+
}
|
|
364
|
+
catch {
|
|
365
|
+
host = '';
|
|
366
|
+
}
|
|
367
|
+
return { kind: 'navigate', host };
|
|
368
|
+
}
|
|
369
|
+
default:
|
|
370
|
+
return { kind: input.kind };
|
|
371
|
+
}
|
|
372
|
+
}
|
|
373
|
+
//# sourceMappingURL=owner-browser-input.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"owner-browser-input.js","sourceRoot":"","sources":["../../../../../../backend/src/services/browser/owner-browser-input.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobile-api-relay.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAShF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/E,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,IAAI,CAAC;IAChF,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3F;AAED,4DAA4D;AAC5D,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"mobile-api-relay.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAShF,yEAAyE;AACzE,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,iCAAiC;AACjC,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;CACf;AAED,gFAAgF;AAChF,MAAM,WAAW,qBAAqB;IACpC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,IAAI,CAAC;IAC/E,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,GAAG,EAAE,0BAA0B,KAAK,IAAI,GAAG,IAAI,CAAC;IAChF,WAAW,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAClF;;;;OAIG;IACH,iBAAiB,CAAC,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3F;AAED,4DAA4D;AAC5D,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAMD;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC;IAAE,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CA6G1F,CAAC;AAgBF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAI5E;AAMD,2BAA2B;AAC3B,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,qBAAqB,CAAC;IACjC,0DAA0D;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B;AAED;;;;GAIG;AACH,qBAAa,qBAAqB;IAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IACzC,OAAO,CAAC,OAAO,CAA4D;gBAE/D,OAAO,EAAE,qBAAqB;IAQ1C,6CAA6C;IAC7C,KAAK,IAAI,IAAI;IAab,uDAAuD;IACvD,IAAI,IAAI,IAAI;IAOZ;;;;;;OAMG;YACW,aAAa;CAuE5B"}
|
|
@@ -61,9 +61,11 @@ export const MOBILE_API_ALLOWLIST = [
|
|
|
61
61
|
// Live browser view. Reads let an owner who is not at this machine see
|
|
62
62
|
// what an agent is doing in a browser; the writes under /browser/sessions
|
|
63
63
|
// are the owner-side controls only — stop, take the wheel, give it back,
|
|
64
|
-
// answer a held action
|
|
65
|
-
//
|
|
66
|
-
//
|
|
64
|
+
// answer a held action, and `/browser/sessions/:id/input` (the owner's own
|
|
65
|
+
// taps and typing, accepted only while the owner has taken the wheel). The
|
|
66
|
+
// agent driving endpoints (/browser/navigate, /browser/click, …) are
|
|
67
|
+
// deliberately NOT here: those are how an agent acts, and nothing on the
|
|
68
|
+
// internet should be able to act as one.
|
|
67
69
|
{ method: 'GET', prefix: '/browser/sessions' },
|
|
68
70
|
{ method: 'POST', prefix: '/browser/sessions' },
|
|
69
71
|
// "Back up now" from the portal: start a cloud backup of this machine and
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobile-api-relay.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAwB,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AA2C1D,8EAA8E;AAC9E,YAAY;AACZ,8EAA8E;AAE9E;;;;GAIG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA8D;IAC7F,2BAA2B;IAC3B,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE;IACnC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE;IACtC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE;IACrC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;IACvC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE;IACzC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE;IACvC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE;IACpC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE;IAC1C,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE;IAC3C,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE;IACzC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,EAAI,kCAAkC;IAC5E,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAO,gCAAgC;IAC1E,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAO,kDAAkD;IAC5F,yFAAyF;IACzF,2EAA2E;IAC3E,oEAAoE;IACpE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE;IAC1C,oEAAoE;IACpE,2EAA2E;IAC3E,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,sBAAsB,EAAE;IACjD,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,qBAAqB,EAAE;IAChD,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,yBAAyB,EAAE;IACpD,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,EAAE,EAAG,iBAAiB;IACtE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,0BAA0B,EAAE;IACtD,uEAAuE;IACvE,0EAA0E;IAC1E,yEAAyE;IACzE,
|
|
1
|
+
{"version":3,"file":"mobile-api-relay.service.js","sourceRoot":"","sources":["../../../../../../backend/src/services/cloud/mobile-api-relay.service.ts"],"names":[],"mappings":"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"}
|
package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts
CHANGED
|
@@ -45,6 +45,17 @@ export interface ProjectTicketDirectory {
|
|
|
45
45
|
getTeams(): Promise<Team[]>;
|
|
46
46
|
getProjects(): Promise<Project[]>;
|
|
47
47
|
}
|
|
48
|
+
/**
|
|
49
|
+
* Brakes the ticket autopilot puts on this workflow
|
|
50
|
+
* (specs/2026-09-30-ticket-autopilot.md §4). Installed by the autopilot
|
|
51
|
+
* service; absent = no autopilot brakes (the v1 behaviour).
|
|
52
|
+
*/
|
|
53
|
+
export interface ProjectTicketAutopilotPolicy {
|
|
54
|
+
/** True while the project's autopilot is paused (daily budget reached): idle members do not auto-claim its tickets */
|
|
55
|
+
isAutoClaimPaused(project: Project): Promise<boolean>;
|
|
56
|
+
/** In-progress tickets one member may hold when the project's autopilot is on, or null when it is off */
|
|
57
|
+
maxInFlightPerMember(project: Project): Promise<number | null>;
|
|
58
|
+
}
|
|
48
59
|
/** Dependencies. */
|
|
49
60
|
export interface ProjectTicketWorkflowDeps {
|
|
50
61
|
tickets: ProjectTicketService;
|
|
@@ -111,6 +122,7 @@ export declare class ProjectTicketWorkflowService {
|
|
|
111
122
|
private sweepTimer;
|
|
112
123
|
private unsubscribe;
|
|
113
124
|
private sweeping;
|
|
125
|
+
private autopilotPolicy;
|
|
114
126
|
/**
|
|
115
127
|
* @param deps - Ticket store, task pool, team/project directory
|
|
116
128
|
*/
|
|
@@ -127,6 +139,12 @@ export declare class ProjectTicketWorkflowService {
|
|
|
127
139
|
* @param service - Instance, or null to clear (tests)
|
|
128
140
|
*/
|
|
129
141
|
static setInstance(service: ProjectTicketWorkflowService | null): void;
|
|
142
|
+
/**
|
|
143
|
+
* Install (or clear) the ticket autopilot's brakes.
|
|
144
|
+
*
|
|
145
|
+
* @param policy - Policy, or null to remove it
|
|
146
|
+
*/
|
|
147
|
+
setAutopilotPolicy(policy: ProjectTicketAutopilotPolicy | null): void;
|
|
130
148
|
/**
|
|
131
149
|
* Subscribe to WorkItem lifecycle events and start the periodic sweep.
|
|
132
150
|
*
|
|
@@ -308,6 +326,24 @@ export declare class ProjectTicketWorkflowService {
|
|
|
308
326
|
* @returns The started work, or null
|
|
309
327
|
*/
|
|
310
328
|
claimNextForAgent(session: string): Promise<StartedTicketWork | null>;
|
|
329
|
+
/**
|
|
330
|
+
* Mark a ticket as waiting on the owner (label `needs-owner` + a Log line
|
|
331
|
+
* with the one-line question), or clear that mark once answered
|
|
332
|
+
* (specs/2026-09-30-ticket-autopilot.md §5). The autopilot batches open
|
|
333
|
+
* questions to the owner's phone.
|
|
334
|
+
*
|
|
335
|
+
* @param ref - Project reference
|
|
336
|
+
* @param id - Ticket id
|
|
337
|
+
* @param caller - Owner, orchestrator or a lead of a project team
|
|
338
|
+
* @param input - `question` to ask, or `clear: true` (optional `note`) when answered
|
|
339
|
+
* @returns Updated ticket
|
|
340
|
+
* @throws ProjectTicketError(400/403/404)
|
|
341
|
+
*/
|
|
342
|
+
askOwner(ref: string, id: string, caller: ProjectTicketCaller, input: {
|
|
343
|
+
question?: string;
|
|
344
|
+
clear?: boolean;
|
|
345
|
+
note?: string;
|
|
346
|
+
}): Promise<ProjectTicket>;
|
|
311
347
|
/**
|
|
312
348
|
* Route a delegated WorkItem through a project ticket, or leave it alone.
|
|
313
349
|
*
|
|
@@ -460,6 +496,18 @@ export declare class ProjectTicketWorkflowService {
|
|
|
460
496
|
* @returns True for a known agent
|
|
461
497
|
*/
|
|
462
498
|
private isKnownAgent;
|
|
499
|
+
/**
|
|
500
|
+
* Ticket autopilot brake: refuse to start one more ticket for an agent that
|
|
501
|
+
* already holds `maxInFlightPerMember` in-progress tickets of the project.
|
|
502
|
+
* Only while the project's autopilot is on, and never for the owner (a
|
|
503
|
+
* person assigning by hand decides for themselves).
|
|
504
|
+
*
|
|
505
|
+
* @param project - Project
|
|
506
|
+
* @param assignee - Agent session
|
|
507
|
+
* @param caller - Who assigns
|
|
508
|
+
* @throws ProjectTicketError(409) when the cap is reached
|
|
509
|
+
*/
|
|
510
|
+
private assertInFlightCap;
|
|
463
511
|
/**
|
|
464
512
|
* Refuse a `team` value that is not one of the project's teams.
|
|
465
513
|
*
|
package/dist/backend/backend/src/services/project-tickets/project-ticket-workflow.service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-ticket-workflow.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/project-ticket-workflow.service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"project-ticket-workflow.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/project-ticket-workflow.service.ts"],"names":[],"mappings":"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"}
|