@stringsync/splates 0.0.56 → 0.0.57

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 +6 -4
  2. package/index.js +5 -20
  3. package/package.json +2 -2
package/README.md CHANGED
@@ -47,7 +47,8 @@ removes the worktree. A conflict or a failing check goes back to the agent that
47
47
  made the change, which fixes it and merges again. A check that writes a JUnit
48
48
  XML report to `$SPLATES_TEST_REPORT` (`bun test --reporter=junit
49
49
  --reporter-outfile="$SPLATES_TEST_REPORT"`) queues a task for each test slower
50
- than 5 seconds.
50
+ than 5 seconds. A check that appends `{"phase": "<name>", "ms": <n>}` lines to
51
+ `$SPLATES_GATE_PHASES` has those phase times kept in the merge's log entry.
51
52
 
52
53
  **Project notes.** Keep durable conventions, decisions and other project context
53
54
  as short Markdown files in `notes/`, one thing per file, edited in place.
@@ -62,7 +63,8 @@ Keep sensitive information out of them.
62
63
  **One premerge at a time.** Each merge's gate (`postRewrite` and
63
64
  `preMerge`) holds the machine's premerge lock, so merges from several agents
64
65
  test one after another rather than run the machine out of memory. A gate
65
- that runs past 3 minutes is killed, and the agent merges again.
66
+ that runs past 3 minutes is killed, and the agent merges again. A `preLock`
67
+ command, if set, runs before the wait, so checks that need no lock fail first.
66
68
 
67
69
  **Pushing.** With `remote: "origin"` in `splates.config.ts`, each task's
68
70
  branch goes to that remote as `splates/<task>`: after every commit an agent
@@ -254,8 +256,8 @@ serving on this machine.
254
256
 
255
257
  This machine's own worker runs agents over a private Unix socket and
256
258
  reconnects when the server restarts. Remote workers cannot join.
257
- Use `splates worker list` to inspect it, `splates worker slots local <n>`
258
- to set its slots, and `splates worker drain local --undo` to resume it.
259
+ It runs as many agents at once as are started. Use `splates worker list` to
260
+ inspect it, and `splates worker drain local --undo` to resume it.
259
261
 
260
262
  ### Task ports
261
263
 
package/index.js CHANGED
@@ -1252,7 +1252,6 @@ import {
1252
1252
  FileLogger,
1253
1253
  listWorkers,
1254
1254
  removeWorker,
1255
- setWorkerSlots,
1256
1255
  workerRun
1257
1256
  } from "@stringsync/splates-server/workers";
1258
1257
  import { cli as cli13 } from "webappwiz/cmd";
@@ -1267,8 +1266,8 @@ var DEV = {
1267
1266
  default: "",
1268
1267
  description: "the `splates server` to ask, a URL such as http://localhost:4310; by default the one an agent runs under, from SPLATES_DEV"
1269
1268
  };
