@osfactory/har 0.47.0 → 0.48.0

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.
Files changed (3) hide show
  1. package/README.md +15 -0
  2. package/dist/index.js +26 -7
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -10,6 +10,21 @@
10
10
 
11
11
  HAR is an open-source, agent-agnostic framework for building multi-agent coding workflows. Run a fleet of coding agents in parallel on any repository, with deterministic validation gates, verifiable proof, and full observability across every agent, all extensible and customizable to your own workflow and tooling.
12
12
 
13
+ <table align="center">
14
+ <tr>
15
+ <td align="center">
16
+ <a href="https://youtu.be/XKl4ZzWy7mQ">
17
+ <img src="https://img.youtube.com/vi/XKl4ZzWy7mQ/maxresdefault.jpg" alt="HAR introduction demo" width="540">
18
+ </a>
19
+ </td>
20
+ </tr>
21
+ <tr>
22
+ <td align="center">
23
+ ▶ <strong>Introduction demo</strong> — click the thumbnail to watch on YouTube
24
+ </td>
25
+ </tr>
26
+ </table>
27
+
13
28
  Works with **Claude Code** · **Cursor** · **Codex** · any MCP agent.
14
29
 
15
30
  ## What's included out of the box
package/dist/index.js CHANGED
@@ -28648,6 +28648,18 @@ function isControlEnabled() {
28648
28648
  function normalizeUrl(url) {
28649
28649
  return url.replace(/\/+$/, "");
28650
28650
  }
28651
+ function resolvePortalUrl(explicit) {
28652
+ const candidates = [
28653
+ [explicit, "flag"],
28654
+ [process.env.HAR_PORTAL_URL, "env"],
28655
+ [readPortalCredentials()?.portalUrl, "saved"]
28656
+ ];
28657
+ for (const [value, source] of candidates) {
28658
+ const url = normalizeUrl((value ?? "").trim());
28659
+ if (url) return { url, source };
28660
+ }
28661
+ return { url: DEFAULT_PORTAL_URL, source: "default" };
28662
+ }
28651
28663
  function getPortalTarget() {
28652
28664
  if (process.env.HAR_PORTAL_URL && process.env.HAR_PORTAL_TOKEN) {
28653
28665
  return {
@@ -28671,12 +28683,13 @@ function getPortalTarget() {
28671
28683
  }
28672
28684
  return null;
28673
28685
  }
28674
- var DEFAULT_CONTROL_API_URL;
28686
+ var DEFAULT_CONTROL_API_URL, DEFAULT_PORTAL_URL;
28675
28687
  var init_control_config = __esm({
28676
28688
  "src/core/control-config.ts"() {
28677
28689
  "use strict";
28678
28690
  init_portal_credentials();
28679
28691
  DEFAULT_CONTROL_API_URL = "http://localhost:3847";
28692
+ DEFAULT_PORTAL_URL = "https://har.kerno.io";
28680
28693
  }
28681
28694
  });
28682
28695
 
@@ -72841,7 +72854,10 @@ var controlCommand = {
72841
72854
  ).command(
72842
72855
  "login",
72843
72856
  "Log in to a har-portal (browser SSO) and store an ingest token",
72844
- (y) => y.option("portal", { type: "string", describe: "Portal base URL (or set HAR_PORTAL_URL)" }).option("api-key", {
72857
+ (y) => y.option("portal", {
72858
+ type: "string",
72859
+ describe: `Portal base URL (or HAR_PORTAL_URL; defaults to the last login, else ${DEFAULT_PORTAL_URL})`
72860
+ }).option("api-key", {
72845
72861
  type: "string",
72846
72862
  describe: "Store this ingest token directly instead of browser login"
72847
72863
  }),
@@ -73167,13 +73183,16 @@ async function handleSync(argv) {
73167
73183
  return finishCommand(1);
73168
73184
  }
73169
73185
  }
73186
+ var PORTAL_SOURCE_LABEL = {
73187
+ flag: "--portal",
73188
+ env: "HAR_PORTAL_URL",
73189
+ saved: "saved login",
73190
+ default: "default"
73191
+ };
73170
73192
  async function handleLogin(argv) {
73171
73193
  header("har control login");
73172
- const portalUrl = (argv.portal ?? process.env.HAR_PORTAL_URL ?? "").replace(/\/+$/, "");
73173
- if (!portalUrl) {
73174
- error("Provide --portal <url> (or set HAR_PORTAL_URL)");
73175
- return finishCommand(1);
73176
- }
73194
+ const { url: portalUrl, source } = resolvePortalUrl(argv.portal);
73195
+ info(`Portal: ${portalUrl} (${PORTAL_SOURCE_LABEL[source]})`);
73177
73196
  if (argv.apiKey) {
73178
73197
  writePortalCredentials({
73179
73198
  portalUrl,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osfactory/har",
3
- "version": "0.47.0",
3
+ "version": "0.48.0",
4
4
  "description": "Open harness for reproducible multi-agent coding workflows",
5
5
  "keywords": [
6
6
  "har",