mindvest-atlas 0.62.0 → 0.63.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mindvest-atlas",
3
- "version": "0.62.0",
3
+ "version": "0.63.0",
4
4
  "description": "Atlas CLI \u2014 OAuth login, tool calls, and live alert/flow streaming for the Atlas trading API",
5
5
  "type": "module",
6
6
  "bin": {
package/src/config.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import path from 'node:path';
3
3
  import os from 'node:os';
4
4
 
5
- export const VERSION = '0.62.0';
5
+ export const VERSION = '0.63.0';
6
6
  export const DEFAULT_BASE_URL = 'https://atlasmcp.finmanagerai.com';
7
7
  export const DEFAULT_SCOPE = 'atlas broker';
8
8
  export const CLIENT_NAME = 'Atlas CLI';
@@ -2432,7 +2432,7 @@ def _sleep_or_stop(seconds, slice_s=1.0):
2432
2432
  return _still_mine()
2433
2433
 
2434
2434
 
2435
- def watch(instruction, every=5, most=200, hours=8, look=True):
2435
+ def watch(instruction, every=5, most=200, hours=8, look=True, model=""):
2436
2436
  """Watch the screen and act when it is time. Runs until it is done.
2437
2437
 
2438
2438
  THE SHAPE OF A JOB THAT IS MOSTLY WAITING (owner, 2026-09-06: "watch this
@@ -2465,6 +2465,24 @@ def watch(instruction, every=5, most=200, hours=8, look=True):
2465
2465
  choosing, and why a model that says "nothing is happening, look again in an
2466
2466
  hour" is doing its job rather than being lazy.
2467
2467
 
2468
+ A SMALL MODEL CAN DO THE WATCHING (owner, 2026-09-10: "a smaller model to
2469
+ watch continuously, then the router is able to route to larger to call tools
2470
+ and do other stuff"). `model=` names who is asked each round, and the round
2471
+ is the cheap half of this: nothing has changed, look again later. It is the
2472
+ ACTING that wants a big model, and the watcher hands that over the same way
2473
+ anything else does, by calling ask() with one:
2474
+
2475
+ watch("Watch the SPY 5-minute chart. Say QUIET and nothing else while "
2476
+ "it is quiet. When the opening range high breaks on rising "
2477
+ "volume, call: "
2478
+ " ask('Break just happened, here is the screen: <path>. Decide "
2479
+ " the trade and place it.', model='claude-opus-5')",
2480
+ every=2, model="claude-haiku-4-5")
2481
+
2482
+ Whoever is watching still has this whole computer, so a watcher that can
2483
+ decide for itself should just act. Route when the decision is worth the
2484
+ bigger model, not on principle. models() lists what this machine can reach.
2485
+
2468
2486
  Ends when the model writes DONE on a line by itself, when `most` rounds have
2469
2487
  passed, or when `hours` have. Pressing Stop ends it like anything else.
2470
2488
  """
@@ -2534,7 +2552,7 @@ def watch(instruction, every=5, most=200, hours=8, look=True):
2534
2552
  else "The screen could not be photographed this round.")
2535
2553
  )
2536
2554
  try:
2537
- answer = ask(asked)
2555
+ answer = ask(asked, model=model)
2538
2556
  except Exception as err:
2539
2557
  answer = ""
2540
2558
  seen.append({"round": rounds, "error": str(err)})
package/src/sharing.js CHANGED
@@ -435,6 +435,12 @@ export async function publish(job, root, {
435
435
  // button has a LINK to offer, not a line of hex.
436
436
  share_url: data.share_url,
437
437
  name: fields.name,
438
+ // WHAT THE PROJECT IS, KEPT (owner, 2026-09-09: "when publishing changes,
439
+ // it always ask what the project is for — if the user has added this just
440
+ // recall it"). It was sent to the server and forgotten locally, so the
441
+ // publish dialog opened with an empty box on every single release and the
442
+ // author retyped the same sentence or, more often, shipped without one.
443
+ description: fields.description,
438
444
  author: true,
439
445
  // Where it started, kept for as long as the copy exists. Provenance, not a
440
446
  // subscription: the update check follows `package_id`, which is now this
@@ -525,6 +531,9 @@ export function shareState(job, root) {
525
531
  mine: Boolean(pin.author),
526
532
  author_name: pin.author_name,
527
533
  forked_from: pin.forked_from,
534
+ // What this project IS, as last published. The publish dialog seeds its
535
+ // box from here, so a re-release starts with the sentence already in it.
536
+ description: pin.description,
528
537
  };
529
538
  }
530
539