@@ -28,10 +28,16 @@ The core loop is:
2828## Install
2929
3030``` bash
31- npm install @predicatesystems/sdk
31+ npm install @predicatesystems/runtime
3232npx playwright install chromium
3333```
3434
35+ Legacy install compatibility remains available through the shim package:
36+
37+ ``` bash
38+ npm install @predicatesystems/sdk
39+ ```
40+
3541## Naming migration (Predicate rebrand)
3642
3743Use the new ` Predicate* ` class names for all new code:
@@ -51,9 +57,9 @@ Use the new `Predicate*` class names for all new code:
5157## Quickstart: a verification-first loop
5258
5359``` ts
54- import { PredicateBrowser , AgentRuntime } from ' @predicatesystems/sdk ' ;
55- import { JsonlTraceSink , Tracer } from ' @predicatesystems/sdk ' ;
56- import { exists , urlContains } from ' @predicatesystems/sdk ' ;
60+ import { PredicateBrowser , AgentRuntime } from ' @predicatesystems/runtime ' ;
61+ import { JsonlTraceSink , Tracer } from ' @predicatesystems/runtime ' ;
62+ import { exists , urlContains } from ' @predicatesystems/runtime ' ;
5763import type { Page } from ' playwright' ;
5864
5965async function main(): Promise <void > {
@@ -102,7 +108,7 @@ import {
102108 JsonlTraceSink ,
103109 exists ,
104110 urlContains ,
105- } from ' @predicatesystems/sdk ' ;
111+ } from ' @predicatesystems/runtime ' ;
106112
107113async function runExistingAgent(page : Page ): Promise <void > {
108114 const tracer = new Tracer (' run-123' , new JsonlTraceSink (' trace.jsonl' ));
@@ -129,7 +135,14 @@ async function runExistingAgent(page: Page): Promise<void> {
129135If you want Predicate to drive the loop end-to-end, you can use the SDK primitives directly: take a snapshot, select elements, act, then verify.
130136
131137``` ts
132- import { PredicateBrowser , snapshot , find , typeText , click , waitFor } from ' @predicatesystems/sdk' ;
138+ import {
139+ PredicateBrowser ,
140+ snapshot ,
141+ find ,
142+ typeText ,
143+ click ,
144+ waitFor ,
145+ } from ' @predicatesystems/runtime' ;
133146
134147async function loginExample(): Promise <void > {
135148 const browser = new PredicateBrowser ();
@@ -207,7 +220,7 @@ if (!ok) {
207220## ToolRegistry (LLM-callable tools)
208221
209222``` ts
210- import { ToolRegistry , registerDefaultTools } from ' @predicatesystems/sdk ' ;
223+ import { ToolRegistry , registerDefaultTools } from ' @predicatesystems/runtime ' ;
211224
212225const registry = new ToolRegistry ();
213226registerDefaultTools (registry );
@@ -219,8 +232,8 @@ const toolsForLLM = registry.llmTools();
219232Chrome permission prompts are outside the DOM and can be invisible to snapshots. Prefer setting a policy ** before navigation** .
220233
221234``` ts
222- import { PredicateBrowser } from ' @predicatesystems/sdk ' ;
223- import type { PermissionPolicy } from ' @predicatesystems/sdk ' ;
235+ import { PredicateBrowser } from ' @predicatesystems/runtime ' ;
236+ import type { PermissionPolicy } from ' @predicatesystems/runtime ' ;
224237
225238const policy: PermissionPolicy = {
226239 default: ' clear' ,
@@ -254,7 +267,7 @@ If your backend supports it, you can also use ToolRegistry permission tools (`gr
254267## Downloads (verification predicate)
255268
256269``` ts
257- import { downloadCompleted } from ' @predicatesystems/sdk ' ;
270+ import { downloadCompleted } from ' @predicatesystems/runtime ' ;
258271
259272runtime .assert (downloadCompleted (' report.csv' ), ' download_ok' , true );
260273```
0 commit comments