@tablation/crew 0.128.0 → 0.128.2

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 (2) hide show
  1. package/dist/cli.js +12 -1
  2. package/package.json +1 -1
package/dist/cli.js CHANGED
@@ -13413,6 +13413,9 @@ var CREW_ENV = {
13413
13413
  XDG_CACHE_HOME: `${CREW_PREFIX}/cache`,
13414
13414
  npm_config_cache: `${CREW_PREFIX}/cache/npm`,
13415
13415
  npm_config_store_dir: `${CREW_PREFIX}/pnpm-store`,
13416
+ // pnpm 11 ignores npm_config_store_dir and reads only this spelling (CREW-2973): without it `pnpm fetch`
13417
+ // at build time fills the builder's home store, and a run's offline install finds /opt/crew/pnpm-store empty.
13418
+ pnpm_config_store_dir: `${CREW_PREFIX}/pnpm-store`,
13416
13419
  PNPM_HOME: `${CREW_PREFIX}/pnpm`,
13417
13420
  // A run cannot reach the download host, so an in-run update attempt is only noise.
13418
13421
  DISABLE_AUTOUPDATER: "1"
@@ -15866,6 +15869,9 @@ function rejectedTunnels(stateDir) {
15866
15869
  }
15867
15870
 
15868
15871
  // src/pool-member-host.ts
15872
+ function platformBaseUrl(poolUrl) {
15873
+ return poolUrl.trim().replace(/\/+$/, "").replace(/\/api$/i, "");
15874
+ }
15869
15875
  function loadShip(crewHome) {
15870
15876
  try {
15871
15877
  return loadConfig(crewHome, void 0, { allowNoRoutes: true });
@@ -15899,7 +15905,7 @@ function realPoolMemberDeps(o) {
15899
15905
  instanceClass,
15900
15906
  relayHost: lease.relayHost,
15901
15907
  maxConcurrentAgents: lease.maxConcurrentAgents,
15902
- baseUrl: o.platformUrl,
15908
+ baseUrl: platformBaseUrl(o.platformUrl),
15903
15909
  forgeHosts: hosts,
15904
15910
  tokens: Object.fromEntries(lease.forges.map((f) => [f.host.toLowerCase(), f.token])),
15905
15911
  json: false,
@@ -22584,6 +22590,7 @@ async function runPeriscopeIdlePass(d) {
22584
22590
  if (decision.action === "none") continue;
22585
22591
  if (decision.action === "refresh") {
22586
22592
  await d.update(row.id, { last_activity_at: decision.lastActivityAt, expires_at: decision.expiresAt });
22593
+ d.recordActivity?.(row, decision.lastActivityAt, decision.expiresAt);
22587
22594
  d.clear(periscopeIdleKey(t.tag));
22588
22595
  result.refreshed++;
22589
22596
  continue;
@@ -23703,6 +23710,10 @@ async function runOnePassUnguarded(o) {
23703
23710
  listLive: () => tracker.liveShipPeriscopes(),
23704
23711
  mtimeOf: newestWorktreeMtime,
23705
23712
  update: (id, fields) => tracker.updatePeriscope(id, fields),
23713
+ recordActivity: (row, lastActivityAt, expiresAt) => {
23714
+ const sc = readPeriscopeSidecars(o.ship.stateDir).find((s) => s.ticketRecordId === row.issue_id);
23715
+ if (sc) writePeriscopeSidecar(o.ship.stateDir, { ...sc, lastActivityAt, expiresAt });
23716
+ },
23706
23717
  ticketOf: async (row) => {
23707
23718
  const t = await tracker.ticket(row.issue_id);
23708
23719
  return {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tablation/crew",
3
- "version": "0.128.0",
3
+ "version": "0.128.2",
4
4
  "description": "A standing team of headless agents that picks work off a Tablation board, does it on a machine you control, and reports back.",
5
5
  "type": "module",
6
6
  "license": "MIT",