visionclaw 0.1.206 → 0.1.207-beta.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.
@@ -144,7 +144,7 @@ When in doubt, share the minimum information necessary to complete the task, and
144
144
  - Every wake cycle must end explicitly: call \`finish\` when no work remains${ownerConfig.dualSessionEnabled ? ", or `switch_session` when handing work to the other session" : ""}. Never end a turn silently while a task is still active.
145
145
  - Create and maintain a Todo/Task list for multi-step work. If that list contains pending or in-progress items, \`finish\` is rejected until they are completed or the list is explicitly updated. If progress is blocked on user action, first successfully tell the user exactly what is needed via \`notify_user\`, then call \`finish(awaiting_user=true)\`. This only ends the current wake; Todo state is in-memory and is not guaranteed to survive or be reinjected into a later wake.
146
146
  - When tasks are completed, notify the user through the appropriate channel, then call \`finish\`${ownerConfig.dualSessionEnabled ? " (unless `switch_session` is the correct terminal action)" : ""}.
147
- - For recurring tasks, create Google Calendar events so you are reminded to execute them.
147
+ - For recurring tasks, create calendar events so you are reminded to execute them.
148
148
 
149
149
  ### Proactive Behavior
150
150
  During heartbeat wakes (no new messages), review your calendar, check for pending tasks, and take initiative:
@@ -167,7 +167,7 @@ The \`financial_*\` tools (financial-tool MCP) cover all markets behind one serv
167
167
  - **A-share** and **Hong Kong** equities: quotes and history (**delayed by ~15 minutes**).
168
168
  - **Crypto** pairs (e.g. BTC-USDT): real-time quotes and bars.
169
169
  - **Fundamentals** (\`financial_get_fundamentals\`): summary ratios and income/balance/cashflow statements (end-of-day).
170
- - **Ticker news** (\`financial_get_news\`): recent articles for **US-listed** tickers with publisher, summary, and per-ticker sentiment (updated hourly). For A-share/HK news use web search instead.
170
+ - **Ticker news** (\`financial_get_news\`): recent articles for A-share, HK, and US-listed equities. US results may include publisher, summary, and per-ticker sentiment; A/HK results include titles, timestamps, and links. Pass \`market\` to disambiguate symbols and check \`freshness\`.
171
171
 
172
172
  Each snapshot carries a \`freshness\` field ({provider, asOf, latency}); check \`latency\` ("realtime"/"delayed"/"eod") before relying on a price for time-sensitive decisions. For numeric symbols that are ambiguous across markets (e.g. 5-digit codes), pass the \`market\` hint (A/HK/US/crypto).
173
173
 
@@ -8,7 +8,7 @@ Institutional-quality equity research workflows adapted from [Anthropic's Financ
8
8
 
9
9
  ## Data Sources
10
10
 
11
- 1. **VisionClaw financial_* tools** (financial-tool MCP) — quotes/snapshots (US real-time; A-share/HK delayed; crypto), historical bars (`financial_get_bars`), fundamentals/financial statements (`financial_get_fundamentals`), and US ticker news with sentiment (`financial_get_news`)
11
+ 1. **VisionClaw financial_* tools** (financial-tool MCP) — quotes/snapshots (US real-time; A-share/HK delayed; crypto), historical bars (`financial_get_bars`), fundamentals/financial statements (`financial_get_fundamentals`), and A-share/HK/US ticker news (`financial_get_news`; US may include sentiment)
12
12
  2. **Web search** — SEC EDGAR, company IR pages, earnings transcripts, news
13
13
  3. **User-provided data** — uploaded documents, models, prior research
14
14
  4. **MCP data servers** (if configured) — Morningstar, FactSet, S&P Global, etc.
@@ -22,11 +22,26 @@ func captureScreen(to outputPath: String) async throws {
22
22
  let config = SCStreamConfiguration()
23
23
  config.showsCursor = true
24
24
  config.captureResolution = .best
25
- // Set output dimensions large enough to avoid downscaling on Retina displays.
26
- // With .best, ScreenCaptureKit captures at native resolution; if these exceed
27
- // the actual pixel count it won't upscale.
28
- config.width = display.width * 2
29
- config.height = display.height * 2
25
+ // Capture at the display's exact native pixel size: contentRect (points)
26
+ // × pointPixelScale (backing scale, 1x/2x). The canvas must not exceed
27
+ // the native frame SCScreenshotManager renders at native resolution
28
+ // without upscaling, so an over-sized canvas (the old fixed points-times-
29
+ // two heuristic on a 1x non-Retina display) leaves the desktop in the
30
+ // top-left quarter with the rest black. On 2x Retina panels that
31
+ // heuristic happened to equal the native size, which is why only
32
+ // 1x-display machines showed the quarter-frame bug.
33
+ let scale = CGFloat(filter.pointPixelScale)
34
+ let rect = filter.contentRect
35
+ var pixelWidth = Int((rect.width * scale).rounded())
36
+ var pixelHeight = Int((rect.height * scale).rounded())
37
+ if pixelWidth <= 0 || pixelHeight <= 0 {
38
+ // Defensive fallback: capture at point size. A downscaled-but-complete
39
+ // frame beats a letterboxed quarter-frame.
40
+ pixelWidth = display.width
41
+ pixelHeight = display.height
42
+ }
43
+ config.width = pixelWidth
44
+ config.height = pixelHeight
30
45
 
31
46
  let image = try await SCScreenshotManager.captureImage(
32
47
  contentFilter: filter, configuration: config
@@ -20829,7 +20829,7 @@ var require_prompts3 = __commonJS({
20829
20829
 
20830
20830
  // dist/utils/version-check.js
20831
20831
  function isBundled() {
20832
- const v16 = "0.1.206";
20832
+ const v16 = "0.1.207-beta.0";
20833
20833
  return typeof v16 === "string" && v16 !== "undefined";
20834
20834
  }
20835
20835
  function getPackageRoot() {
@@ -20846,7 +20846,7 @@ function getInstallationInfo() {
20846
20846
  };
20847
20847
  }
20848
20848
  function getCurrentVersion() {
20849
- const bundledVersion = "0.1.206";
20849
+ const bundledVersion = "0.1.207-beta.0";
20850
20850
  if (bundledVersion && bundledVersion !== "undefined") {
20851
20851
  return bundledVersion;
20852
20852
  }
@@ -922284,7 +922284,7 @@ When in doubt, share the minimum information necessary to complete the task, and
922284
922284
  - Every wake cycle must end explicitly: call \`finish\` when no work remains${ownerConfig.dualSessionEnabled ? ", or `switch_session` when handing work to the other session" : ""}. Never end a turn silently while a task is still active.
922285
922285
  - Create and maintain a Todo/Task list for multi-step work. If that list contains pending or in-progress items, \`finish\` is rejected until they are completed or the list is explicitly updated. If progress is blocked on user action, first successfully tell the user exactly what is needed via \`notify_user\`, then call \`finish(awaiting_user=true)\`. This only ends the current wake; Todo state is in-memory and is not guaranteed to survive or be reinjected into a later wake.
922286
922286
  - When tasks are completed, notify the user through the appropriate channel, then call \`finish\`${ownerConfig.dualSessionEnabled ? " (unless `switch_session` is the correct terminal action)" : ""}.
922287
- - For recurring tasks, create Google Calendar events so you are reminded to execute them.
922287
+ - For recurring tasks, create calendar events so you are reminded to execute them.
922288
922288
 
922289
922289
  ### Proactive Behavior
922290
922290
  During heartbeat wakes (no new messages), review your calendar, check for pending tasks, and take initiative:
@@ -922307,7 +922307,7 @@ The \`financial_*\` tools (financial-tool MCP) cover all markets behind one serv
922307
922307
  - **A-share** and **Hong Kong** equities: quotes and history (**delayed by ~15 minutes**).
922308
922308
  - **Crypto** pairs (e.g. BTC-USDT): real-time quotes and bars.
922309
922309
  - **Fundamentals** (\`financial_get_fundamentals\`): summary ratios and income/balance/cashflow statements (end-of-day).
922310
- - **Ticker news** (\`financial_get_news\`): recent articles for **US-listed** tickers with publisher, summary, and per-ticker sentiment (updated hourly). For A-share/HK news use web search instead.
922310
+ - **Ticker news** (\`financial_get_news\`): recent articles for A-share, HK, and US-listed equities. US results may include publisher, summary, and per-ticker sentiment; A/HK results include titles, timestamps, and links. Pass \`market\` to disambiguate symbols and check \`freshness\`.
922311
922311
 
922312
922312
  Each snapshot carries a \`freshness\` field ({provider, asOf, latency}); check \`latency\` ("realtime"/"delayed"/"eod") before relying on a price for time-sensitive decisions. For numeric symbols that are ambiguous across markets (e.g. 5-digit codes), pass the \`market\` hint (A/HK/US/crypto).
922313
922313
 
@@ -990462,7 +990462,7 @@ var init_browser_launcher = __esm({
990462
990462
 
990463
990463
  // dist/utils/playwriter-relay.js
990464
990464
  function isBundled2() {
990465
- const v16 = "0.1.206";
990465
+ const v16 = "0.1.207-beta.0";
990466
990466
  return typeof v16 === "string" && v16 !== "undefined";
990467
990467
  }
990468
990468
  function resolveRelayEntryPath() {
@@ -990588,7 +990588,7 @@ function selectAndPruneCanonicalRelay(matches, expectedEntry) {
990588
990588
  return canonical;
990589
990589
  }
990590
990590
  function pm2Start(entryPath, host, port) {
990591
- const versionStr = "0.1.206";
990591
+ const versionStr = "0.1.207-beta.0";
990592
990592
  (0, import_node_child_process19.execFileSync)("pm2", ["start", entryPath, "--name", PM2_PROCESS_NAME, "--update-env"], {
990593
990593
  encoding: "utf-8",
990594
990594
  stdio: "pipe",
@@ -990614,7 +990614,7 @@ function pm2Delete() {
990614
990614
  }
990615
990615
  }
990616
990616
  function pm2Restart(host, port) {
990617
- const versionStr = "0.1.206";
990617
+ const versionStr = "0.1.207-beta.0";
990618
990618
  (0, import_node_child_process19.execFileSync)("pm2", ["restart", PM2_PROCESS_NAME, "--update-env"], {
990619
990619
  encoding: "utf-8",
990620
990620
  stdio: "pipe",
@@ -991083,7 +991083,7 @@ async function reconcilePlaywriterRelay(host = "127.0.0.1", port = 19988) {
991083
991083
  pm2Restart(host, port);
991084
991084
  return;
991085
991085
  }
991086
- const currentVersion = "0.1.206";
991086
+ const currentVersion = "0.1.207-beta.0";
991087
991087
  if (currentEnv.VISIONCLAW_VERSION && currentEnv.VISIONCLAW_VERSION !== currentVersion) {
991088
991088
  if (!await ensureRelayPortAvailable(host, port, current, "recreate after a version change"))
991089
991089
  return;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "visionclaw",
3
- "version": "0.1.206",
3
+ "version": "0.1.207-beta.0",
4
4
  "description": "A personal assistant agent that runs on your desktop, receives commands from messaging channels, and executes tasks autonomously.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",