1270
- var splatesWaiting = cli12("queue").description("the agents waiting for a slot on a worker of the running `splates server`: each one another agent started (with `splates add --agent`, or a lane's orchestrator handing out tasks), started or resumed while every worker it can run on is full, waits here, first come, first served, and starts once a slot frees, as when an agent left idle 30 minutes stops; none is ever failed for waiting. An agent you start waits only while no worker it can run on is up, as with this machine's own removed or none on the platform its project requires");
1271
- splatesWaiting.command("list").description("list the agents waiting for a slot, first in line first: position, project, task, conversation, how long each has waited and why (no free slot, no worker up, or a platform no worker runs, as `needs macOS`)").option("dev", z13.string(), DEV).option("json", z13.boolean(), { default: false, description: "emit JSON" }).action((opts, ctx) => listQueue({
1269
+ var splatesWaiting = cli12("queue").description("the agents waiting to start on a worker of the running `splates server`: nothing caps how many agents run, so one waits only while what splates starts on its own (the queue, automations, hooks, the groomer) is paused, or while no worker it can run on is up, first come, first served; none is ever failed for waiting. An agent you start waits only while no worker is up");
1270
+ splatesWaiting.command("list").description("list the agents waiting to start, first in line first: position, project, task, conversation, how long each has waited and why (paused, no worker up, or worker draining)").option("dev", z13.string(), DEV).option("json", z13.boolean(), { default: false, description: "emit JSON" }).action((opts, ctx) => listQueue({
1272
1271
  dev: opts.dev,
1273
1272
  json: opts.json,
1274
1273
  log: ctx.log,
@@ -1276,7 +1275,7 @@ splatesWaiting.command("list").description("list the agents waiting for a slot,
1276
1275
  ps: ctx.ps,
1277
1276
  send: ctx.fetch
1278
1277
  }));
1279
- splatesWaiting.command("move").description("move an agent waiting for a slot to another place in line, from 1 for the next to start, then list the queue").arg("which", z13.string(), {
1278
+ splatesWaiting.command("move").description("move an agent waiting to start to another place in line, from 1 for the next to start, then list the queue").arg("which", z13.string(), {
1280
1279
  description: "the task it works, or its conversation's id"
1281
1280
  }).arg("position", z13.coerce.number().int(), {
1282
1281
  description: "where in line to put it, from 1"
@@ -1301,7 +1300,7 @@ splatesWorker.command("run").description("run this machine’s worker until stop
1301
1300
  description: "the old name for --server, still read for workers installed before it, and passed to a build older than it"
1302
1301
  }).option("slots", z14.coerce.number().int().min(0), {
1303
1302
  default: 0,
1304
- description: "how many tasks this worker takes at once; by default one for each core and 4 GB of memory it has, whichever is fewer, as a VM such as WSL2 sees them"
1303
+ description: "ignored: nothing caps how many agents a worker runs; still read, since a `splates server` started before it was dropped passes it"
1305
1304
  }).option("id", z14.literal("local"), {
1306
1305
  default: "local",
1307
1306
  description: "what the server knows this worker by, kept across restarts so it picks up where it was; by default local"
@@ -1310,13 +1309,12 @@ splatesWorker.command("run").description("run this machine’s worker until stop
1310
1309
  description: "say only what went wrong, not each time it joins or loses its server, as the worker `splates server` starts beside itself does; all of it still goes to worker.log in ~/.splates, the one before it kept as worker.log.1"
1311
1310
  }).action((opts, ctx) => workerRun({
1312
1311
  coordinator: opts.server || opts.coordinator,
1313
- slots: opts.slots,
1314
1312
  id: opts.id,
1315
1313
  log: opts.quiet ? quietLog(ctx) : ctx.log,
1316
1314
  ps: ctx.ps,
1317
1315
  fs: ctx.fs
1318
1316
  }));
1319
- splatesWorker.command("list").description("list the workers the running `splates server` has: platform, build, protocol, slots used and total, health with when it was last heard, and tasks, then any it refused for speaking another protocol").option("dev", z14.string(), {
1317
+ splatesWorker.command("list").description("list the workers the running `splates server` has: platform, build, protocol, health with when it was last heard, and tasks, then any it refused for speaking another protocol").option("dev", z14.string(), {
1320
1318
  default: "",
1321
1319
  description: "the `splates server` to ask, a URL such as http://localhost:4310; by default the one an agent runs under, from SPLATES_DEV"
1322
1320
  }).option("json", z14.boolean(), { default: false, description: "emit JSON" }).action((opts, ctx) => listWorkers({
@@ -1345,19 +1343,6 @@ splatesWorker.command("drain").description("take no new agents on a worker, lett
1345
1343
  ps: ctx.ps,
1346
1344
  send: ctx.fetch
1347
1345
  }));
1348
- splatesWorker.command("slots").description("set how many agents a worker runs at once, from now on, over what it started with").arg("id", z14.string(), {
1349
- description: "the worker, as `splates worker list` names it"
1350
- }).arg("slots", z14.coerce.number().int().min(1), {
1351
- description: "how many at once"
1352
- }).option("dev", z14.string(), dev).action((opts, ctx) => setWorkerSlots({
1353
- id: opts.id,
1354
- slots: opts.slots,
1355
- dev: opts.dev,
1356
- log: ctx.log,
1357
- fs: ctx.fs,
1358
- ps: ctx.ps,
1359
- send: ctx.fetch
1360
- }));
1361
1346
  splatesWorker.command("remove").description("stop this machine’s worker taking agents, letting its agents run to their end; resume it with `splates worker drain local --undo`").arg("id", z14.string(), {
1362
1347
  description: "the worker, as `splates worker list` names it"
1363
1348
  }).option("force", z14.boolean(), {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@stringsync/splates",
3
- "version": "0.0.56",
3
+ "version": "0.0.57",
4
4
  "description": "Runs several AI coding agents on one repository at once, each in its own git worktree",
5
5
  "license": "MIT",
6
6
  "author": "stringsync LLC",
@@ -17,7 +17,7 @@
17
17
  "access": "public"
18
18
  },
19
19
  "dependencies": {
20
- "@stringsync/splates-server": "^0.0.56",
20
+ "@stringsync/splates-server": "^0.0.57",
21
21
  "webappwiz": "0.0.47",
22
22
  "zod": "^4.4.3"
23
23
  },