@predicatelabs/sdk 0.99.9
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/LICENSE +24 -0
- package/README.md +252 -0
- package/dist/actions.d.ts +185 -0
- package/dist/actions.d.ts.map +1 -0
- package/dist/actions.js +1120 -0
- package/dist/actions.js.map +1 -0
- package/dist/agent-runtime.d.ts +352 -0
- package/dist/agent-runtime.d.ts.map +1 -0
- package/dist/agent-runtime.js +1170 -0
- package/dist/agent-runtime.js.map +1 -0
- package/dist/agent.d.ts +164 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +408 -0
- package/dist/agent.js.map +1 -0
- package/dist/asserts/expect.d.ts +159 -0
- package/dist/asserts/expect.d.ts.map +1 -0
- package/dist/asserts/expect.js +547 -0
- package/dist/asserts/expect.js.map +1 -0
- package/dist/asserts/index.d.ts +58 -0
- package/dist/asserts/index.d.ts.map +1 -0
- package/dist/asserts/index.js +70 -0
- package/dist/asserts/index.js.map +1 -0
- package/dist/asserts/query.d.ts +199 -0
- package/dist/asserts/query.d.ts.map +1 -0
- package/dist/asserts/query.js +288 -0
- package/dist/asserts/query.js.map +1 -0
- package/dist/backends/actions.d.ts +119 -0
- package/dist/backends/actions.d.ts.map +1 -0
- package/dist/backends/actions.js +291 -0
- package/dist/backends/actions.js.map +1 -0
- package/dist/backends/browser-use-adapter.d.ts +131 -0
- package/dist/backends/browser-use-adapter.d.ts.map +1 -0
- package/dist/backends/browser-use-adapter.js +219 -0
- package/dist/backends/browser-use-adapter.js.map +1 -0
- package/dist/backends/cdp-backend.d.ts +66 -0
- package/dist/backends/cdp-backend.d.ts.map +1 -0
- package/dist/backends/cdp-backend.js +273 -0
- package/dist/backends/cdp-backend.js.map +1 -0
- package/dist/backends/index.d.ts +80 -0
- package/dist/backends/index.d.ts.map +1 -0
- package/dist/backends/index.js +101 -0
- package/dist/backends/index.js.map +1 -0
- package/dist/backends/protocol.d.ts +156 -0
- package/dist/backends/protocol.d.ts.map +1 -0
- package/dist/backends/protocol.js +16 -0
- package/dist/backends/protocol.js.map +1 -0
- package/dist/backends/sentience-context.d.ts +143 -0
- package/dist/backends/sentience-context.d.ts.map +1 -0
- package/dist/backends/sentience-context.js +359 -0
- package/dist/backends/sentience-context.js.map +1 -0
- package/dist/backends/snapshot.d.ts +188 -0
- package/dist/backends/snapshot.d.ts.map +1 -0
- package/dist/backends/snapshot.js +360 -0
- package/dist/backends/snapshot.js.map +1 -0
- package/dist/browser.d.ts +154 -0
- package/dist/browser.d.ts.map +1 -0
- package/dist/browser.js +920 -0
- package/dist/browser.js.map +1 -0
- package/dist/canonicalization.d.ts +126 -0
- package/dist/canonicalization.d.ts.map +1 -0
- package/dist/canonicalization.js +161 -0
- package/dist/canonicalization.js.map +1 -0
- package/dist/captcha/strategies.d.ts +12 -0
- package/dist/captcha/strategies.d.ts.map +1 -0
- package/dist/captcha/strategies.js +43 -0
- package/dist/captcha/strategies.js.map +1 -0
- package/dist/captcha/types.d.ts +45 -0
- package/dist/captcha/types.d.ts.map +1 -0
- package/dist/captcha/types.js +12 -0
- package/dist/captcha/types.js.map +1 -0
- package/dist/cli.d.ts +5 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +422 -0
- package/dist/cli.js.map +1 -0
- package/dist/conversational-agent.d.ts +123 -0
- package/dist/conversational-agent.d.ts.map +1 -0
- package/dist/conversational-agent.js +341 -0
- package/dist/conversational-agent.js.map +1 -0
- package/dist/cursor-policy.d.ts +41 -0
- package/dist/cursor-policy.d.ts.map +1 -0
- package/dist/cursor-policy.js +81 -0
- package/dist/cursor-policy.js.map +1 -0
- package/dist/debugger.d.ts +28 -0
- package/dist/debugger.d.ts.map +1 -0
- package/dist/debugger.js +107 -0
- package/dist/debugger.js.map +1 -0
- package/dist/expect.d.ts +16 -0
- package/dist/expect.d.ts.map +1 -0
- package/dist/expect.js +67 -0
- package/dist/expect.js.map +1 -0
- package/dist/failure-artifacts.d.ts +95 -0
- package/dist/failure-artifacts.d.ts.map +1 -0
- package/dist/failure-artifacts.js +805 -0
- package/dist/failure-artifacts.js.map +1 -0
- package/dist/generator.d.ts +16 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +205 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +160 -0
- package/dist/index.js.map +1 -0
- package/dist/inspector.d.ts +13 -0
- package/dist/inspector.d.ts.map +1 -0
- package/dist/inspector.js +153 -0
- package/dist/inspector.js.map +1 -0
- package/dist/llm-provider.d.ts +144 -0
- package/dist/llm-provider.d.ts.map +1 -0
- package/dist/llm-provider.js +460 -0
- package/dist/llm-provider.js.map +1 -0
- package/dist/ordinal.d.ts +90 -0
- package/dist/ordinal.d.ts.map +1 -0
- package/dist/ordinal.js +249 -0
- package/dist/ordinal.js.map +1 -0
- package/dist/overlay.d.ts +63 -0
- package/dist/overlay.d.ts.map +1 -0
- package/dist/overlay.js +102 -0
- package/dist/overlay.js.map +1 -0
- package/dist/protocols/browser-protocol.d.ts +79 -0
- package/dist/protocols/browser-protocol.d.ts.map +1 -0
- package/dist/protocols/browser-protocol.js +9 -0
- package/dist/protocols/browser-protocol.js.map +1 -0
- package/dist/query.d.ts +66 -0
- package/dist/query.d.ts.map +1 -0
- package/dist/query.js +482 -0
- package/dist/query.js.map +1 -0
- package/dist/read.d.ts +47 -0
- package/dist/read.d.ts.map +1 -0
- package/dist/read.js +128 -0
- package/dist/read.js.map +1 -0
- package/dist/recorder.d.ts +44 -0
- package/dist/recorder.d.ts.map +1 -0
- package/dist/recorder.js +262 -0
- package/dist/recorder.js.map +1 -0
- package/dist/runtime-agent.d.ts +72 -0
- package/dist/runtime-agent.d.ts.map +1 -0
- package/dist/runtime-agent.js +357 -0
- package/dist/runtime-agent.js.map +1 -0
- package/dist/screenshot.d.ts +17 -0
- package/dist/screenshot.d.ts.map +1 -0
- package/dist/screenshot.js +40 -0
- package/dist/screenshot.js.map +1 -0
- package/dist/snapshot-diff.d.ts +23 -0
- package/dist/snapshot-diff.d.ts.map +1 -0
- package/dist/snapshot-diff.js +119 -0
- package/dist/snapshot-diff.js.map +1 -0
- package/dist/snapshot.d.ts +47 -0
- package/dist/snapshot.d.ts.map +1 -0
- package/dist/snapshot.js +358 -0
- package/dist/snapshot.js.map +1 -0
- package/dist/textSearch.d.ts +64 -0
- package/dist/textSearch.d.ts.map +1 -0
- package/dist/textSearch.js +113 -0
- package/dist/textSearch.js.map +1 -0
- package/dist/tools/context.d.ts +18 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +40 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/defaults.d.ts +5 -0
- package/dist/tools/defaults.d.ts.map +1 -0
- package/dist/tools/defaults.js +368 -0
- package/dist/tools/defaults.js.map +1 -0
- package/dist/tools/filesystem.d.ts +12 -0
- package/dist/tools/filesystem.d.ts.map +1 -0
- package/dist/tools/filesystem.js +137 -0
- package/dist/tools/filesystem.js.map +1 -0
- package/dist/tools/index.d.ts +5 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +15 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/registry.d.ts +38 -0
- package/dist/tools/registry.d.ts.map +1 -0
- package/dist/tools/registry.js +100 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tracing/cloud-sink.d.ts +189 -0
- package/dist/tracing/cloud-sink.d.ts.map +1 -0
- package/dist/tracing/cloud-sink.js +1067 -0
- package/dist/tracing/cloud-sink.js.map +1 -0
- package/dist/tracing/index-schema.d.ts +231 -0
- package/dist/tracing/index-schema.d.ts.map +1 -0
- package/dist/tracing/index-schema.js +235 -0
- package/dist/tracing/index-schema.js.map +1 -0
- package/dist/tracing/index.d.ts +12 -0
- package/dist/tracing/index.d.ts.map +1 -0
- package/dist/tracing/index.js +28 -0
- package/dist/tracing/index.js.map +1 -0
- package/dist/tracing/indexer.d.ts +20 -0
- package/dist/tracing/indexer.d.ts.map +1 -0
- package/dist/tracing/indexer.js +347 -0
- package/dist/tracing/indexer.js.map +1 -0
- package/dist/tracing/jsonl-sink.d.ts +51 -0
- package/dist/tracing/jsonl-sink.d.ts.map +1 -0
- package/dist/tracing/jsonl-sink.js +329 -0
- package/dist/tracing/jsonl-sink.js.map +1 -0
- package/dist/tracing/sink.d.ts +25 -0
- package/dist/tracing/sink.d.ts.map +1 -0
- package/dist/tracing/sink.js +15 -0
- package/dist/tracing/sink.js.map +1 -0
- package/dist/tracing/tracer-factory.d.ts +102 -0
- package/dist/tracing/tracer-factory.d.ts.map +1 -0
- package/dist/tracing/tracer-factory.js +375 -0
- package/dist/tracing/tracer-factory.js.map +1 -0
- package/dist/tracing/tracer.d.ts +140 -0
- package/dist/tracing/tracer.d.ts.map +1 -0
- package/dist/tracing/tracer.js +336 -0
- package/dist/tracing/tracer.js.map +1 -0
- package/dist/tracing/types.d.ts +203 -0
- package/dist/tracing/types.d.ts.map +1 -0
- package/dist/tracing/types.js +8 -0
- package/dist/tracing/types.js.map +1 -0
- package/dist/types.d.ts +422 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +6 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/action-executor.d.ts +25 -0
- package/dist/utils/action-executor.d.ts.map +1 -0
- package/dist/utils/action-executor.js +121 -0
- package/dist/utils/action-executor.js.map +1 -0
- package/dist/utils/browser-evaluator.d.ts +76 -0
- package/dist/utils/browser-evaluator.d.ts.map +1 -0
- package/dist/utils/browser-evaluator.js +130 -0
- package/dist/utils/browser-evaluator.js.map +1 -0
- package/dist/utils/browser.d.ts +30 -0
- package/dist/utils/browser.d.ts.map +1 -0
- package/dist/utils/browser.js +75 -0
- package/dist/utils/browser.js.map +1 -0
- package/dist/utils/element-filter.d.ts +76 -0
- package/dist/utils/element-filter.d.ts.map +1 -0
- package/dist/utils/element-filter.js +195 -0
- package/dist/utils/element-filter.js.map +1 -0
- package/dist/utils/grid-utils.d.ts +37 -0
- package/dist/utils/grid-utils.d.ts.map +1 -0
- package/dist/utils/grid-utils.js +283 -0
- package/dist/utils/grid-utils.js.map +1 -0
- package/dist/utils/llm-interaction-handler.d.ts +41 -0
- package/dist/utils/llm-interaction-handler.d.ts.map +1 -0
- package/dist/utils/llm-interaction-handler.js +171 -0
- package/dist/utils/llm-interaction-handler.js.map +1 -0
- package/dist/utils/llm-response-builder.d.ts +56 -0
- package/dist/utils/llm-response-builder.d.ts.map +1 -0
- package/dist/utils/llm-response-builder.js +130 -0
- package/dist/utils/llm-response-builder.js.map +1 -0
- package/dist/utils/selector-utils.d.ts +12 -0
- package/dist/utils/selector-utils.d.ts.map +1 -0
- package/dist/utils/selector-utils.js +32 -0
- package/dist/utils/selector-utils.js.map +1 -0
- package/dist/utils/snapshot-event-builder.d.ts +28 -0
- package/dist/utils/snapshot-event-builder.d.ts.map +1 -0
- package/dist/utils/snapshot-event-builder.js +88 -0
- package/dist/utils/snapshot-event-builder.js.map +1 -0
- package/dist/utils/snapshot-processor.d.ts +27 -0
- package/dist/utils/snapshot-processor.d.ts.map +1 -0
- package/dist/utils/snapshot-processor.js +47 -0
- package/dist/utils/snapshot-processor.js.map +1 -0
- package/dist/utils/trace-event-builder.d.ts +122 -0
- package/dist/utils/trace-event-builder.d.ts.map +1 -0
- package/dist/utils/trace-event-builder.js +365 -0
- package/dist/utils/trace-event-builder.js.map +1 -0
- package/dist/utils/trace-file-manager.d.ts +70 -0
- package/dist/utils/trace-file-manager.d.ts.map +1 -0
- package/dist/utils/trace-file-manager.js +194 -0
- package/dist/utils/trace-file-manager.js.map +1 -0
- package/dist/utils/zod.d.ts +5 -0
- package/dist/utils/zod.d.ts.map +1 -0
- package/dist/utils/zod.js +80 -0
- package/dist/utils/zod.js.map +1 -0
- package/dist/utils.d.ts +8 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +13 -0
- package/dist/utils.js.map +1 -0
- package/dist/verification.d.ts +194 -0
- package/dist/verification.d.ts.map +1 -0
- package/dist/verification.js +530 -0
- package/dist/verification.js.map +1 -0
- package/dist/vision-executor.d.ts +18 -0
- package/dist/vision-executor.d.ts.map +1 -0
- package/dist/vision-executor.js +60 -0
- package/dist/vision-executor.js.map +1 -0
- package/dist/visual-agent.d.ts +120 -0
- package/dist/visual-agent.d.ts.map +1 -0
- package/dist/visual-agent.js +796 -0
- package/dist/visual-agent.js.map +1 -0
- package/dist/wait.d.ts +35 -0
- package/dist/wait.d.ts.map +1 -0
- package/dist/wait.js +76 -0
- package/dist/wait.js.map +1 -0
- package/package.json +94 -0
- package/spec/README.md +72 -0
- package/spec/SNAPSHOT_V1.md +208 -0
- package/spec/sdk-types.md +259 -0
- package/spec/snapshot.schema.json +148 -0
- package/src/extension/background.js +104 -0
- package/src/extension/content.js +162 -0
- package/src/extension/injected_api.js +1399 -0
- package/src/extension/manifest.json +36 -0
- package/src/extension/pkg/README.md +1340 -0
- package/src/extension/pkg/package.json +15 -0
- package/src/extension/pkg/sentience_core.d.ts +51 -0
- package/src/extension/pkg/sentience_core.js +371 -0
- package/src/extension/pkg/sentience_core_bg.wasm +0 -0
- package/src/extension/pkg/sentience_core_bg.wasm.d.ts +10 -0
- package/src/extension/release.json +116 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Inspector tool - helps developers see what the agent "sees"
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.Inspector = void 0;
|
|
7
|
+
exports.inspect = inspect;
|
|
8
|
+
class Inspector {
|
|
9
|
+
constructor(browser) {
|
|
10
|
+
this.browser = browser;
|
|
11
|
+
this.active = false;
|
|
12
|
+
}
|
|
13
|
+
async start() {
|
|
14
|
+
const page = this.browser.getPage();
|
|
15
|
+
if (!page) {
|
|
16
|
+
throw new Error('Browser not started. Call start() first.');
|
|
17
|
+
}
|
|
18
|
+
this.active = true;
|
|
19
|
+
// Inject inspector script into page
|
|
20
|
+
await page.evaluate(() => {
|
|
21
|
+
// Remove existing inspector if any
|
|
22
|
+
if (window.__sentience_inspector_active) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
window.__sentience_inspector_active = true;
|
|
26
|
+
window.__sentience_last_element_id = null;
|
|
27
|
+
// Get element at point
|
|
28
|
+
function getElementAtPoint(x, y) {
|
|
29
|
+
const el = document.elementFromPoint(x, y);
|
|
30
|
+
if (!el)
|
|
31
|
+
return null;
|
|
32
|
+
// Find element in registry
|
|
33
|
+
const registry = window.sentience_registry;
|
|
34
|
+
if (registry) {
|
|
35
|
+
for (let i = 0; i < registry.length; i++) {
|
|
36
|
+
if (registry[i] === el) {
|
|
37
|
+
return i;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
// Mouse move handler
|
|
44
|
+
function handleMouseMove(e) {
|
|
45
|
+
if (!window.__sentience_inspector_active)
|
|
46
|
+
return;
|
|
47
|
+
const elementId = getElementAtPoint(e.clientX, e.clientY);
|
|
48
|
+
if (elementId === null || elementId === window.__sentience_last_element_id) {
|
|
49
|
+
return;
|
|
50
|
+
}
|
|
51
|
+
window.__sentience_last_element_id = elementId;
|
|
52
|
+
// Get element info from snapshot if available
|
|
53
|
+
const sentience = window.sentience;
|
|
54
|
+
const registry = window.sentience_registry;
|
|
55
|
+
if (sentience && registry) {
|
|
56
|
+
const el = registry[elementId];
|
|
57
|
+
if (el) {
|
|
58
|
+
const rect = el.getBoundingClientRect();
|
|
59
|
+
const text = el.getAttribute('aria-label') ||
|
|
60
|
+
el.value ||
|
|
61
|
+
el.placeholder ||
|
|
62
|
+
el.alt ||
|
|
63
|
+
(el.innerText || '').substring(0, 50);
|
|
64
|
+
const role = el.getAttribute('role') || el.tagName.toLowerCase();
|
|
65
|
+
console.log(`[Sentience Inspector] Element #${elementId}: role=${role}, text="${text}", bbox=(${Math.round(rect.x)}, ${Math.round(rect.y)}, ${Math.round(rect.width)}, ${Math.round(rect.height)})`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// Click handler
|
|
70
|
+
function handleClick(e) {
|
|
71
|
+
if (!window.__sentience_inspector_active)
|
|
72
|
+
return;
|
|
73
|
+
e.preventDefault();
|
|
74
|
+
e.stopPropagation();
|
|
75
|
+
const elementId = getElementAtPoint(e.clientX, e.clientY);
|
|
76
|
+
if (elementId === null)
|
|
77
|
+
return;
|
|
78
|
+
// Get full element info
|
|
79
|
+
const sentience = window.sentience;
|
|
80
|
+
const registry = window.sentience_registry;
|
|
81
|
+
if (sentience && registry) {
|
|
82
|
+
const el = registry[elementId];
|
|
83
|
+
if (el) {
|
|
84
|
+
const rect = el.getBoundingClientRect();
|
|
85
|
+
const info = {
|
|
86
|
+
id: elementId,
|
|
87
|
+
tag: el.tagName.toLowerCase(),
|
|
88
|
+
role: el.getAttribute('role') || 'generic',
|
|
89
|
+
text: el.getAttribute('aria-label') ||
|
|
90
|
+
el.value ||
|
|
91
|
+
el.placeholder ||
|
|
92
|
+
el.alt ||
|
|
93
|
+
(el.innerText || '').substring(0, 100),
|
|
94
|
+
bbox: {
|
|
95
|
+
x: Math.round(rect.x),
|
|
96
|
+
y: Math.round(rect.y),
|
|
97
|
+
width: Math.round(rect.width),
|
|
98
|
+
height: Math.round(rect.height),
|
|
99
|
+
},
|
|
100
|
+
attributes: {
|
|
101
|
+
id: el.id || null,
|
|
102
|
+
class: el.className || null,
|
|
103
|
+
name: el.name || null,
|
|
104
|
+
type: el.type || null,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
console.log('[Sentience Inspector] Clicked element:', JSON.stringify(info, null, 2));
|
|
108
|
+
// Also try to get from snapshot if available
|
|
109
|
+
if (sentience && sentience.snapshot) {
|
|
110
|
+
sentience
|
|
111
|
+
.snapshot({ limit: 100 })
|
|
112
|
+
.then((snap) => {
|
|
113
|
+
const element = snap.elements.find((el) => el.id === elementId);
|
|
114
|
+
if (element) {
|
|
115
|
+
console.log('[Sentience Inspector] Snapshot element:', JSON.stringify(element, null, 2));
|
|
116
|
+
}
|
|
117
|
+
})
|
|
118
|
+
.catch(() => { });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
// Add event listeners
|
|
124
|
+
document.addEventListener('mousemove', handleMouseMove, true);
|
|
125
|
+
document.addEventListener('click', handleClick, true);
|
|
126
|
+
// Store cleanup function
|
|
127
|
+
window.__sentience_inspector_cleanup = () => {
|
|
128
|
+
document.removeEventListener('mousemove', handleMouseMove, true);
|
|
129
|
+
document.removeEventListener('click', handleClick, true);
|
|
130
|
+
window.__sentience_inspector_active = false;
|
|
131
|
+
};
|
|
132
|
+
console.log('[Sentience Inspector] ✅ Inspection mode active. Hover elements to see info, click to see full details.');
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
async stop() {
|
|
136
|
+
const page = this.browser.getPage();
|
|
137
|
+
if (!page) {
|
|
138
|
+
return; // Already stopped or never started
|
|
139
|
+
}
|
|
140
|
+
this.active = false;
|
|
141
|
+
// Cleanup inspector
|
|
142
|
+
await page.evaluate(() => {
|
|
143
|
+
if (window.__sentience_inspector_cleanup) {
|
|
144
|
+
window.__sentience_inspector_cleanup();
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
exports.Inspector = Inspector;
|
|
150
|
+
function inspect(browser) {
|
|
151
|
+
return new Inspector(browser);
|
|
152
|
+
}
|
|
153
|
+
//# sourceMappingURL=inspector.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inspector.js","sourceRoot":"","sources":["../src/inspector.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider Abstraction - BYOB (Bring Your Own Brain)
|
|
3
|
+
* Enables pluggable LLM support for SentienceAgent
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Response from LLM provider
|
|
7
|
+
*/
|
|
8
|
+
export interface LLMResponse {
|
|
9
|
+
content: string;
|
|
10
|
+
promptTokens?: number;
|
|
11
|
+
completionTokens?: number;
|
|
12
|
+
totalTokens?: number;
|
|
13
|
+
modelName?: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Abstract base class for LLM providers
|
|
17
|
+
* Implement this to integrate any LLM (OpenAI, Anthropic, Local, etc.)
|
|
18
|
+
*/
|
|
19
|
+
export declare abstract class LLMProvider {
|
|
20
|
+
/**
|
|
21
|
+
* Generate LLM response from prompts
|
|
22
|
+
* @param systemPrompt - System/instruction prompt
|
|
23
|
+
* @param userPrompt - User query prompt
|
|
24
|
+
* @param options - Additional provider-specific options
|
|
25
|
+
*/
|
|
26
|
+
abstract generate(systemPrompt: string, userPrompt: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
27
|
+
/**
|
|
28
|
+
* Whether this provider supports JSON mode (structured output)
|
|
29
|
+
*/
|
|
30
|
+
abstract supportsJsonMode(): boolean;
|
|
31
|
+
/**
|
|
32
|
+
* Get the model name/identifier
|
|
33
|
+
*/
|
|
34
|
+
abstract get modelName(): string;
|
|
35
|
+
/**
|
|
36
|
+
* Whether this provider supports image input for vision tasks.
|
|
37
|
+
* Override in subclasses that support vision-capable models.
|
|
38
|
+
*/
|
|
39
|
+
supportsVision(): boolean;
|
|
40
|
+
/**
|
|
41
|
+
* Generate with image input (vision-capable models only).
|
|
42
|
+
* Override in subclasses that support vision.
|
|
43
|
+
*/
|
|
44
|
+
generateWithImage(systemPrompt: string, userPrompt: string, imageBase64: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Local OpenAI-compatible Provider (Ollama / LM Studio / llama.cpp server, etc.)
|
|
48
|
+
*
|
|
49
|
+
* This is the TypeScript equivalent of Python's LocalLLMProvider concept, but instead of
|
|
50
|
+
* embedding a full HF runtime inside Node, it calls a local HTTP server that exposes an
|
|
51
|
+
* OpenAI-compatible Chat Completions API.
|
|
52
|
+
*
|
|
53
|
+
* Examples of compatible local servers:
|
|
54
|
+
* - Ollama (OpenAI-compatible endpoint)
|
|
55
|
+
* - LM Studio (OpenAI-compatible endpoint)
|
|
56
|
+
* - llama.cpp server (OpenAI-compatible endpoint)
|
|
57
|
+
*/
|
|
58
|
+
export declare class LocalLLMProvider extends LLMProvider {
|
|
59
|
+
private _modelName;
|
|
60
|
+
private _baseUrl;
|
|
61
|
+
private _apiKey?;
|
|
62
|
+
private _defaultHeaders;
|
|
63
|
+
private _timeoutMs;
|
|
64
|
+
constructor(options?: {
|
|
65
|
+
model?: string;
|
|
66
|
+
baseUrl?: string;
|
|
67
|
+
apiKey?: string;
|
|
68
|
+
timeoutMs?: number;
|
|
69
|
+
headers?: Record<string, string>;
|
|
70
|
+
});
|
|
71
|
+
supportsJsonMode(): boolean;
|
|
72
|
+
get modelName(): string;
|
|
73
|
+
generate(systemPrompt: string, userPrompt: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Local OpenAI-compatible Vision Provider.
|
|
77
|
+
*
|
|
78
|
+
* This is the TypeScript analogue of Python's LocalVisionLLMProvider, but it assumes your
|
|
79
|
+
* local server supports the OpenAI vision message format (image_url with data: URI).
|
|
80
|
+
*
|
|
81
|
+
* If your local stack uses a different schema (e.g., Ollama images array), you can implement
|
|
82
|
+
* a custom provider by extending LLMProvider.
|
|
83
|
+
*/
|
|
84
|
+
export declare class LocalVisionLLMProvider extends LocalLLMProvider {
|
|
85
|
+
supportsVision(): boolean;
|
|
86
|
+
generateWithImage(systemPrompt: string, userPrompt: string, imageBase64: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* OpenAI Provider (GPT-4, GPT-4o, etc.)
|
|
90
|
+
* Requires: npm install openai
|
|
91
|
+
*/
|
|
92
|
+
export declare class OpenAIProvider extends LLMProvider {
|
|
93
|
+
private client;
|
|
94
|
+
private _modelName;
|
|
95
|
+
constructor(apiKey: string, model?: string);
|
|
96
|
+
generate(systemPrompt: string, userPrompt: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
97
|
+
supportsJsonMode(): boolean;
|
|
98
|
+
supportsVision(): boolean;
|
|
99
|
+
generateWithImage(systemPrompt: string, userPrompt: string, imageBase64: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
100
|
+
get modelName(): string;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Anthropic Provider (Claude 3.5 Sonnet, etc.)
|
|
104
|
+
* Requires: npm install @anthropic-ai/sdk
|
|
105
|
+
*/
|
|
106
|
+
export declare class AnthropicProvider extends LLMProvider {
|
|
107
|
+
private client;
|
|
108
|
+
private _modelName;
|
|
109
|
+
constructor(apiKey: string, model?: string);
|
|
110
|
+
generate(systemPrompt: string, userPrompt: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
111
|
+
supportsJsonMode(): boolean;
|
|
112
|
+
supportsVision(): boolean;
|
|
113
|
+
generateWithImage(systemPrompt: string, userPrompt: string, imageBase64: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
114
|
+
get modelName(): string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Zhipu AI GLM Provider (GLM-4, GLM-4-Plus, etc.)
|
|
118
|
+
*
|
|
119
|
+
* Requirements:
|
|
120
|
+
* npm install zhipuai-sdk-nodejs-v4
|
|
121
|
+
*/
|
|
122
|
+
export declare class GLMProvider extends LLMProvider {
|
|
123
|
+
private client;
|
|
124
|
+
private _modelName;
|
|
125
|
+
constructor(apiKey: string, model?: string);
|
|
126
|
+
generate(systemPrompt: string, userPrompt: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
127
|
+
supportsJsonMode(): boolean;
|
|
128
|
+
get modelName(): string;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Google Gemini Provider (Gemini 2.0, Gemini 1.5 Pro, etc.)
|
|
132
|
+
*
|
|
133
|
+
* Requirements:
|
|
134
|
+
* npm install @google/generative-ai
|
|
135
|
+
*/
|
|
136
|
+
export declare class GeminiProvider extends LLMProvider {
|
|
137
|
+
private model;
|
|
138
|
+
private _modelName;
|
|
139
|
+
constructor(apiKey: string, model?: string);
|
|
140
|
+
generate(systemPrompt: string, userPrompt: string, options?: Record<string, any>): Promise<LLMResponse>;
|
|
141
|
+
supportsJsonMode(): boolean;
|
|
142
|
+
get modelName(): string;
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=llm-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-provider.d.ts","sourceRoot":"","sources":["../src/llm-provider.ts"],"names":[],"mappings":"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"}
|