hanoman 0.1.36 → 0.1.38

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.
@@ -1,5 +1,5 @@
1
1
  {
2
- "version": "0.1.36",
3
- "sha": "367eb05",
4
- "builtAt": "2026-08-14T16:01:32.161Z"
2
+ "version": "0.1.38",
3
+ "sha": "31209e5",
4
+ "builtAt": "2026-08-14T17:51:33.674Z"
5
5
  }
package/dist/server.js CHANGED
@@ -12177,13 +12177,14 @@ async function recordConflict(entity, recordId, local, server) {
12177
12177
  localUpdatedAt: stamp(local.data),
12178
12178
  serverData: server.data,
12179
12179
  serverVersion: server.version,
12180
- serverUpdatedAt: stamp(server.data),
12181
- resolvedAt: null
12180
+ serverUpdatedAt: stamp(server.data)
12182
12181
  };
12182
+ const prev = await prisma.syncConflict.findUnique({ where: { entity_recordId: { entity, recordId } } });
12183
+ if (prev?.resolvedAt && prev.localVersion === local.version && prev.serverVersion === server.version) return;
12183
12184
  await prisma.syncConflict.upsert({
12184
12185
  where: { entity_recordId: { entity, recordId } },
12185
- create: row,
12186
- update: { ...row, detectedAt: /* @__PURE__ */ new Date() }
12186
+ create: { ...row, resolvedAt: null },
12187
+ update: { ...row, resolvedAt: null, detectedAt: /* @__PURE__ */ new Date() }
12187
12188
  });
12188
12189
  }
12189
12190
  async function listConflicts() {
@@ -12207,8 +12208,10 @@ async function resolveConflict(entity, recordId, choice, push) {
12207
12208
  if (choice === "server") {
12208
12209
  await upsertLocal(entity, recordId, c.serverVersion, c.serverData);
12209
12210
  } else {
12210
- const res = await push([{ entity, id: recordId, baseVersion: c.serverVersion, data: c.localData }]);
12211
- const r = res.results?.[0];
12211
+ let r = (await push([{ entity, id: recordId, baseVersion: c.serverVersion, data: c.localData }])).results?.[0];
12212
+ if (!r?.ok && r?.conflict && typeof r.server?.version === "number" && r.server.version !== c.serverVersion) {
12213
+ r = (await push([{ entity, id: recordId, baseVersion: r.server.version, data: c.localData }])).results?.[0];
12214
+ }
12212
12215
  if (!r?.ok) {
12213
12216
  if (r?.conflict) return { ok: false, reason: "still-conflict" };
12214
12217
  return { ok: false, reason: "not-found" };
@@ -30234,6 +30237,7 @@ async function recordSessionResult(input) {
30234
30237
  // src/routes/terminal.ts
30235
30238
  init_stage_machine();
30236
30239
  init_pty();
30240
+ var TERMINAL_WS_MESSAGES_PER_MINUTE = 6e3;
30237
30241
  async function advanceStage(specId, repoDir, sessionId2, flow, worktree) {
30238
30242
  const next = stageForRun(readPhases(phaseFilePath(repoDir, sessionId2), flow), worktree, specId);
30239
30243
  if (!next) return;
@@ -30577,7 +30581,7 @@ async function terminal_default(app2, opts) {
30577
30581
  socket2.close(1008, "connection limit");
30578
30582
  return;
30579
30583
  }
30580
- const guard = new WsMessageGuard();
30584
+ const guard = new WsMessageGuard({ perWindow: TERMINAL_WS_MESSAGES_PER_MINUTE });
30581
30585
  const client = { send: (m) => socket2.send(m), close: () => socket2.close() };
30582
30586
  attach(id, client);
30583
30587
  socket2.on("message", async (raw2) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hanoman",
3
- "version": "0.1.36",
3
+ "version": "0.1.38",
4
4
  "description": "Orchestrator + dashboard workflow docs-driven untuk sesi Claude Code / Codex",
5
5
  "type": "module",
6
6
  "repository": {