tamash-playwright 0.11.0-beta.2 → 0.11.0-beta.4
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.
Potentially problematic release.
This version of tamash-playwright might be problematic. Click here for more details.
- package/.env.example +11 -1
- package/CHANGELOG.md +18 -0
- package/README.md +23 -1
- package/RELEASE-TESTING.md +46 -2
- package/dist/cli/doctor.d.ts.map +1 -1
- package/dist/cli/doctor.js +4 -3
- package/dist/cli/doctor.js.map +1 -1
- package/dist/healer/durable-locator.d.ts.map +1 -1
- package/dist/healer/durable-locator.js +18 -3
- package/dist/healer/durable-locator.js.map +1 -1
- package/dist/healer/providers/index.d.ts.map +1 -1
- package/dist/healer/providers/index.js +4 -0
- package/dist/healer/providers/index.js.map +1 -1
- package/dist/healer/providers/ollama-local.d.ts +3 -0
- package/dist/healer/providers/ollama-local.d.ts.map +1 -0
- package/dist/healer/providers/ollama-local.js +194 -0
- package/dist/healer/providers/ollama-local.js.map +1 -0
- package/package.json +1 -1
- package/usage.md +22 -2
package/.env.example
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Master on/off switch for self-healing. Unset or anything other than false/0 leaves it on.
|
|
2
2
|
HEALER_ENABLED=true
|
|
3
3
|
|
|
4
|
-
# Which AI provider backs self-healing: ollama | openai | anthropic | gemini | claude-subscription | copilot-subscription | tamash
|
|
4
|
+
# Which AI provider backs self-healing: ollama | ollama-local | openai | anthropic | gemini | claude-subscription | copilot-subscription | tamash
|
|
5
5
|
# Unset, unknown, or a provider whose key/model below is missing disables self-healing —
|
|
6
6
|
# a failed action just fails normally, since there's no AI model configured to recover it.
|
|
7
7
|
# claude-subscription/copilot-subscription don't need an API key at all — they use an existing
|
|
@@ -14,6 +14,16 @@ OLLAMA_MODEL=gpt-oss:120b
|
|
|
14
14
|
OLLAMA_API_KEY=
|
|
15
15
|
# OLLAMA_BASE_URL=https://ollama.com
|
|
16
16
|
|
|
17
|
+
# --- Ollama, self-hosted/internal server (a separate provider from Ollama Cloud above) ---
|
|
18
|
+
# For your own `ollama serve` instance, or an internal deployment your company hosts. A bare
|
|
19
|
+
# `ollama serve` has no auth at all -- leave OLLAMA_LOCAL_API_KEY unset. If your deployment sits
|
|
20
|
+
# behind a reverse proxy or API gateway that requires a bearer token, set it and it's sent as
|
|
21
|
+
# `Authorization: Bearer <token>`; no other auth scheme is currently supported.
|
|
22
|
+
# HEALER_PROVIDER=ollama-local
|
|
23
|
+
# OLLAMA_LOCAL_MODEL=gpt-oss:120b
|
|
24
|
+
# OLLAMA_LOCAL_BASE_URL=http://localhost:11434
|
|
25
|
+
# OLLAMA_LOCAL_API_KEY=
|
|
26
|
+
|
|
17
27
|
# --- OpenAI ---
|
|
18
28
|
# OPENAI_MODEL=gpt-4.1-mini
|
|
19
29
|
# OPENAI_API_KEY=
|
package/CHANGELOG.md
CHANGED
|
@@ -26,6 +26,15 @@ All notable changes to this project are documented here. Format loosely follows
|
|
|
26
26
|
(previously implemented with zero coverage); fixed by extending both bindings to wrap whatever
|
|
27
27
|
page these three hand back, the same way `newPage()` already did.
|
|
28
28
|
|
|
29
|
+
- **`tamash` (the rule-based provider) declined on a real, common page pattern it should have
|
|
30
|
+
resolved.** A floating label rendered as its own text node right next to a field whose accessible
|
|
31
|
+
name is *also* that same text (confirmed on a real login page: a "Username" label next to a field
|
|
32
|
+
that's itself named "Username") was miscounted as two competing candidates and declined, even
|
|
33
|
+
though there's genuinely only one field. `findRuleBasedMatch` now only treats a match as a real
|
|
34
|
+
competing candidate when it's independently resolvable on its own (has a ref and a plausible
|
|
35
|
+
role) — a bare text node repeating the same words is decorative, not a second option. Genuine
|
|
36
|
+
ambiguity (two actually-independent candidates) still declines exactly as before.
|
|
37
|
+
|
|
29
38
|
### Added
|
|
30
39
|
|
|
31
40
|
- **A new `tamash` heal provider — rule-based healing, no AI at all.** `HEALER_PROVIDER=tamash`
|
|
@@ -43,6 +52,15 @@ All notable changes to this project are documented here. Format loosely follows
|
|
|
43
52
|
*why* an action failed, which is inference this provider deliberately doesn't attempt) — a fast,
|
|
44
53
|
free, fully deterministic first line of defense, best suited to well-`.describe()`d,
|
|
45
54
|
Page-Object-style suites.
|
|
55
|
+
- **A new `ollama-local` heal provider for self-hosted Ollama servers.** `HEALER_PROVIDER=ollama-local`
|
|
56
|
+
targets your own `ollama serve` instance or an internal company deployment, instead of Ollama
|
|
57
|
+
Cloud — a deliberately separate provider from `ollama`, not a flag on it, since the two have
|
|
58
|
+
genuinely different auth defaults: Ollama Cloud always requires `OLLAMA_API_KEY`, while
|
|
59
|
+
`OLLAMA_LOCAL_API_KEY` is optional, since a bare `ollama serve` has no authentication at all. Set
|
|
60
|
+
it only if your internal deployment sits behind a reverse proxy or API gateway that requires a
|
|
61
|
+
bearer token — verified against a real HTTP server both ways, confirming the `Authorization`
|
|
62
|
+
header is omitted entirely when no key is set, and sent correctly when one is. Prompted by a real
|
|
63
|
+
support request from a team wanting to use their own internally-hosted `gpt-oss:120b`.
|
|
46
64
|
- **Undescribed, POM-style locator variables now get a real description automatically.** When
|
|
47
65
|
`.describe()` was never called, the healer already fell back to the locator's own variable/
|
|
48
66
|
property name (`txtEmployeeId`) as its best guess at intent — now that raw identifier is decoded
|
package/README.md
CHANGED
|
@@ -40,13 +40,19 @@ Create a file named `.env` in your project folder:
|
|
|
40
40
|
# Master on/off switch. Leave this as true, or remove the line entirely.
|
|
41
41
|
HEALER_ENABLED=true
|
|
42
42
|
|
|
43
|
-
# Pick one: ollama | openai | anthropic | gemini | claude-subscription | copilot-subscription | tamash
|
|
43
|
+
# Pick one: ollama | ollama-local | openai | anthropic | gemini | claude-subscription | copilot-subscription | tamash
|
|
44
44
|
HEALER_PROVIDER=ollama
|
|
45
45
|
|
|
46
46
|
# --- Ollama Cloud (https://ollama.com) ---
|
|
47
47
|
OLLAMA_MODEL=gpt-oss:120b
|
|
48
48
|
OLLAMA_API_KEY=
|
|
49
49
|
|
|
50
|
+
# --- Ollama, self-hosted/internal server (a separate provider from Ollama Cloud above) ---
|
|
51
|
+
# HEALER_PROVIDER=ollama-local
|
|
52
|
+
# OLLAMA_LOCAL_MODEL=gpt-oss:120b
|
|
53
|
+
# OLLAMA_LOCAL_BASE_URL=http://localhost:11434
|
|
54
|
+
# OLLAMA_LOCAL_API_KEY=
|
|
55
|
+
|
|
50
56
|
# --- OpenAI ---
|
|
51
57
|
# OPENAI_MODEL=gpt-4.1-mini
|
|
52
58
|
# OPENAI_API_KEY=
|
|
@@ -87,6 +93,22 @@ OLLAMA_API_KEY=paste_your_key_here
|
|
|
87
93
|
|
|
88
94
|
That's all you need — no other variables required.
|
|
89
95
|
|
|
96
|
+
### Using your own self-hosted Ollama server instead of Ollama Cloud
|
|
97
|
+
|
|
98
|
+
If your team already runs its own Ollama server internally (self-hosted, same model — e.g. `gpt-oss:120b`), point at it directly instead of Ollama Cloud with the separate `ollama-local` provider:
|
|
99
|
+
|
|
100
|
+
```sh
|
|
101
|
+
HEALER_PROVIDER=ollama-local
|
|
102
|
+
OLLAMA_LOCAL_MODEL=gpt-oss:120b
|
|
103
|
+
OLLAMA_LOCAL_BASE_URL=http://your-internal-ollama-host:11434
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
This is a distinct provider from `ollama` above, not a flag on it — the two have genuinely different auth defaults, not just different default hosts:
|
|
107
|
+
|
|
108
|
+
- **A bare `ollama serve` has no authentication at all.** Leave `OLLAMA_LOCAL_API_KEY` unset and it won't send an `Authorization` header — a self-hosted server doesn't need one, and there's no cloud account to authenticate against.
|
|
109
|
+
- **If your deployment sits behind a reverse proxy or API gateway that does require a token**, set `OLLAMA_LOCAL_API_KEY` and it's sent the same way as the cloud provider's key (`Authorization: Bearer <token>`). No other auth scheme (Basic auth, a custom header, mTLS) is currently supported — open an issue if you need one.
|
|
110
|
+
- `OLLAMA_LOCAL_BASE_URL` defaults to `http://localhost:11434` (a plain local `ollama serve`) if you don't set it.
|
|
111
|
+
|
|
90
112
|
### Using your Claude or GitHub Copilot subscription instead of an API key
|
|
91
113
|
|
|
92
114
|
If you don't have an API key issued to you but do have a personal Claude (Pro/Max/Team/Enterprise) or GitHub Copilot subscription (including the free tier), you can use that instead — no billing setup, no key to paste anywhere.
|
package/RELEASE-TESTING.md
CHANGED
|
@@ -15,6 +15,7 @@ currently covered · N/A not applicable to that column.
|
|
|
15
15
|
| Feature | Description | Tested locally | Tested in CI |
|
|
16
16
|
|---|---|---|---|
|
|
17
17
|
| Core action healing (click/fill/check/selectOption/etc.) | Any wrapped Playwright action retries against a healed locator on failure. | ✅ Extensive unit + e2e coverage (many repro specs) | ✅ Every CI run exercises this against the sample repos' own broken locators |
|
|
18
|
+
| Master on/off switch (`HEALER_ENABLED=false`) | A broken locator fails exactly like vanilla Playwright when healing is off; a working locator is unaffected either way. | ✅ Permanent e2e (`healing-disabled.e2e.spec.ts`) — **found with zero coverage anywhere in this repo, ever, until asked directly whether "with and without AI healing" had actually been tested** | ❌ Neither CI workflow runs with healing disabled (`apply-heals`'s own verification step does, but only to confirm an already-applied fix works standalone — not the same as testing a genuinely broken locator with healing off) |
|
|
18
19
|
| `.describe()` context | Human-readable label chained onto a locator, used as the AI's primary description. | ✅ Used throughout the test suite | ✅ Both sample repos' tests use it |
|
|
19
20
|
| Automatic variable-name description fallback | `extractVariableName` (raw identifier) + `decodeVariableName` (decoded phrase + type hint) when `.describe()` isn't called. | ✅ 10+10 unit tests, permanent e2e spec | ❌ Not yet — this release's beta hasn't been pushed to either sample repo's CI yet |
|
|
20
21
|
| Search-scoped snapshots | Sends a narrower excerpt of the accessibility tree when the description matches exactly one node, instead of the full page. | ✅ Live-verified (measured token reduction across several real cases) | 🔎 Silently exercised on every CI heal (it's the default first path), but no dedicated CI assertion checks it specifically |
|
|
@@ -31,13 +32,14 @@ currently covered · N/A not applicable to that column.
|
|
|
31
32
|
| `apply-heals` (permanent fix + PR automation) | Turns a runtime heal into a committed source change; opens a PR in CI. | ✅ Unit (46 tests, all 9 strategies) | ✅ Dedicated CI job, runs every push |
|
|
32
33
|
| `doctor` CLI | Pre-flight checks: provider connectivity, `actionTimeout`, vision capability, missing `.describe()`, inline locators. | ✅ Run live against every provider including `tamash` this session | ❌ Not run as part of either CI workflow |
|
|
33
34
|
| `getDurable()` | Resolves any locator (e.g. `aria-ref=...`) to a durable, reusable equivalent. | ✅ e2e (`get-durable-*-repro`, 4 specs incl. concurrency) | ❌ No CI sample test calls it directly |
|
|
34
|
-
| Provider: `ollama` | API-key provider, Ollama Cloud. | ✅ Verified this session (live calls, real token counts) |
|
|
35
|
+
| Provider: `ollama` | API-key provider, Ollama Cloud. | ✅ Verified this session (live calls, real token counts) | ✅ Both CI workflows now run a `test-ollama` job, confirmed green |
|
|
36
|
+
| Provider: `ollama-local` | Self-hosted Ollama server; `OLLAMA_LOCAL_API_KEY` optional, unlike `ollama`'s required key. | ✅ Verified against a genuine local Ollama installation this session (real `ollama serve`, `qwen2.5:0.5b` pulled and warmed) — confirmed the default `OLLAMA_LOCAL_BASE_URL`, real request/response round-trip (including correct token-usage extraction), and that the real server both works with no `Authorization` header and tolerates one being sent unnecessarily; also confirmed end-to-end via the real `doctor` CLI, not just a direct provider call. (A synthetic fake-HTTP-server test preceded this and is superseded by it.) | ❌ Not used in either CI workflow (no self-hosted Ollama instance available in CI) |
|
|
35
37
|
| Provider: `openai` | API-key provider. | ✅ Re-verified live this release (`doctor` connectivity, real key) | ❌ Not used in either CI workflow |
|
|
36
38
|
| Provider: `anthropic` | API-key provider. | ✅ Re-verified live this release (`doctor` connectivity, real key) | ❌ Not used in either CI workflow |
|
|
37
39
|
| Provider: `gemini` | API-key provider. | ⚠️ Key authenticates and the model responds correctly (verified with a raw request, real `200 OK`), but `gemini-3.6-flash` took 50+ seconds to answer a trivial prompt — far beyond `doctor`'s 15s timeout and this repo's real `actionTimeout: 8000`ms, so it fails both `doctor` and real healing as currently configured, despite the key itself being valid | ❌ Not used in either CI workflow |
|
|
38
40
|
| Provider: `claude-subscription` | No API key — uses a Claude subscription. | ✅ Verified this session | ✅ The Playwright sample repo's CI uses this as its default provider |
|
|
39
41
|
| Provider: `copilot-subscription` | No API key — uses a GitHub Copilot subscription. | ✅ Verified this session | ✅ The Cucumber sample repo's CI uses this as its default provider |
|
|
40
|
-
| Provider: `tamash` (no AI) | Zero-dependency rule-based healing. | ✅ Verified
|
|
42
|
+
| Provider: `tamash` (no AI) | Zero-dependency rule-based healing. | ✅ Verified against the full test suite in both sample repos (all files, cleared cache, run twice each for stability) | ✅ `test-tamash` added to and passing in both sample repos' CI |
|
|
41
43
|
| Non-`@playwright/test` runner support (`bindPageActions`/`bindContext`) | Manual binding for Cucumber, Jest, or a plain script. | ✅ Live-verified via the Cucumber sample repo, this session | ✅ The Cucumber sample repo's entire CI run *is* this |
|
|
42
44
|
| `waitFor()`/`dragTo`/`drop`/`expect()` exclusions | Deliberately never healed — state checks and two-sided actions can't be safely guessed at. | ✅ e2e (`wait-for-not-healed`) | ❌ No CI sample test currently exercises these specifically |
|
|
43
45
|
|
|
@@ -93,6 +95,15 @@ tamash-playwright bug, a real environmental precondition, handled in the test th
|
|
|
93
95
|
suite would (dismiss it if present, don't fail if it never appeared). Stable across 6 repeat runs
|
|
94
96
|
after that fix.
|
|
95
97
|
|
|
98
|
+
**Full local e2e suite re-verified after the popup fix specifically** (a real gap this session had
|
|
99
|
+
left open — the fix touches `locator.binding.ts`, the shared file every action goes through, and
|
|
100
|
+
had only been checked against the two new specs plus unit tests until asked directly whether all
|
|
101
|
+
local testing was actually complete): 8 failures on the first full run, 4 matching the
|
|
102
|
+
already-known pre-existing repro scripts, and 4 new (`adjacent-sibling-healing`,
|
|
103
|
+
`employee-id-healing`, `example-orangehrm-add-employee`, `iframe-ref-repro`) — all 4 of the new
|
|
104
|
+
ones passed cleanly when rerun individually, confirming the same parallel-load contention pattern
|
|
105
|
+
already documented elsewhere in this file, not a regression from the popup fix.
|
|
106
|
+
|
|
96
107
|
**Found in the beta.1 publish itself, fixed as beta.2**: the actual published `beta.1` tarball
|
|
97
108
|
contained `dist/healer/providers/claude-cli.js`/`copilot-cli.js` — compiled output with no
|
|
98
109
|
corresponding source file anywhere in the repo, from an abandoned, never-committed, never-wired-up
|
|
@@ -135,3 +146,36 @@ contention against a live AI provider under `fullyParallel: true`, not a determi
|
|
|
135
146
|
raw request outside the package's own code, isolating "bad key" from "deprecated model" from
|
|
136
147
|
"model too slow for the configured timeout" as three genuinely distinct possibilities before
|
|
137
148
|
concluding which one it actually was.
|
|
149
|
+
- **`prompt.ts` — the parsing boundary shared by all 7 providers — had zero unit test coverage**
|
|
150
|
+
until asked directly whether "all scenarios" had testing coverage. Added 26 tests for
|
|
151
|
+
`parseSuggestion`/`parseVisionSuggestion`/`parseActionTacticSuggestion`/the three prompt builders/
|
|
152
|
+
`extractOpenAICompatibleUsage`, covering every valid strategy shape, markdown-wrapped JSON,
|
|
153
|
+
missing-required-field rejection, out-of-range vision coordinates, and unrecognized action
|
|
154
|
+
tactics. Caught a real bug in the test itself while writing it (a regex expecting "screenshot is
|
|
155
|
+
attached" against the actual "screenshot of the page is attached" text) — fixed before trusting
|
|
156
|
+
the result.
|
|
157
|
+
- **A real, previously-unknown `tamash` limitation, found by attempting to add CI coverage for it,
|
|
158
|
+
not by reasoning about it in the abstract**: verifying `HEALER_PROVIDER=tamash` against the
|
|
159
|
+
Cucumber sample repo's actual committed scenarios (not just this package's own fixtures) made
|
|
160
|
+
every single scenario decline. Root cause, confirmed against the real live login page's own
|
|
161
|
+
captured snapshot: a floating label rendered as its own text node (`text: " Username"`) sits
|
|
162
|
+
right next to a field whose own accessible name is *also* "Username" — two genuinely separate DOM
|
|
163
|
+
nodes saying the same thing, miscounted as two competing candidates. **Fixed** in
|
|
164
|
+
`findRuleBasedMatch` (see `[0.11.0]`'s own Fixed entry) — a match only counts as a real competitor
|
|
165
|
+
now when it's independently resolvable (its own ref + a plausible role), not just any text/name
|
|
166
|
+
containing the phrase. The exact real shape is now a permanent, *passing* unit test, not a
|
|
167
|
+
documented limitation.
|
|
168
|
+
- **Two more real, unrelated causes surfaced while re-verifying after that fix** — worth recording
|
|
169
|
+
separately since they were initially, wrongly suspected to be the same bug or live-site
|
|
170
|
+
flakiness before being isolated: (1) orangehrm.com runs a second real interstitial beyond the
|
|
171
|
+
cookie banner — a promotional event banner — confirmed reproducible specifically from a GitHub
|
|
172
|
+
Actions runner's IP; added a dismiss-if-present step alongside the existing cookie-banner one,
|
|
173
|
+
same discipline. (2) Several pre-existing `.describe()` texts in both sample repos (e.g. "Your
|
|
174
|
+
Email Address Field (Homepage)", "User Name Textbox") are human-natural paraphrases that don't
|
|
175
|
+
literally appear on the real page ("Your email address", "Username") — invisible to AI-based
|
|
176
|
+
healing (which tolerates paraphrasing) but a hard miss for `tamash`'s literal text matching.
|
|
177
|
+
Fixed by rewording the descriptions to match real page text, not by weakening the matcher — this
|
|
178
|
+
is `tamash`'s real, honest tradeoff (see its own README section) working exactly as documented,
|
|
179
|
+
not a bug. **Consequence, fully resolved**: `test-tamash` is now added to and passing in both
|
|
180
|
+
sample repos' CI (verified locally against the complete test suite in each, cache cleared, run
|
|
181
|
+
twice for stability, before pushing).
|
package/dist/cli/doctor.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":"AA0MA,wBAAsB,SAAS,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BlE"}
|
package/dist/cli/doctor.js
CHANGED
|
@@ -48,9 +48,10 @@ async function checkProviderConnectivity() {
|
|
|
48
48
|
if (!providerName) {
|
|
49
49
|
console.log(` ${TAG_WARN} HEALER_PROVIDER is not set. No AI provider is configured, so self-healing will never`);
|
|
50
50
|
console.log(' recover a failed action — it will just fail normally.');
|
|
51
|
-
console.log(' Set HEALER_PROVIDER (ollama | openai | anthropic | gemini |
|
|
52
|
-
console.log(' copilot-subscription | tamash) plus its API key/model (or, for
|
|
53
|
-
console.log(' copilot-subscription, a subscription login; tamash needs neither —
|
|
51
|
+
console.log(' Set HEALER_PROVIDER (ollama | ollama-local | openai | anthropic | gemini |');
|
|
52
|
+
console.log(' claude-subscription | copilot-subscription | tamash) plus its API key/model (or, for');
|
|
53
|
+
console.log(' claude-subscription/copilot-subscription, a subscription login; tamash needs neither —');
|
|
54
|
+
console.log(' see its own docs).');
|
|
54
55
|
record('AI Provider', 'WARN', 'HEALER_PROVIDER is not set');
|
|
55
56
|
return;
|
|
56
57
|
}
|
package/dist/cli/doctor.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA4B;AAC5B,mDAAsD;AACtD,sCAA6C;AAC7C,mFAA0F;AAC1F,iDAA2E;AAC3E,2DAAyD;AACzD,mDAAwH;AAExH,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAE7D,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,qBAAqB,GAAG,8DAA8D,CAAC;AAE7F,MAAM,MAAM,GAAG,IAAA,qBAAK,EAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,QAAQ,GAAG,IAAA,sBAAM,EAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,QAAQ,GAAG,IAAA,mBAAG,EAAC,QAAQ,CAAC,CAAC;AAC/B,MAAM,QAAQ,GAAG,IAAA,oBAAI,EAAC,QAAQ,CAAC,CAAC;AAChC,MAAM,QAAQ,GAAG,IAAA,mBAAG,EAAC,QAAQ,CAAC,CAAC;AAC/B,MAAM,OAAO,GAAG,IAAA,mBAAG,EAAC,QAAQ,CAAC,CAAC;AAG9B,MAAM,YAAY,GAA0C;IAC1D,EAAE,EAAE,qBAAK;IACT,IAAI,EAAE,sBAAM;IACZ,IAAI,EAAE,mBAAG;IACT,IAAI,EAAE,oBAAI;IACV,GAAG,EAAE,mBAAG;CACT,CAAC;AAMF,MAAM,OAAO,GAAkB,EAAE,CAAC;AAClC,SAAS,MAAM,CAAC,KAAa,EAAE,MAAc,EAAE,MAAc;IAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY;IACnB,IAAA,uBAAO,EAAC,SAAS,CAAC,CAAC;IACnB,IAAA,2BAAW,EACT,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAA,2BAAW,EAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAC3F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,yBAAyB;IACtC,IAAA,uBAAO,EAAC,aAAa,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAA,mBAAG,EAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,IAAA,yBAAgB,GAAE,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC;QAC5G,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,yCAAyC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,uFAAuF,CAAC,CAAC;QAClH,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/cli/doctor.ts"],"names":[],"mappings":";;;;;;AAAA,gDAAwB;AACxB,oDAA4B;AAC5B,mDAAsD;AACtD,sCAA6C;AAC7C,mFAA0F;AAC1F,iDAA2E;AAC3E,2DAAyD;AACzD,mDAAwH;AAExH,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;AAE7D,MAAM,uBAAuB,GAAG,KAAK,CAAC;AACtC,MAAM,qBAAqB,GAAG,8DAA8D,CAAC;AAE7F,MAAM,MAAM,GAAG,IAAA,qBAAK,EAAC,MAAM,CAAC,CAAC;AAC7B,MAAM,QAAQ,GAAG,IAAA,sBAAM,EAAC,QAAQ,CAAC,CAAC;AAClC,MAAM,QAAQ,GAAG,IAAA,mBAAG,EAAC,QAAQ,CAAC,CAAC;AAC/B,MAAM,QAAQ,GAAG,IAAA,oBAAI,EAAC,QAAQ,CAAC,CAAC;AAChC,MAAM,QAAQ,GAAG,IAAA,mBAAG,EAAC,QAAQ,CAAC,CAAC;AAC/B,MAAM,OAAO,GAAG,IAAA,mBAAG,EAAC,QAAQ,CAAC,CAAC;AAG9B,MAAM,YAAY,GAA0C;IAC1D,EAAE,EAAE,qBAAK;IACT,IAAI,EAAE,sBAAM;IACZ,IAAI,EAAE,mBAAG;IACT,IAAI,EAAE,oBAAI;IACV,GAAG,EAAE,mBAAG;CACT,CAAC;AAMF,MAAM,OAAO,GAAkB,EAAE,CAAC;AAClC,SAAS,MAAM,CAAC,KAAa,EAAE,MAAc,EAAE,MAAc;IAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;AAC1C,CAAC;AAED,SAAS,YAAY;IACnB,IAAA,uBAAO,EAAC,SAAS,CAAC,CAAC;IACnB,IAAA,2BAAW,EACT,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAC7B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,IAAA,2BAAW,EAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,CAC3F,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,yBAAyB;IACtC,IAAA,uBAAO,EAAC,aAAa,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,IAAA,mBAAG,EAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACpG,IAAI,CAAC,IAAA,yBAAgB,GAAE,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC;QAC5G,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,yCAAyC,CAAC,CAAC;QACxE,OAAO;IACT,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACjD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,uFAAuF,CAAC,CAAC;QAClH,OAAO,CAAC,GAAG,CAAC,gEAAgE,CAAC,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,qFAAqF,CAAC,CAAC;QACnG,OAAO,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAC;QAC/G,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QAC3C,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,4BAA4B,CAAC,CAAC;QAC5D,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,2BAAe,GAAE,CAAC;IACnC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,oBAAoB,YAAY,wDAAwD,CAAC,CAAC;QACnH,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,mBAAmB,YAAY,6BAA6B,CAAC,CAAC;QAC5F,OAAO;IACT,CAAC;IAED,4FAA4F;IAC5F,6FAA6F;IAC7F,gGAAgG;IAChG,uEAAuE;IACvE,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAA,qBAAK,EAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,+EAA+E,CAAC,CAAC;QACvJ,MAAM,CAAC,iBAAiB,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,+BAA+B,CAAC,CAAC;IACnF,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAA,mBAAG,EAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,kGAAkG,CAAC,CAAC;QACvK,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAC,IAAI,uCAAuC,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAA,oBAAI,EAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC;QAC5C,MAAM,EAAE,OAAO;QACf,WAAW,EAAE,6CAA6C;QAC1D,YAAY,EAAE,qBAAqB;QACnC,SAAS,EAAE,uBAAuB;KACnC,CAAC,CAAC;IAEH,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,iBAAiB,QAAQ,CAAC,IAAI,gBAAgB,CAAC,CAAC;QACvE,MAAM,CAAC,aAAa,EAAE,IAAI,EAAE,gBAAgB,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/D,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,wCAAwC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC;QACnF,OAAO,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC;QAC5G,MAAM,CAAC,aAAa,EAAE,MAAM,EAAE,0BAA0B,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,WAAgC;IAC1D,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAElE,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,iDAAiD,CAAC,CAAC;QAC1E,MAAM,CAAC,wBAAwB,EAAE,IAAI,EAAE,+CAA+C,CAAC,CAAC;QACxF,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,UAAU,IAAA,oBAAI,EAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,oCAAoC,CAAC,CAAC;IAC7G,IAAA,2BAAW,EACT,CAAC,UAAU,EAAE,UAAU,EAAE,SAAS,CAAC,EACnC,eAAe,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;QAC9B,MAAM,YAAY,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAChE,OAAO;YACL,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO;YAChD,IAAA,mBAAG,EAAC,IAAA,6BAAa,EAAC,GAAG,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;YACzD,IAAA,2BAAW,EAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACjC,CAAC;IACJ,CAAC,CAAC,EACF,MAAM,CACP,CAAC;IACF,MAAM,CAAC,wBAAwB,EAAE,MAAM,EAAE,GAAG,eAAe,CAAC,MAAM,iCAAiC,CAAC,CAAC;IAErG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,6EAA6E,QAAQ,sBAAsB,CAAC,CAAC;IACzH,OAAO,CAAC,GAAG,CAAC,2FAA2F,CAAC,CAAC;IACzG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,6EAA6E,CAAC,CAAC,CAAC;IAChG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,sGAAsG,CAAC,CAAC;IACpH,OAAO,CAAC,GAAG,CAAC,+EAA+E,CAAC,CAAC;IAC7F,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,uGAAuG,CAAC,CAAC;IACrH,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;IACtG,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,wGAAwG,CAAC,CAAC,CAAC;IAC3H,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,oDAAoD,CAAC,CAAC,CAAC;AACzE,CAAC;AAED,8FAA8F;AAC9F,4FAA4F;AAC5F,iGAAiG;AACjG,SAAS,oBAAoB,CAAC,WAAgC;IAC5D,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,gDAAgD,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,UAAU,WAAW,CAAC,MAAM,uCAAuC,SAAS,gBAAgB,CAAC,CAAC;IACvH,OAAO,CAAC,GAAG,CAAC,oGAAoG,CAAC,CAAC;IAClH,OAAO,CAAC,GAAG,CAAC,oGAAoG,CAAC,CAAC;IAClH,OAAO,CAAC,GAAG,CAAC,qGAAqG,CAAC,CAAC;IACnH,OAAO,CAAC,GAAG,CAAC,6EAA6E,CAAC,CAAC;IAC3F,MAAM,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,6BAA6B,SAAS,UAAU,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,uBAAuB;IAC9B,IAAA,uBAAO,EAAC,gBAAgB,CAAC,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAA,sCAAkB,GAAE,CAAC;IAEpC,QAAQ,MAAM,CAAC,MAAM,EAAE,CAAC;QACtB,KAAK,WAAW;YACd,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,QAAQ,GAAG,wFAAwF,CAAC,CAAC;YACxH,OAAO,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAC;YAC/G,OAAO,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAC;YAC/G,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;YAC5D,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,qCAAqC,CAAC,CAAC;YACxE,OAAO;QACT,KAAK,SAAS;YACZ,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,kCAAkC,MAAM,CAAC,UAAU,GAAG,CAAC,CAAC;YACjF,OAAO,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;YAC7G,OAAO,CAAC,GAAG,CAAC,8FAA8F,CAAC,CAAC;YAC5G,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,2EAA2E,CAAC,CAAC,CAAC;YAC9F,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,2BAA2B,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;YACjF,OAAO;QACT,KAAK,WAAW;YACd,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,UAAU,wBAAwB,MAAM,CAAC,aAAa,gBAAgB,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;YACjI,OAAO,CAAC,GAAG,CAAC,iGAAiG,CAAC,CAAC;YAC/G,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACvE,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,MAAM,CAAC,aAAa,iBAAiB,MAAM,CAAC,WAAW,GAAG,CAAC,CAAC;YAC/G,OAAO;QACT,KAAK,IAAI;YACP,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,MAAM,CAAC,UAAU,wBAAwB,MAAM,CAAC,aAAa,oCAAoC,CAAC,CAAC;YAC9H,MAAM,CAAC,gBAAgB,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC,UAAU,wBAAwB,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC;YACrG,OAAO;IACX,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,IAAc;IAClC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjE,OAAO,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,IAAI,OAAO,CAAC,CAAC;AACvD,CAAC;AAEM,KAAK,oBAAoB,IAAI,GAAa,EAAE;IACjD,OAAO,CAAC,GAAG,CAAC,IAAA,oBAAI,EAAC,0BAA0B,CAAC,CAAC,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAEjC,MAAM,yBAAyB,EAAE,CAAC;IAElC,uBAAuB,EAAE,CAAC;IAE1B,IAAA,uBAAO,EAAC,UAAU,CAAC,CAAC;IACpB,MAAM,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,cAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,CAAC,IAAI,OAAO,CAAC;IACrE,OAAO,CAAC,GAAG,CAAC,cAAc,WAAW,kBAAkB,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,IAAA,mBAAG,EAAC,gFAAgF,CAAC,CAAC,CAAC;IAEnG,MAAM,WAAW,GAAG,IAAA,gCAAiB,EAAC,OAAO,CAAC,CAAC;IAC/C,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAChC,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,YAAY,EAAE,CAAC;IAEf,iGAAiG;IACjG,4FAA4F;IAC5F,8FAA8F;IAC9F,oFAAoF;IACpF,MAAM,IAAA,qDAA8B,GAAE,CAAC;AACzC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-locator.d.ts","sourceRoot":"","sources":["../../src/healer/durable-locator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAe1E,wBAAsB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAY5F;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAcF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CA6D9D;AAKD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBtE;AAED,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;CAAE,CAAC;AAOvE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,CAAC,GAAG,CAAK,GAAG,sBAAsB,EAAE,CAqE7H;AAED,MAAM,MAAM,kBAAkB,GAAG;IAQ/B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAYF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CA2DhI;AAUD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAElE;AAsBD,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAwDlG;AA6CD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"durable-locator.d.ts","sourceRoot":"","sources":["../../src/healer/durable-locator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAe1E,wBAAsB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,EAAE,SAAS,SAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAY5F;AAED,MAAM,MAAM,UAAU,GAAG;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAcF,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,EAAE,CA6D9D;AAKD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAgBtE;AAED,MAAM,MAAM,sBAAsB,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAA;CAAE,CAAC;AAOvE,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,GAAE,CAAC,GAAG,CAAK,GAAG,sBAAsB,EAAE,CAqE7H;AAED,MAAM,MAAM,kBAAkB,GAAG;IAQ/B,iBAAiB,EAAE,MAAM,CAAC;CAC3B,CAAC;AAYF,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CA2DhI;AAUD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAElE;AAsBD,wBAAgB,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAwDlG;AA6CD,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,YAAY,CA4EtH;AAUD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,SAAM,EAAE,aAAa,SAAI,GAAG,MAAM,EAAE,CAQhI;AAgBD,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAE9D;AAOD,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAqE1F;AAgBD,wBAAgB,mCAAmC,CAAC,YAAY,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS,CAiCxG"}
|
|
@@ -381,13 +381,28 @@ function roleIsPlausibleTarget(actualRole, expectedRole) {
|
|
|
381
381
|
function findRuleBasedMatch(nodes, phrase, expectedRole) {
|
|
382
382
|
const needle = phrase.toLowerCase();
|
|
383
383
|
const matches = nodes.filter((n) => (n.text?.toLowerCase().includes(needle)) || (n.name?.toLowerCase().includes(needle)));
|
|
384
|
+
// A match only counts as a competing CANDIDATE if it's independently resolvable on its own --
|
|
385
|
+
// has a ref and a plausible role for what's expected. A bare text node, or a non-interactive
|
|
386
|
+
// wrapper, that merely repeats the same words is decorative, not a second option: confirmed
|
|
387
|
+
// live against a real login page whose floating label text ("Username") sits right next to a
|
|
388
|
+
// field whose own accessible name is ALSO "Username" -- two separate DOM nodes describing the
|
|
389
|
+
// same field, which used to be miscounted as two genuine candidates and declined outright.
|
|
390
|
+
// Checked before the single-match fast path below so it applies whether the phrase matched once
|
|
391
|
+
// or several times.
|
|
392
|
+
const realCandidates = matches.filter((n) => n.ref && roleIsPlausibleTarget(n.role, expectedRole));
|
|
393
|
+
if (realCandidates.length === 1) {
|
|
394
|
+
return { strategy: 'ref', ref: realCandidates[0].ref };
|
|
395
|
+
}
|
|
396
|
+
if (realCandidates.length > 1) {
|
|
397
|
+
return { strategy: 'none' };
|
|
398
|
+
}
|
|
399
|
+
// No directly-resolvable candidate at all -- what's left, if anything, is a bare label/wrapper
|
|
400
|
+
// to widen out from. Still requires the phrase to match exactly one such node; more than one
|
|
401
|
+
// (the original "Last Name" appearing in two separate rows) stays ambiguous, unchanged.
|
|
384
402
|
if (matches.length !== 1) {
|
|
385
403
|
return { strategy: 'none' };
|
|
386
404
|
}
|
|
387
405
|
const anchor = matches[0];
|
|
388
|
-
if (anchor.ref && roleIsPlausibleTarget(anchor.role, expectedRole)) {
|
|
389
|
-
return { strategy: 'ref', ref: anchor.ref };
|
|
390
|
-
}
|
|
391
406
|
const anchorIndex = nodes.indexOf(anchor);
|
|
392
407
|
function findAncestor(fromIndex, wantDepth) {
|
|
393
408
|
for (let i = fromIndex - 1; i >= 0; i--) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"durable-locator.js","sourceRoot":"","sources":["../../src/healer/durable-locator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"durable-locator.js","sourceRoot":"","sources":["../../src/healer/durable-locator.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/healer/providers/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/healer/providers/index.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,YAAY,EAAE,YAAY,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAYlH,wBAAgB,eAAe,IAAI,YAAY,GAAG,IAAI,CAmCrD"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.getHealProvider = getHealProvider;
|
|
4
4
|
const ollama_1 = require("./ollama");
|
|
5
|
+
const ollama_local_1 = require("./ollama-local");
|
|
5
6
|
const openai_1 = require("./openai");
|
|
6
7
|
const anthropic_1 = require("./anthropic");
|
|
7
8
|
const gemini_1 = require("./gemini");
|
|
@@ -25,6 +26,9 @@ function getHealProvider() {
|
|
|
25
26
|
case 'ollama':
|
|
26
27
|
cachedProvider = (0, ollama_1.createOllamaProvider)();
|
|
27
28
|
break;
|
|
29
|
+
case 'ollama-local':
|
|
30
|
+
cachedProvider = (0, ollama_local_1.createOllamaLocalProvider)();
|
|
31
|
+
break;
|
|
28
32
|
case 'openai':
|
|
29
33
|
cachedProvider = (0, openai_1.createOpenAIProvider)();
|
|
30
34
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/healer/providers/index.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAChD,qCAAgD;AAChD,2CAAsD;AACtD,qCAAgD;AAChD,+DAAyE;AACzE,iEAA2E;AAC3E,2DAAoE;AAKpE,IAAI,cAA+C,CAAC;AAEpD,uFAAuF;AACvF,qFAAqF;AACrF,oFAAoF;AACpF,8FAA8F;AAC9F,4FAA4F;AAC5F,6FAA6F;AAC7F,gGAAgG;AAChG,uEAAuE;AACvE;IACE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,QAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACpC,KAAK,QAAQ;YACX,cAAc,GAAG,IAAA,6BAAoB,GAAE,CAAC;YACxC,MAAM;QACR,KAAK,QAAQ;YACX,cAAc,GAAG,IAAA,6BAAoB,GAAE,CAAC;YACxC,MAAM;QACR,KAAK,WAAW;YACd,cAAc,GAAG,IAAA,mCAAuB,GAAE,CAAC;YAC3C,MAAM;QACR,KAAK,QAAQ;YACX,cAAc,GAAG,IAAA,6BAAoB,GAAE,CAAC;YACxC,MAAM;QACR,KAAK,qBAAqB;YACxB,cAAc,GAAG,IAAA,sDAAgC,GAAE,CAAC;YACpD,MAAM;QACR,KAAK,sBAAsB;YACzB,cAAc,GAAG,IAAA,wDAAiC,GAAE,CAAC;YACrD,MAAM;QACR,KAAK,QAAQ;YACX,cAAc,GAAG,IAAA,iDAA6B,GAAE,CAAC;YACjD,MAAM;QACR;YACE,cAAc,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/healer/providers/index.ts"],"names":[],"mappings":";;;AAAA,qCAAgD;AAChD,iDAA2D;AAC3D,qCAAgD;AAChD,2CAAsD;AACtD,qCAAgD;AAChD,+DAAyE;AACzE,iEAA2E;AAC3E,2DAAoE;AAKpE,IAAI,cAA+C,CAAC;AAEpD,uFAAuF;AACvF,qFAAqF;AACrF,oFAAoF;AACpF,8FAA8F;AAC9F,4FAA4F;AAC5F,6FAA6F;AAC7F,gGAAgG;AAChG,uEAAuE;AACvE;IACE,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,QAAQ,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACpC,KAAK,QAAQ;YACX,cAAc,GAAG,IAAA,6BAAoB,GAAE,CAAC;YACxC,MAAM;QACR,KAAK,cAAc;YACjB,cAAc,GAAG,IAAA,wCAAyB,GAAE,CAAC;YAC7C,MAAM;QACR,KAAK,QAAQ;YACX,cAAc,GAAG,IAAA,6BAAoB,GAAE,CAAC;YACxC,MAAM;QACR,KAAK,WAAW;YACd,cAAc,GAAG,IAAA,mCAAuB,GAAE,CAAC;YAC3C,MAAM;QACR,KAAK,QAAQ;YACX,cAAc,GAAG,IAAA,6BAAoB,GAAE,CAAC;YACxC,MAAM;QACR,KAAK,qBAAqB;YACxB,cAAc,GAAG,IAAA,sDAAgC,GAAE,CAAC;YACpD,MAAM;QACR,KAAK,sBAAsB;YACzB,cAAc,GAAG,IAAA,wDAAiC,GAAE,CAAC;YACrD,MAAM;QACR,KAAK,QAAQ;YACX,cAAc,GAAG,IAAA,iDAA6B,GAAE,CAAC;YACjD,MAAM;QACR;YACE,cAAc,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-local.d.ts","sourceRoot":"","sources":["../../../src/healer/providers/ollama-local.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAsB,YAAY,EAAsH,MAAM,SAAS,CAAC;AAiBpL,wBAAgB,yBAAyB,IAAI,YAAY,GAAG,IAAI,CAuM/D"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createOllamaLocalProvider = createOllamaLocalProvider;
|
|
4
|
+
const prompt_1 = require("./prompt");
|
|
5
|
+
const vision_models_1 = require("./vision-models");
|
|
6
|
+
// Fallback only — normally overridden by SuggestSelectorInput.timeoutMs, which mirrors the
|
|
7
|
+
// Playwright project's configured actionTimeout so the healer never outlasts the action budget.
|
|
8
|
+
const REQUEST_TIMEOUT_MS = 15000;
|
|
9
|
+
// A deliberately separate provider from `ollama` (ollama.ts), not a flag on it -- the two have
|
|
10
|
+
// genuinely different auth defaults, not just different default hosts. Ollama Cloud always
|
|
11
|
+
// requires OLLAMA_API_KEY; a self-hosted/internal Ollama server reached via OLLAMA_LOCAL_BASE_URL
|
|
12
|
+
// varies by deployment -- a bare `ollama serve` has no auth at all, but plenty of real internal
|
|
13
|
+
// deployments sit behind a reverse proxy or API gateway that does require a bearer token. Rather
|
|
14
|
+
// than guess either way, OLLAMA_LOCAL_API_KEY is optional: attach it when the deployment needs
|
|
15
|
+
// one, leave it unset when it doesn't. Keeping this as its own provider name (rather than making
|
|
16
|
+
// ollama.ts's own key optional) means the cloud provider's real requirement is never weakened,
|
|
17
|
+
// and `doctor`/reports/logs can tell at a glance which kind of endpoint actually served a heal.
|
|
18
|
+
function createOllamaLocalProvider() {
|
|
19
|
+
const apiKey = process.env.OLLAMA_LOCAL_API_KEY;
|
|
20
|
+
const model = process.env.OLLAMA_LOCAL_MODEL;
|
|
21
|
+
if (!model) {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
const baseUrl = (process.env.OLLAMA_LOCAL_BASE_URL ?? 'http://localhost:11434').replace(/\/+$/, '');
|
|
25
|
+
const supportsVision = (0, vision_models_1.isVisionCapableModel)('ollama', model);
|
|
26
|
+
const headers = { 'content-type': 'application/json' };
|
|
27
|
+
if (apiKey) {
|
|
28
|
+
headers.authorization = `Bearer ${apiKey}`;
|
|
29
|
+
}
|
|
30
|
+
return {
|
|
31
|
+
name: `ollama-local:${model}`,
|
|
32
|
+
supportsVision,
|
|
33
|
+
async suggestSelector(input) {
|
|
34
|
+
const controller = new AbortController();
|
|
35
|
+
const timeout = setTimeout(() => controller.abort(), input.timeoutMs ?? REQUEST_TIMEOUT_MS);
|
|
36
|
+
try {
|
|
37
|
+
// Ollama's native endpoint (`/api/chat`), not the OpenAI-compatible `/v1/chat/completions`
|
|
38
|
+
// path -- same reasoning as ollama.ts: this is what a real Ollama server (cloud or local)
|
|
39
|
+
// actually serves.
|
|
40
|
+
const response = await fetch(`${baseUrl}/api/chat`, {
|
|
41
|
+
method: 'POST',
|
|
42
|
+
signal: controller.signal,
|
|
43
|
+
headers,
|
|
44
|
+
body: JSON.stringify({
|
|
45
|
+
model,
|
|
46
|
+
stream: false,
|
|
47
|
+
format: 'json',
|
|
48
|
+
options: { temperature: 0 },
|
|
49
|
+
messages: [
|
|
50
|
+
{ role: 'system', content: prompt_1.SYSTEM_PROMPT },
|
|
51
|
+
{ role: 'user', content: (0, prompt_1.buildUserPrompt)(input) },
|
|
52
|
+
],
|
|
53
|
+
}),
|
|
54
|
+
});
|
|
55
|
+
if (!response.ok) {
|
|
56
|
+
console.warn(`[self-healer] Ollama (local) request failed: ${response.status} ${response.statusText}`);
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
const payload = await response.json();
|
|
60
|
+
const content = payload.message?.content;
|
|
61
|
+
if (!content) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
const suggestion = (0, prompt_1.parseSuggestion)(content);
|
|
65
|
+
if (!suggestion) {
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
const inputTokens = payload.prompt_eval_count;
|
|
69
|
+
const outputTokens = payload.eval_count;
|
|
70
|
+
return {
|
|
71
|
+
suggestion,
|
|
72
|
+
usage: {
|
|
73
|
+
inputTokens,
|
|
74
|
+
outputTokens,
|
|
75
|
+
totalTokens: inputTokens !== undefined && outputTokens !== undefined ? inputTokens + outputTokens : undefined,
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
81
|
+
console.warn(`[self-healer] Ollama (local) provider error: ${reason}`);
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
clearTimeout(timeout);
|
|
86
|
+
}
|
|
87
|
+
},
|
|
88
|
+
async suggestSelectorFromImage(input) {
|
|
89
|
+
const controller = new AbortController();
|
|
90
|
+
const timeout = setTimeout(() => controller.abort(), input.timeoutMs ?? REQUEST_TIMEOUT_MS);
|
|
91
|
+
try {
|
|
92
|
+
const response = await fetch(`${baseUrl}/api/chat`, {
|
|
93
|
+
method: 'POST',
|
|
94
|
+
signal: controller.signal,
|
|
95
|
+
headers,
|
|
96
|
+
body: JSON.stringify({
|
|
97
|
+
model,
|
|
98
|
+
stream: false,
|
|
99
|
+
format: 'json',
|
|
100
|
+
options: { temperature: 0 },
|
|
101
|
+
messages: [
|
|
102
|
+
{ role: 'system', content: prompt_1.VISION_SYSTEM_PROMPT },
|
|
103
|
+
{ role: 'user', content: (0, prompt_1.buildVisionUserPrompt)(input), images: [input.imageBase64] },
|
|
104
|
+
],
|
|
105
|
+
}),
|
|
106
|
+
});
|
|
107
|
+
if (!response.ok) {
|
|
108
|
+
console.warn(`[self-healer] Ollama (local) vision request failed: ${response.status} ${response.statusText}`);
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
const payload = await response.json();
|
|
112
|
+
const content = payload.message?.content;
|
|
113
|
+
if (!content) {
|
|
114
|
+
return null;
|
|
115
|
+
}
|
|
116
|
+
const point = (0, prompt_1.parseVisionSuggestion)(content);
|
|
117
|
+
if (!point) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const inputTokens = payload.prompt_eval_count;
|
|
121
|
+
const outputTokens = payload.eval_count;
|
|
122
|
+
return {
|
|
123
|
+
point,
|
|
124
|
+
usage: {
|
|
125
|
+
inputTokens,
|
|
126
|
+
outputTokens,
|
|
127
|
+
totalTokens: inputTokens !== undefined && outputTokens !== undefined ? inputTokens + outputTokens : undefined,
|
|
128
|
+
},
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
catch (error) {
|
|
132
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
133
|
+
console.warn(`[self-healer] Ollama (local) vision provider error: ${reason}`);
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
finally {
|
|
137
|
+
clearTimeout(timeout);
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
async suggestActionTactic(input) {
|
|
141
|
+
const controller = new AbortController();
|
|
142
|
+
const timeout = setTimeout(() => controller.abort(), input.timeoutMs ?? REQUEST_TIMEOUT_MS);
|
|
143
|
+
try {
|
|
144
|
+
const response = await fetch(`${baseUrl}/api/chat`, {
|
|
145
|
+
method: 'POST',
|
|
146
|
+
signal: controller.signal,
|
|
147
|
+
headers,
|
|
148
|
+
body: JSON.stringify({
|
|
149
|
+
model,
|
|
150
|
+
stream: false,
|
|
151
|
+
format: 'json',
|
|
152
|
+
options: { temperature: 0 },
|
|
153
|
+
messages: [
|
|
154
|
+
{ role: 'system', content: prompt_1.ACTION_RECOVERY_SYSTEM_PROMPT },
|
|
155
|
+
{ role: 'user', content: (0, prompt_1.buildActionRecoveryUserPrompt)(input) },
|
|
156
|
+
],
|
|
157
|
+
}),
|
|
158
|
+
});
|
|
159
|
+
if (!response.ok) {
|
|
160
|
+
console.warn(`[self-healer] Ollama (local) action-recovery request failed: ${response.status} ${response.statusText}`);
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
const payload = await response.json();
|
|
164
|
+
const content = payload.message?.content;
|
|
165
|
+
if (!content) {
|
|
166
|
+
return null;
|
|
167
|
+
}
|
|
168
|
+
const tactic = (0, prompt_1.parseActionTacticSuggestion)(content);
|
|
169
|
+
if (!tactic) {
|
|
170
|
+
return null;
|
|
171
|
+
}
|
|
172
|
+
const inputTokens = payload.prompt_eval_count;
|
|
173
|
+
const outputTokens = payload.eval_count;
|
|
174
|
+
return {
|
|
175
|
+
tactic,
|
|
176
|
+
usage: {
|
|
177
|
+
inputTokens,
|
|
178
|
+
outputTokens,
|
|
179
|
+
totalTokens: inputTokens !== undefined && outputTokens !== undefined ? inputTokens + outputTokens : undefined,
|
|
180
|
+
},
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
185
|
+
console.warn(`[self-healer] Ollama (local) action-recovery provider error: ${reason}`);
|
|
186
|
+
return null;
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
clearTimeout(timeout);
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=ollama-local.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-local.js","sourceRoot":"","sources":["../../../src/healer/providers/ollama-local.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "tamash-playwright",
|
|
3
|
-
"version": "0.11.0-beta.
|
|
3
|
+
"version": "0.11.0-beta.4",
|
|
4
4
|
"description": "Plug and Play Self-healing for Playwright and automatically recovers broken selectors using an AI model (Ollama, OpenAI, Anthropic, Gemini, or a Claude/GitHub Copilot subscription).",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/usage.md
CHANGED
|
@@ -51,13 +51,19 @@ That's the whole install. No config files created, no postinstall scripts.
|
|
|
51
51
|
# Master on/off switch. Leave this as true, or remove the line entirely.
|
|
52
52
|
HEALER_ENABLED=true
|
|
53
53
|
|
|
54
|
-
# Pick one: ollama | openai | anthropic | gemini | claude-subscription | copilot-subscription | tamash
|
|
54
|
+
# Pick one: ollama | ollama-local | openai | anthropic | gemini | claude-subscription | copilot-subscription | tamash
|
|
55
55
|
HEALER_PROVIDER=ollama
|
|
56
56
|
|
|
57
57
|
# --- Ollama Cloud (https://ollama.com) ---
|
|
58
58
|
OLLAMA_MODEL=gpt-oss:120b
|
|
59
59
|
OLLAMA_API_KEY=
|
|
60
60
|
|
|
61
|
+
# --- Ollama, self-hosted/internal server (separate from Ollama Cloud above) ---
|
|
62
|
+
# HEALER_PROVIDER=ollama-local
|
|
63
|
+
# OLLAMA_LOCAL_MODEL=gpt-oss:120b
|
|
64
|
+
# OLLAMA_LOCAL_BASE_URL=http://localhost:11434
|
|
65
|
+
# OLLAMA_LOCAL_API_KEY=
|
|
66
|
+
|
|
61
67
|
# --- OpenAI ---
|
|
62
68
|
# OPENAI_MODEL=gpt-4.1-mini
|
|
63
69
|
# OPENAI_API_KEY=
|
|
@@ -79,6 +85,19 @@ Fill in the API key and model for whichever provider you pick, and leave the res
|
|
|
79
85
|
2. Go to [ollama.com/settings/keys](https://ollama.com/settings/keys) and create a new API key.
|
|
80
86
|
3. Paste it into `.env` as `OLLAMA_API_KEY`. `HEALER_PROVIDER=ollama` and `OLLAMA_MODEL=gpt-oss:120b` above are already set — nothing else is required.
|
|
81
87
|
|
|
88
|
+
### Self-hosted Ollama: `HEALER_PROVIDER=ollama-local`
|
|
89
|
+
|
|
90
|
+
A distinct provider from `ollama` above, not a flag on it — the auth default is genuinely different, not just the default host:
|
|
91
|
+
|
|
92
|
+
```sh
|
|
93
|
+
HEALER_PROVIDER=ollama-local
|
|
94
|
+
OLLAMA_LOCAL_MODEL=gpt-oss:120b
|
|
95
|
+
OLLAMA_LOCAL_BASE_URL=http://your-internal-ollama-host:11434 # defaults to http://localhost:11434
|
|
96
|
+
# OLLAMA_LOCAL_API_KEY= # only if your deployment requires one — see below
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
A bare `ollama serve` has no authentication at all, so `OLLAMA_LOCAL_API_KEY` is optional — leave it unset and no `Authorization` header is sent. If your internal deployment sits behind a reverse proxy or API gateway that does require a bearer token, set it there and it's sent the same way the cloud provider's key is (`Authorization: Bearer <token>`). No other auth scheme (Basic auth, a custom header, mTLS) is currently supported.
|
|
100
|
+
|
|
82
101
|
### No AI at all: `HEALER_PROVIDER=tamash`
|
|
83
102
|
|
|
84
103
|
```sh
|
|
@@ -532,8 +551,9 @@ The same detail prints to the console as it happens:
|
|
|
532
551
|
| Variable | Default | Purpose |
|
|
533
552
|
|----------|---------|---------|
|
|
534
553
|
| `HEALER_ENABLED` | `true` | Master on/off switch. Any value other than `false`/`0` leaves healing on. |
|
|
535
|
-
| `HEALER_PROVIDER` | unset | `ollama` \| `openai` \| `anthropic` \| `gemini` \| `claude-subscription` \| `copilot-subscription` \| `tamash` (no AI, see above). Unset or missing key/model still allows cache hits, just no fresh AI calls. |
|
|
554
|
+
| `HEALER_PROVIDER` | unset | `ollama` \| `ollama-local` \| `openai` \| `anthropic` \| `gemini` \| `claude-subscription` \| `copilot-subscription` \| `tamash` (no AI, see above). Unset or missing key/model still allows cache hits, just no fresh AI calls. |
|
|
536
555
|
| `OLLAMA_MODEL` / `OLLAMA_API_KEY` | — | Ollama Cloud provider config. |
|
|
556
|
+
| `OLLAMA_LOCAL_MODEL` / `OLLAMA_LOCAL_BASE_URL` / `OLLAMA_LOCAL_API_KEY` | — / `http://localhost:11434` / — | Self-hosted Ollama provider config. The API key is optional — only set it if your deployment sits behind an auth gateway. |
|
|
537
557
|
| `OPENAI_MODEL` / `OPENAI_API_KEY` | — | OpenAI provider config. |
|
|
538
558
|
| `ANTHROPIC_MODEL` / `ANTHROPIC_API_KEY` | — | Anthropic (Claude) provider config. |
|
|
539
559
|
| `GEMINI_MODEL` / `GEMINI_API_KEY` | — | Google Gemini provider config. |
|