@thinkrun/cli 0.1.27 → 0.1.29
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/README.md +7 -2
- package/dist/bin/thinkrun.js +4 -3
- package/dist/bin/thinkrun.js.map +1 -1
- package/dist/scripts/browse.sh +5 -5
- package/dist/src/adapters/cloud.d.ts +4 -2
- package/dist/src/adapters/cloud.d.ts.map +1 -1
- package/dist/src/adapters/cloud.js +33 -18
- package/dist/src/adapters/cloud.js.map +1 -1
- package/dist/src/adapters/local.d.ts +10 -2
- package/dist/src/adapters/local.d.ts.map +1 -1
- package/dist/src/adapters/local.js +188 -25
- package/dist/src/adapters/local.js.map +1 -1
- package/dist/src/adapters/types.d.ts +2 -1
- package/dist/src/adapters/types.d.ts.map +1 -1
- package/dist/src/commands/actions.d.ts +1 -0
- package/dist/src/commands/actions.d.ts.map +1 -1
- package/dist/src/commands/actions.js +91 -6
- package/dist/src/commands/actions.js.map +1 -1
- package/dist/src/commands/agent-init.js +1 -1
- package/dist/src/commands/agent-init.js.map +1 -1
- package/dist/src/commands/analyze.js +1 -1
- package/dist/src/commands/analyze.js.map +1 -1
- package/dist/src/commands/config.js +3 -3
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/doctor.js +1 -1
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/session-debug.js +1 -1
- package/dist/src/commands/session-debug.js.map +1 -1
- package/dist/src/commands/setup.js +2 -2
- package/dist/src/commands/setup.js.map +1 -1
- package/dist/src/config/store.js +2 -2
- package/dist/src/config/store.js.map +1 -1
- package/dist/src/obstacle-recovery/state-fingerprint.d.ts +1 -1
- package/dist/src/obstacle-recovery/state-fingerprint.d.ts.map +1 -1
- package/dist/src/obstacle-recovery/state-fingerprint.js +140 -5
- package/dist/src/obstacle-recovery/state-fingerprint.js.map +1 -1
- package/dist/src/session/cli-session-sync.d.ts +24 -2
- package/dist/src/session/cli-session-sync.d.ts.map +1 -1
- package/dist/src/session/cli-session-sync.js +62 -19
- package/dist/src/session/cli-session-sync.js.map +1 -1
- package/dist/src/types.d.ts +5 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +1 -1
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +1 -1
- package/dist/src/utils.js.map +1 -1
- package/package.json +2 -2
|
@@ -10,20 +10,153 @@
|
|
|
10
10
|
* Returns a plain object — no DOM references — so it survives the
|
|
11
11
|
* evaluate round-trip.
|
|
12
12
|
*/
|
|
13
|
-
|
|
13
|
+
function buildCaptureScript(targetSelector) {
|
|
14
|
+
const selectorLiteral = JSON.stringify(targetSelector ?? null);
|
|
15
|
+
return `(() => {
|
|
16
|
+
const normalize = (value) => (value || '').trim();
|
|
17
|
+
const readValue = (element, role, includeDataAttributes = false) => {
|
|
18
|
+
if (!element) return '';
|
|
19
|
+
const tagName = element.tagName || '';
|
|
20
|
+
const hasLiveStringValue = 'value' in element && typeof element.value === 'string';
|
|
21
|
+
// Keep both live and mirrored values in the hash for custom triggers so
|
|
22
|
+
// stale attributes cannot mask a real state change and vice versa.
|
|
23
|
+
const attributeValue = includeDataAttributes
|
|
24
|
+
? element.getAttribute('data-value') || element.getAttribute('value') || ''
|
|
25
|
+
: '';
|
|
26
|
+
if (
|
|
27
|
+
(tagName === 'INPUT' || tagName === 'SELECT' || tagName === 'TEXTAREA' || tagName === 'OPTION') &&
|
|
28
|
+
hasLiveStringValue
|
|
29
|
+
) {
|
|
30
|
+
return element.value;
|
|
31
|
+
}
|
|
32
|
+
if (
|
|
33
|
+
hasLiveStringValue &&
|
|
34
|
+
(role === 'button' || role === 'combobox' || role === 'listbox' || role === 'textbox')
|
|
35
|
+
) {
|
|
36
|
+
if (attributeValue.length > 0) {
|
|
37
|
+
return 'live=' + element.value + ';attr=' + attributeValue;
|
|
38
|
+
}
|
|
39
|
+
return element.value;
|
|
40
|
+
}
|
|
41
|
+
if (hasLiveStringValue && element.value.length > 0) {
|
|
42
|
+
return element.value;
|
|
43
|
+
}
|
|
44
|
+
if (attributeValue.length > 0) {
|
|
45
|
+
return attributeValue;
|
|
46
|
+
}
|
|
47
|
+
return '';
|
|
48
|
+
};
|
|
49
|
+
const shouldIncludeAttributeValue = (element, role) => {
|
|
50
|
+
if (!element) return false;
|
|
51
|
+
if (role === 'option' || role === 'menuitem') return true;
|
|
52
|
+
if (element.hasAttribute('aria-controls') || element.hasAttribute('aria-expanded')) return true;
|
|
53
|
+
return role === 'button' || role === 'combobox' || role === 'listbox';
|
|
54
|
+
};
|
|
55
|
+
const readText = (element) => {
|
|
56
|
+
if (!element) return '';
|
|
57
|
+
const text = 'innerText' in element ? element.innerText : element.textContent;
|
|
58
|
+
return normalize(text).slice(0, 200);
|
|
59
|
+
};
|
|
60
|
+
const readPopupState = (popup) => {
|
|
61
|
+
if (!popup) return '';
|
|
62
|
+
const visible = popup instanceof HTMLElement
|
|
63
|
+
? window.getComputedStyle(popup).display !== 'none' && window.getComputedStyle(popup).visibility !== 'hidden' && popup.getAttribute('aria-hidden') !== 'true'
|
|
64
|
+
: popup.getAttribute('aria-hidden') !== 'true';
|
|
65
|
+
const selectedOptions = Array.from(
|
|
66
|
+
popup.querySelectorAll('[role="option"][aria-selected="true"], [role="menuitem"][aria-checked="true"], option:checked')
|
|
67
|
+
)
|
|
68
|
+
.map(function(option) { return readText(option); })
|
|
69
|
+
.filter(Boolean)
|
|
70
|
+
.slice(0, 10)
|
|
71
|
+
.join('||');
|
|
72
|
+
return [
|
|
73
|
+
popup.getAttribute('role') || popup.tagName || '',
|
|
74
|
+
visible ? 'visible' : 'hidden',
|
|
75
|
+
popup.getAttribute('aria-hidden') || '',
|
|
76
|
+
selectedOptions,
|
|
77
|
+
].join('|');
|
|
78
|
+
};
|
|
79
|
+
const findPopupController = (popup) => {
|
|
80
|
+
if (!popup) return null;
|
|
81
|
+
const labelledBy = (popup.getAttribute('aria-labelledby') || '').split(/\\s+/).filter(Boolean);
|
|
82
|
+
const labelledController = labelledBy
|
|
83
|
+
.map(function(id) { return document.getElementById(id); })
|
|
84
|
+
.find(Boolean);
|
|
85
|
+
if (labelledController) return labelledController;
|
|
86
|
+
if (!popup.id) return null;
|
|
87
|
+
|
|
88
|
+
const references = Array.from(
|
|
89
|
+
document.querySelectorAll('[aria-controls], [aria-owns]')
|
|
90
|
+
);
|
|
91
|
+
return references.find(function(candidate) {
|
|
92
|
+
const controls = (candidate.getAttribute('aria-controls') || '').split(/\\s+/).filter(Boolean);
|
|
93
|
+
const owns = (candidate.getAttribute('aria-owns') || '').split(/\\s+/).filter(Boolean);
|
|
94
|
+
return controls.includes(popup.id) || owns.includes(popup.id);
|
|
95
|
+
}) || null;
|
|
96
|
+
};
|
|
14
97
|
const focused = document.activeElement
|
|
15
98
|
? document.activeElement.tagName + '#' + (document.activeElement.id || '') + '.' + (document.activeElement.className || '')
|
|
16
99
|
: null;
|
|
17
100
|
const formValues = Array.from(document.querySelectorAll('input,select,textarea'))
|
|
18
101
|
.map(function(e) { var t = e.type; var k = e.name || e.id || ''; return (t === 'checkbox' || t === 'radio') ? k + '=' + e.checked : k + '=' + e.value; })
|
|
19
102
|
.join('&');
|
|
103
|
+
const targetSelector = ${selectorLiteral};
|
|
104
|
+
let targetHash;
|
|
105
|
+
if (typeof targetSelector === 'string' && targetSelector.length > 0) {
|
|
106
|
+
const target = document.querySelector(targetSelector);
|
|
107
|
+
if (target) {
|
|
108
|
+
const expanded = target.getAttribute('aria-expanded') || '';
|
|
109
|
+
const selected = target.getAttribute('aria-selected') || '';
|
|
110
|
+
const role = target.getAttribute('role') || '';
|
|
111
|
+
const value = readValue(target, role, shouldIncludeAttributeValue(target, role));
|
|
112
|
+
const text = readText(target);
|
|
113
|
+
let controlledState = '';
|
|
114
|
+
const controls = target.getAttribute('aria-controls');
|
|
115
|
+
if (controls) {
|
|
116
|
+
controlledState = controls
|
|
117
|
+
.split(/\\s+/)
|
|
118
|
+
.filter(Boolean)
|
|
119
|
+
.map(function(id) {
|
|
120
|
+
return document.getElementById(id);
|
|
121
|
+
})
|
|
122
|
+
.filter(Boolean)
|
|
123
|
+
.map(function(controlled) {
|
|
124
|
+
const controlledText = (controlled.textContent || '').trim().slice(0, 200);
|
|
125
|
+
const controlledDisplay = controlled instanceof HTMLElement ? controlled.style.display || '' : '';
|
|
126
|
+
const controlledHidden = controlled.getAttribute('aria-hidden') || '';
|
|
127
|
+
return controlledDisplay + '|' + controlledHidden + '|' + controlledText;
|
|
128
|
+
})
|
|
129
|
+
.join('||');
|
|
130
|
+
}
|
|
131
|
+
let popupContext = '';
|
|
132
|
+
if (role === 'option' || role === 'menuitem') {
|
|
133
|
+
const popup = target.closest('[role="listbox"], [role="menu"], [role="grid"], [role="tree"]');
|
|
134
|
+
const controller = findPopupController(popup);
|
|
135
|
+
popupContext = [
|
|
136
|
+
readPopupState(popup),
|
|
137
|
+
controller
|
|
138
|
+
? [
|
|
139
|
+
controller.getAttribute('role') || controller.tagName || '',
|
|
140
|
+
controller.getAttribute('aria-expanded') || '',
|
|
141
|
+
controller.getAttribute('aria-activedescendant') || '',
|
|
142
|
+
readValue(controller, controller.getAttribute('role') || '', true),
|
|
143
|
+
readText(controller),
|
|
144
|
+
].join('|')
|
|
145
|
+
: '',
|
|
146
|
+
].join('||');
|
|
147
|
+
}
|
|
148
|
+
targetHash = [role, expanded, selected, value, text, controlledState, popupContext].join('|');
|
|
149
|
+
}
|
|
150
|
+
}
|
|
20
151
|
return {
|
|
21
152
|
url: location.href,
|
|
22
153
|
title: document.title,
|
|
23
154
|
focusedElement: focused,
|
|
24
|
-
formValues: formValues
|
|
155
|
+
formValues: formValues,
|
|
156
|
+
targetHash: targetHash
|
|
25
157
|
};
|
|
26
158
|
})()`;
|
|
159
|
+
}
|
|
27
160
|
/**
|
|
28
161
|
* Capture a state fingerprint by evaluating a script on the current page.
|
|
29
162
|
*
|
|
@@ -32,9 +165,9 @@ const CAPTURE_SCRIPT = `(() => {
|
|
|
32
165
|
* @returns A StateFingerprint, or a fallback fingerprint with empty values
|
|
33
166
|
* if the evaluate call fails (e.g. page crashed, navigation in progress).
|
|
34
167
|
*/
|
|
35
|
-
export async function captureFingerprint(evaluateFn) {
|
|
168
|
+
export async function captureFingerprint(evaluateFn, targetSelector) {
|
|
36
169
|
try {
|
|
37
|
-
const result = await evaluateFn(
|
|
170
|
+
const result = await evaluateFn(buildCaptureScript(targetSelector));
|
|
38
171
|
// Defensively validate the shape — the page could return anything.
|
|
39
172
|
if (result &&
|
|
40
173
|
typeof result === 'object' &&
|
|
@@ -45,6 +178,7 @@ export async function captureFingerprint(evaluateFn) {
|
|
|
45
178
|
title: result.title,
|
|
46
179
|
focusedElement: result.focusedElement != null ? String(result.focusedElement) : null,
|
|
47
180
|
formValues: result.formValues != null ? String(result.formValues) : '',
|
|
181
|
+
targetHash: result.targetHash != null ? String(result.targetHash) : undefined,
|
|
48
182
|
};
|
|
49
183
|
}
|
|
50
184
|
// Result was truthy but wrong shape — return empty fingerprint.
|
|
@@ -68,7 +202,8 @@ export function compareFingerprints(before, after) {
|
|
|
68
202
|
}
|
|
69
203
|
if (before.title === after.title &&
|
|
70
204
|
before.focusedElement === after.focusedElement &&
|
|
71
|
-
before.formValues === after.formValues
|
|
205
|
+
before.formValues === after.formValues &&
|
|
206
|
+
before.targetHash === after.targetHash) {
|
|
72
207
|
return 'unchanged';
|
|
73
208
|
}
|
|
74
209
|
return 'changed';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-fingerprint.js","sourceRoot":"","sources":["../../../src/obstacle-recovery/state-fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;GAIG;AACH,MAAM,
|
|
1
|
+
{"version":3,"file":"state-fingerprint.js","sourceRoot":"","sources":["../../../src/obstacle-recovery/state-fingerprint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH;;;;GAIG;AACH,SAAS,kBAAkB,CAAC,cAAuB;IACjD,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;IAC/D,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAwFkB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAuDrC,CAAC;AACN,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,UAA4C,EAC5C,cAAuB;IAEvB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC;QACpE,mEAAmE;QACnE,IACE,MAAM;YACN,OAAO,MAAM,KAAK,QAAQ;YAC1B,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ;YAC9B,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAChC,CAAC;YACD,OAAO;gBACL,GAAG,EAAE,MAAM,CAAC,GAAG;gBACf,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,cAAc,EACZ,MAAM,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI;gBACtE,UAAU,EACR,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC5D,UAAU,EACR,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS;aACpE,CAAC;QACJ,CAAC;QACD,gEAAgE;QAChE,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;QAC1D,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAwB,EACxB,KAAuB;IAEvB,IAAI,MAAM,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,EAAE,CAAC;QAC7B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IACE,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,KAAK;QAC5B,MAAM,CAAC,cAAc,KAAK,KAAK,CAAC,cAAc;QAC9C,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU;QACtC,MAAM,CAAC,UAAU,KAAK,KAAK,CAAC,UAAU,EACtC,CAAC;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,sDAAsD;AACtD,SAAS,gBAAgB;IACvB,OAAO;QACL,GAAG,EAAE,EAAE;QACP,KAAK,EAAE,EAAE;QACT,cAAc,EAAE,IAAI;QACpB,UAAU,EAAE,EAAE;KACf,CAAC;AACJ,CAAC"}
|
|
@@ -14,11 +14,18 @@
|
|
|
14
14
|
* (same directory as working-location.json; THINKRUN_LOCK_DIR for
|
|
15
15
|
* test isolation).
|
|
16
16
|
*/
|
|
17
|
+
interface PersistedNetworkCursor {
|
|
18
|
+
requestId?: string;
|
|
19
|
+
marker?: string;
|
|
20
|
+
occurrence?: number;
|
|
21
|
+
}
|
|
17
22
|
/**
|
|
18
23
|
* Read the persisted cloud sessionId for a given local tabId.
|
|
19
24
|
* Returns undefined if no session file exists or it is malformed.
|
|
20
25
|
*/
|
|
21
26
|
export declare function readCliSessionId(tabId: string): string | undefined;
|
|
27
|
+
export declare function readCliNetworkCursor(tabId: string, sessionId: string): PersistedNetworkCursor | undefined;
|
|
28
|
+
export declare function writeCliNetworkCursor(tabId: string, sessionId: string, cursor: PersistedNetworkCursor): void;
|
|
22
29
|
/**
|
|
23
30
|
* Call POST /api/sessions/local-init to register a CLI session in the
|
|
24
31
|
* cloud activity feed. Persists the returned sessionId to disk.
|
|
@@ -27,7 +34,21 @@ export declare function readCliSessionId(tabId: string): string | undefined;
|
|
|
27
34
|
*/
|
|
28
35
|
export declare function initCliSession(tabId: string, fetchFn?: typeof fetch): Promise<string | undefined>;
|
|
29
36
|
/** Action types accepted by the /local-sync/action endpoint. */
|
|
30
|
-
export type BrowserActionType = 'navigate' | 'click' | 'type' | 'fill' | 'press' | 'scroll' | 'hover' | 'select' | 'wait' | 'wait_for_text' | 'extract' | 'evaluate' | 'go-back' | 'go-forward';
|
|
37
|
+
export type BrowserActionType = 'navigate' | 'click' | 'click_at' | 'type' | 'fill' | 'press' | 'scroll' | 'hover' | 'select' | 'wait' | 'wait_for_text' | 'extract' | 'evaluate' | 'go-back' | 'go-forward' | 'network';
|
|
38
|
+
export interface BrowserActionSyncMeta {
|
|
39
|
+
timestamp?: string;
|
|
40
|
+
note?: string;
|
|
41
|
+
result?: unknown;
|
|
42
|
+
success?: boolean;
|
|
43
|
+
error?: string;
|
|
44
|
+
networkRequests?: Array<{
|
|
45
|
+
url: string;
|
|
46
|
+
method: string;
|
|
47
|
+
status?: number;
|
|
48
|
+
timestamp?: string;
|
|
49
|
+
duration?: number;
|
|
50
|
+
}>;
|
|
51
|
+
}
|
|
31
52
|
/**
|
|
32
53
|
* Fire-and-forget: POST a browser action to the cloud session action log.
|
|
33
54
|
* Never throws, never blocks the caller.
|
|
@@ -37,7 +58,7 @@ export type BrowserActionType = 'navigate' | 'click' | 'type' | 'fill' | 'press'
|
|
|
37
58
|
* @param details Arbitrary key-value pairs describing the action (url, selector, etc.)
|
|
38
59
|
* @param fetchFn Injectable fetch for testing.
|
|
39
60
|
*/
|
|
40
|
-
export declare function syncBrowserAction(sessionId: string, type: BrowserActionType, details: Record<string, unknown>, fetchFn?: typeof fetch):
|
|
61
|
+
export declare function syncBrowserAction(sessionId: string, type: BrowserActionType, details: Record<string, unknown>, meta?: BrowserActionSyncMeta, fetchFn?: typeof fetch, timeoutMs?: number): Promise<boolean>;
|
|
41
62
|
/**
|
|
42
63
|
* Fire-and-forget: POST a screenshot action to the cloud session.
|
|
43
64
|
* Never throws, never blocks the caller.
|
|
@@ -69,4 +90,5 @@ export type SpawnSyncFn = (cmd: string, args: string[], opts: object) => unknown
|
|
|
69
90
|
* @param spawnFn — injectable for testing; defaults to node:child_process spawnSync
|
|
70
91
|
*/
|
|
71
92
|
export declare function closeCliSessionSync(tabId: string, status: 'completed' | 'failed', spawnFn?: SpawnSyncFn): void;
|
|
93
|
+
export {};
|
|
72
94
|
//# sourceMappingURL=cli-session-sync.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-session-sync.d.ts","sourceRoot":"","sources":["../../../src/session/cli-session-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA+CH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,
|
|
1
|
+
{"version":3,"file":"cli-session-sync.d.ts","sourceRoot":"","sources":["../../../src/session/cli-session-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AA+CH,UAAU,sBAAsB;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAyBD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGlE;AAQD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAWzG;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAI5G;AAQD;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,OAAO,KAAwB,GACvC,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAqB7B;AAED,gEAAgE;AAChE,MAAM,MAAM,iBAAiB,GACzB,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAC7D,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,eAAe,GAAG,SAAS,GACpE,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAEtD,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,KAAK,CAAC;QACtB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;CACJ;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,IAAI,GAAE,qBAA0B,EAChC,OAAO,GAAE,OAAO,KAAwB,EACxC,SAAS,SAAS,GACjB,OAAO,CAAC,OAAO,CAAC,CA8BlB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,EACxB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,OAAO,KAAwB,GACvC,IAAI,CAoBN;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,GAAG,QAAQ,EAC9B,OAAO,GAAE,OAAO,KAAwB,GACvC,IAAI,CAmBN;AAID,6CAA6C;AAC7C,MAAM,MAAM,WAAW,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;AAEjF;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,WAAW,GAAG,QAAQ,EAC9B,OAAO,GAAE,WAAuB,GAC/B,IAAI,CAmCN"}
|
|
@@ -48,34 +48,62 @@ function getApiCredentials() {
|
|
|
48
48
|
const apiKey = config.get('apiKey');
|
|
49
49
|
if (!apiKey)
|
|
50
50
|
return null;
|
|
51
|
-
const rawApiUrl = config.get('apiUrl') || 'https://api.
|
|
51
|
+
const rawApiUrl = config.get('apiUrl') || 'https://api.thinkrun.ai';
|
|
52
52
|
if (!rawApiUrl.startsWith('https://'))
|
|
53
53
|
return null;
|
|
54
54
|
return { apiKey, apiUrl: rawApiUrl };
|
|
55
55
|
}
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* Read the persisted cloud sessionId for a given local tabId.
|
|
59
|
-
* Returns undefined if no session file exists or it is malformed.
|
|
60
|
-
*/
|
|
61
|
-
export function readCliSessionId(tabId) {
|
|
56
|
+
function readCliSessionState(tabId) {
|
|
62
57
|
try {
|
|
63
58
|
const filePath = getCliSessionFilePath(tabId);
|
|
64
59
|
if (!existsSync(filePath))
|
|
65
|
-
return
|
|
60
|
+
return null;
|
|
66
61
|
const data = JSON.parse(readFileSync(filePath, 'utf-8'));
|
|
67
|
-
return typeof data
|
|
62
|
+
return typeof data === 'object' && data !== null ? data : null;
|
|
68
63
|
}
|
|
69
64
|
catch {
|
|
70
|
-
return
|
|
65
|
+
return null;
|
|
71
66
|
}
|
|
72
67
|
}
|
|
73
|
-
function
|
|
68
|
+
function writeCliSessionState(tabId, state) {
|
|
74
69
|
try {
|
|
75
|
-
writeFileSync(getCliSessionFilePath(tabId), JSON.stringify({
|
|
70
|
+
writeFileSync(getCliSessionFilePath(tabId), JSON.stringify({ ...state, tabId }), 'utf-8');
|
|
76
71
|
}
|
|
77
72
|
catch { /* ignore — best-effort */ }
|
|
78
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* Read the persisted cloud sessionId for a given local tabId.
|
|
76
|
+
* Returns undefined if no session file exists or it is malformed.
|
|
77
|
+
*/
|
|
78
|
+
export function readCliSessionId(tabId) {
|
|
79
|
+
const data = readCliSessionState(tabId);
|
|
80
|
+
return data && typeof data.sessionId === 'string' ? data.sessionId : undefined;
|
|
81
|
+
}
|
|
82
|
+
function writeCliSessionId(tabId, sessionId) {
|
|
83
|
+
const existing = readCliSessionState(tabId);
|
|
84
|
+
const preserveNetworkCursor = existing?.sessionId === sessionId ? existing.networkCursor : undefined;
|
|
85
|
+
writeCliSessionState(tabId, { ...existing, sessionId, networkCursor: preserveNetworkCursor });
|
|
86
|
+
}
|
|
87
|
+
export function readCliNetworkCursor(tabId, sessionId) {
|
|
88
|
+
const state = readCliSessionState(tabId);
|
|
89
|
+
if (!state || state.sessionId !== sessionId)
|
|
90
|
+
return undefined;
|
|
91
|
+
const cursor = state.networkCursor;
|
|
92
|
+
if (!cursor || typeof cursor !== 'object')
|
|
93
|
+
return undefined;
|
|
94
|
+
if (typeof cursor.requestId === 'string' && cursor.requestId.length > 0) {
|
|
95
|
+
return { requestId: cursor.requestId };
|
|
96
|
+
}
|
|
97
|
+
return typeof cursor.marker === 'string' && typeof cursor.occurrence === 'number'
|
|
98
|
+
? { marker: cursor.marker, occurrence: cursor.occurrence }
|
|
99
|
+
: undefined;
|
|
100
|
+
}
|
|
101
|
+
export function writeCliNetworkCursor(tabId, sessionId, cursor) {
|
|
102
|
+
const state = readCliSessionState(tabId);
|
|
103
|
+
if (!state || state.sessionId !== sessionId)
|
|
104
|
+
return;
|
|
105
|
+
writeCliSessionState(tabId, { ...state, networkCursor: cursor });
|
|
106
|
+
}
|
|
79
107
|
function deleteCliSessionFile(tabId) {
|
|
80
108
|
try {
|
|
81
109
|
unlinkSync(getCliSessionFilePath(tabId));
|
|
@@ -123,22 +151,37 @@ export async function initCliSession(tabId, fetchFn = globalThis.fetch) {
|
|
|
123
151
|
* @param details Arbitrary key-value pairs describing the action (url, selector, etc.)
|
|
124
152
|
* @param fetchFn Injectable fetch for testing.
|
|
125
153
|
*/
|
|
126
|
-
export function syncBrowserAction(sessionId, type, details, fetchFn = globalThis.fetch) {
|
|
154
|
+
export function syncBrowserAction(sessionId, type, details, meta = {}, fetchFn = globalThis.fetch, timeoutMs = 10_000) {
|
|
127
155
|
const creds = getApiCredentials();
|
|
128
156
|
if (!creds)
|
|
129
|
-
return;
|
|
157
|
+
return Promise.resolve(false);
|
|
130
158
|
const { apiKey, apiUrl } = creds;
|
|
131
159
|
// try/catch covers synchronous errors (e.g. JSON.stringify throws, or fetchFn
|
|
132
160
|
// throws synchronously before returning a Promise). The .catch covers async rejection.
|
|
133
161
|
try {
|
|
134
|
-
fetchFn(`${apiUrl}/api/sessions/${sessionId}/local-sync/action`, {
|
|
162
|
+
return fetchFn(`${apiUrl}/api/sessions/${sessionId}/local-sync/action`, {
|
|
135
163
|
method: 'POST',
|
|
136
164
|
headers: { 'Content-Type': 'application/json', 'x-api-key': apiKey },
|
|
137
|
-
body: JSON.stringify({
|
|
138
|
-
|
|
139
|
-
|
|
165
|
+
body: JSON.stringify({
|
|
166
|
+
type,
|
|
167
|
+
details,
|
|
168
|
+
...(typeof meta.timestamp === 'string' ? { timestamp: meta.timestamp } : {}),
|
|
169
|
+
...(typeof meta.note === 'string' ? { note: meta.note } : {}),
|
|
170
|
+
...(meta.result !== undefined ? { result: meta.result } : {}),
|
|
171
|
+
...(meta.success !== undefined ? { success: meta.success } : {}),
|
|
172
|
+
...(typeof meta.error === 'string' ? { error: meta.error } : {}),
|
|
173
|
+
...(Array.isArray(meta.networkRequests) ? { networkRequests: meta.networkRequests } : {}),
|
|
174
|
+
}),
|
|
175
|
+
signal: unrefAbortSignal(timeoutMs),
|
|
176
|
+
}).then((res) => {
|
|
177
|
+
const delivered = res.ok;
|
|
178
|
+
res.body?.cancel().catch(() => { });
|
|
179
|
+
return delivered;
|
|
180
|
+
}).catch(() => false);
|
|
181
|
+
}
|
|
182
|
+
catch {
|
|
183
|
+
return Promise.resolve(false);
|
|
140
184
|
}
|
|
141
|
-
catch { /* swallow synchronous errors */ }
|
|
142
185
|
}
|
|
143
186
|
/**
|
|
144
187
|
* Fire-and-forget: POST a screenshot action to the cloud session.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-session-sync.js","sourceRoot":"","sources":["../../../src/session/cli-session-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAErD,iFAAiF;AAEjF;;;;;;;;;GASG;AACH,SAAS,gBAAgB,CAAC,EAAU;IAClC,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACvD,8EAA8E;IAC9E,IAAI,OAAQ,KAAa,CAAC,KAAK,KAAK,UAAU;QAAG,KAAa,CAAC,KAAK,EAAE,CAAC;IACvE,+EAA+E;IAC/E,4EAA4E;IAC5E,2EAA2E;IAC3E,OAAO,UAAU,CAAC,MAAM,CAAC;AAC3B,CAAC;AAED,gFAAgF;AAEhF;+EAC+E;AAC/E,SAAS,iBAAiB;IACxB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAuB,CAAC;IAC1D,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAEzB,MAAM,SAAS,GAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAwB,IAAI,
|
|
1
|
+
{"version":3,"file":"cli-session-sync.js","sourceRoot":"","sources":["../../../src/session/cli-session-sync.ts"],"names":[],"mappings":"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"}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -33,6 +33,11 @@ export interface ClickOptions {
|
|
|
33
33
|
delay?: number;
|
|
34
34
|
timeout?: number;
|
|
35
35
|
}
|
|
36
|
+
export interface ClickAtOptions {
|
|
37
|
+
button?: 'left' | 'right' | 'middle';
|
|
38
|
+
delay?: number;
|
|
39
|
+
timeout?: number;
|
|
40
|
+
}
|
|
36
41
|
export interface TypeOptions {
|
|
37
42
|
delay?: number;
|
|
38
43
|
clear?: boolean;
|
package/dist/src/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/src/utils.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Shared utility functions
|
|
3
3
|
*/
|
|
4
4
|
/** Default next-step hint when cloud API authentication fails. */
|
|
5
|
-
export declare const API_KEY_HELP_FALLBACK = "Run `thinkrun doctor` or check your API key at https://
|
|
5
|
+
export declare const API_KEY_HELP_FALLBACK = "Run `thinkrun doctor` or check your API key at https://thinkrun.ai/settings";
|
|
6
6
|
export declare function handleError(error: any, command?: string, startMs?: number): never;
|
|
7
7
|
export declare function isLocalApiUrl(apiUrl: string): boolean;
|
|
8
8
|
export declare const DEFAULT_BRIDGE_PORT = 3012;
|
package/dist/src/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH,kEAAkE;AAClE,eAAO,MAAM,qBAAqB,gFAC6C,CAAC;AAEhF,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,KAAK,CA0CjF;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQrD;AAED,eAAO,MAAM,mBAAmB,OAAO,CAAC;AAExC;;;GAGG;AACH,eAAO,MAAM,8BAA8B,QAA8C,CAAC;AAE1F;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAyC,CAAC;AAEhF;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAS5D;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,YAAY,SAA0C,GAAG,MAAM,CAY7F;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,YAAY,SAA0C,GAAG,MAAM,GAAG,IAAI,CAM9G;AAID;;;GAGG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3C,MAAM,GAAG,IAAI,CAMf"}
|
package/dist/src/utils.js
CHANGED
|
@@ -9,7 +9,7 @@ import { ApiError, SessionError, ThinkRunError } from './errors.js';
|
|
|
9
9
|
import { isJsonMode } from './output/mode.js';
|
|
10
10
|
import { LOCAL_BRIDGE_HEALTH_PROBE_TIMEOUT_MS as SHARED_LOCAL_BRIDGE_HEALTH_PROBE_TIMEOUT_MS, LOCAL_BRIDGE_REQUEST_TIMEOUT_MS as SHARED_LOCAL_BRIDGE_REQUEST_TIMEOUT_MS, } from './local-bridge-timing.js';
|
|
11
11
|
/** Default next-step hint when cloud API authentication fails. */
|
|
12
|
-
export const API_KEY_HELP_FALLBACK = 'Run `thinkrun doctor` or check your API key at https://
|
|
12
|
+
export const API_KEY_HELP_FALLBACK = 'Run `thinkrun doctor` or check your API key at https://thinkrun.ai/settings';
|
|
13
13
|
export function handleError(error, command, startMs) {
|
|
14
14
|
const durationMs = startMs !== undefined ? Date.now() - startMs : undefined;
|
|
15
15
|
if (isJsonMode()) {
|
package/dist/src/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAE,MAAM,IAAI,CAAC;AAC7B,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EACL,oCAAoC,IAAI,2CAA2C,EACnF,+BAA+B,IAAI,sCAAsC,GAC1E,MAAM,0BAA0B,CAAC;AAElC,kEAAkE;AAClE,MAAM,CAAC,MAAM,qBAAqB,GAChC,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@thinkrun/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.29",
|
|
4
4
|
"description": "CLI for controlling browsers via ThinkRun cloud and local infrastructure",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
"url": "https://github.com/dundas/mech-browse.git",
|
|
45
45
|
"directory": "packages/cli"
|
|
46
46
|
},
|
|
47
|
-
"homepage": "https://
|
|
47
|
+
"homepage": "https://thinkrun.ai",
|
|
48
48
|
"bugs": {
|
|
49
49
|
"url": "https://github.com/dundas/mech-browse/issues"
|
|
50
50
|
},
|