@cursor/july 0.1.3 → 0.1.5

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 (141) hide show
  1. package/dist/bin/agent-serve.d.ts +1 -1
  2. package/dist/bin/agent-serve.js +40 -16
  3. package/dist/channels/slack/log.d.ts +1 -1
  4. package/dist/channels/slack/log.d.ts.map +1 -1
  5. package/dist/channels/slack/log.js +4 -5
  6. package/dist/channels/slack/setup.js +1 -1
  7. package/dist/channels/slack/socket-mode.d.ts.map +1 -1
  8. package/dist/channels/slack/socket-mode.js +10 -9
  9. package/dist/docs/404.html +2 -2
  10. package/dist/docs/ab.html +3 -3
  11. package/dist/docs/assets/{app.BR0RbIdx.js → app.DabPG-io.js} +1 -1
  12. package/dist/docs/assets/chunks/@localSearchIndexroot.QwK5BtEH.js +1 -0
  13. package/dist/docs/assets/chunks/{VPLocalSearchBox.qjsVTneI.js → VPLocalSearchBox.jmyr0bU0.js} +1 -1
  14. package/dist/docs/assets/chunks/{theme.2Kg8jIp_.js → theme.DysN9-VN.js} +2 -2
  15. package/dist/docs/assets/{index.md.m81y7TY7.js → index.md.Cylk70gg.js} +1 -1
  16. package/dist/docs/building-with-agents.html +3 -3
  17. package/dist/docs/concepts.html +3 -3
  18. package/dist/docs/deployment.html +3 -3
  19. package/dist/docs/evals.html +3 -3
  20. package/dist/docs/guides/agent-to-agent.html +3 -3
  21. package/dist/docs/guides/cloud-runtime.html +3 -3
  22. package/dist/docs/guides/github.html +3 -3
  23. package/dist/docs/guides/human-in-the-loop.html +3 -3
  24. package/dist/docs/guides/slack.html +3 -3
  25. package/dist/docs/guides/webhooks.html +3 -3
  26. package/dist/docs/hashmap.json +1 -1
  27. package/dist/docs/hillclimbing.html +3 -3
  28. package/dist/docs/index.html +5 -5
  29. package/dist/docs/quickstart.html +3 -3
  30. package/dist/docs/reference/agent-config.html +3 -3
  31. package/dist/docs/reference/channels.html +3 -3
  32. package/dist/docs/reference/cli.html +3 -3
  33. package/dist/docs/reference/connections.html +3 -3
  34. package/dist/docs/reference/hooks.html +3 -3
  35. package/dist/docs/reference/http-api.html +3 -3
  36. package/dist/docs/reference/instructions.html +3 -3
  37. package/dist/docs/reference/playground.html +3 -3
  38. package/dist/docs/reference/project-layout.html +3 -3
  39. package/dist/docs/reference/schedules.html +3 -3
  40. package/dist/docs/reference/sessions.html +3 -3
  41. package/dist/docs/reference/skills.html +3 -3
  42. package/dist/docs/reference/subagents.html +3 -3
  43. package/dist/docs/reference/tools.html +3 -3
  44. package/dist/docs/scaffolding-agents.html +3 -3
  45. package/dist/docs/storage.html +3 -3
  46. package/dist/docs/troubleshooting.html +3 -3
  47. package/dist/internal/ab-collector.js +3 -3
  48. package/dist/internal/ab-fold.js +1 -1
  49. package/dist/internal/cli-ax.d.ts +13 -5
  50. package/dist/internal/cli-ax.d.ts.map +1 -1
  51. package/dist/internal/cli-ax.js +41 -15
  52. package/dist/internal/cli-deploy.d.ts.map +1 -1
  53. package/dist/internal/cli-deploy.js +5 -2
  54. package/dist/internal/cli-github.js +13 -13
  55. package/dist/internal/cursor/account-mcp.js +3 -3
  56. package/dist/internal/cursor/backend-client.js +1 -1
  57. package/dist/internal/cursor/credentials.d.ts +5 -3
  58. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  59. package/dist/internal/cursor/credentials.js +9 -6
  60. package/dist/internal/cursor/github-credentials.js +3 -3
  61. package/dist/internal/cursor-event-relay.d.ts +4 -1
  62. package/dist/internal/cursor-event-relay.d.ts.map +1 -1
  63. package/dist/internal/cursor-event-relay.js +7 -1
  64. package/dist/internal/cursor-relay-core.d.ts +37 -2
  65. package/dist/internal/cursor-relay-core.d.ts.map +1 -1
  66. package/dist/internal/cursor-relay-core.js +91 -9
  67. package/dist/internal/cursor-slack-relay.d.ts +2 -2
  68. package/dist/internal/cursor-slack-relay.d.ts.map +1 -1
  69. package/dist/internal/cursor-slack-relay.js +5 -1
  70. package/dist/internal/distribution.d.ts +7 -0
  71. package/dist/internal/distribution.d.ts.map +1 -1
  72. package/dist/internal/distribution.js +7 -0
  73. package/dist/internal/docs-site.js +3 -3
  74. package/dist/internal/eval-run-store.d.ts.map +1 -1
  75. package/dist/internal/eval-run-store.js +8 -8
  76. package/dist/internal/github-fanout.js +2 -2
  77. package/dist/internal/host-platforms.js +5 -5
  78. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  79. package/dist/internal/mcp-endpoint.js +1 -1
  80. package/dist/internal/playground/toolchain.js +6 -6
  81. package/dist/internal/reminder-runner.d.ts.map +1 -1
  82. package/dist/internal/reminder-runner.js +11 -11
  83. package/dist/internal/resolve-prod-target.d.ts +2 -0
  84. package/dist/internal/resolve-prod-target.d.ts.map +1 -1
  85. package/dist/internal/resolve-prod-target.js +44 -21
  86. package/dist/internal/resolved-connections.js +5 -5
  87. package/dist/internal/schedule-runner.js +1 -1
  88. package/dist/internal/server.js +14 -14
  89. package/dist/internal/session-engine.d.ts.map +1 -1
  90. package/dist/internal/session-engine.js +13 -13
  91. package/dist/internal/sessions-client.d.ts +13 -0
  92. package/dist/internal/sessions-client.d.ts.map +1 -1
  93. package/dist/internal/sessions-client.js +25 -0
  94. package/dist/internal/storage-coordinator.js +6 -6
  95. package/dist/internal/update-check.d.ts +93 -0
  96. package/dist/internal/update-check.d.ts.map +1 -0
  97. package/dist/internal/update-check.js +431 -0
  98. package/dist/playground/assets/{index-D-vo2lV_.css → index-BEauYlII.css} +1 -1
  99. package/dist/playground/assets/index-BtM0wEGg.js +319 -0
  100. package/dist/playground/index.html +2 -2
  101. package/dist/types.d.ts +3 -1
  102. package/dist/types.d.ts.map +1 -1
  103. package/docs/README.md +0 -1
  104. package/package.json +2 -1
  105. package/skills/setup-slack/SKILL.md +1 -1
  106. package/src/bin/agent-serve.ts +42 -16
  107. package/src/channels/slack/log.ts +5 -5
  108. package/src/channels/slack/setup.ts +1 -1
  109. package/src/channels/slack/socket-mode.ts +11 -9
  110. package/src/internal/ab-collector.ts +3 -3
  111. package/src/internal/ab-fold.ts +1 -1
  112. package/src/internal/cli-ax.ts +55 -16
  113. package/src/internal/cli-deploy.ts +5 -2
  114. package/src/internal/cli-github.ts +13 -15
  115. package/src/internal/cursor/account-mcp.ts +3 -3
  116. package/src/internal/cursor/backend-client.ts +1 -1
  117. package/src/internal/cursor/credentials.ts +12 -7
  118. package/src/internal/cursor/github-credentials.ts +3 -3
  119. package/src/internal/cursor-event-relay.ts +11 -2
  120. package/src/internal/cursor-relay-core.ts +119 -11
  121. package/src/internal/cursor-slack-relay.ts +7 -3
  122. package/src/internal/distribution.ts +8 -0
  123. package/src/internal/docs-site.ts +3 -3
  124. package/src/internal/eval-run-store.ts +8 -10
  125. package/src/internal/github-fanout.ts +2 -2
  126. package/src/internal/host-platforms.ts +5 -5
  127. package/src/internal/mcp-endpoint.ts +1 -3
  128. package/src/internal/playground/toolchain.ts +6 -6
  129. package/src/internal/reminder-runner.ts +11 -17
  130. package/src/internal/resolve-prod-target.ts +55 -23
  131. package/src/internal/resolved-connections.ts +5 -5
  132. package/src/internal/schedule-runner.ts +1 -1
  133. package/src/internal/server.ts +14 -14
  134. package/src/internal/session-engine.ts +13 -15
  135. package/src/internal/sessions-client.ts +34 -0
  136. package/src/internal/storage-coordinator.ts +6 -6
  137. package/src/internal/update-check.ts +552 -0
  138. package/src/types.ts +3 -1
  139. package/dist/docs/assets/chunks/@localSearchIndexroot.DtIOQzGj.js +0 -1
  140. package/dist/playground/assets/index-x60b9q2j.js +0 -312
  141. /package/dist/docs/assets/{index.md.m81y7TY7.lean.js → index.md.Cylk70gg.lean.js} +0 -0
@@ -249,7 +249,7 @@ export class SessionEngine {
249
249
  (sessionId) => this.sessions.eventFilePath(sessionId),
250
250
  (sessionId, error) =>
251
251
  this.logger(
252
- `[agent-serve] failed to persist events for ${sessionId}: ${describeError(error)}`
252
+ `[agentkit] failed to persist events for ${sessionId}: ${describeError(error)}`
253
253
  )
254
254
  );
255
255
  this.storage =
@@ -445,7 +445,7 @@ export class SessionEngine {
445
445
  }
446
446
  } catch (error) {
447
447
  this.logger(
448
- `[agent-serve] ab "${experiment.name}" enrollment failed (sticky skip): ${describeError(error)}`
448
+ `[agentkit] ab "${experiment.name}" enrollment failed (sticky skip): ${describeError(error)}`
449
449
  );
450
450
  variant = null;
451
451
  }
@@ -712,7 +712,7 @@ export class SessionEngine {
712
712
  this.queueDispatch(sessionId, event);
713
713
  } catch (error) {
714
714
  this.logger(
715
- `[agent-serve] failed to record event for ${sessionId}: ${describeError(error)}`
715
+ `[agentkit] failed to record event for ${sessionId}: ${describeError(error)}`
716
716
  );
717
717
  }
718
718
  };
@@ -1401,7 +1401,7 @@ export class SessionEngine {
1401
1401
  .then(() => this.dispatchEvent(sessionId, event))
1402
1402
  .catch((error) => {
1403
1403
  this.logger(
1404
- `[agent-serve] event dispatch failed for ${sessionId}: ${describeError(error)}`
1404
+ `[agentkit] event dispatch failed for ${sessionId}: ${describeError(error)}`
1405
1405
  );
1406
1406
  })
1407
1407
  .then(() => {
@@ -1446,7 +1446,7 @@ export class SessionEngine {
1446
1446
  await handler(event, channelCtx, sessionCtx);
1447
1447
  } catch (error) {
1448
1448
  this.logger(
1449
- `[agent-serve] channel "${record.channelId}" handler for ${event.type} threw: ${describeError(error)}`
1449
+ `[agentkit] channel "${record.channelId}" handler for ${event.type} threw: ${describeError(error)}`
1450
1450
  );
1451
1451
  }
1452
1452
  }
@@ -1474,7 +1474,7 @@ export class SessionEngine {
1474
1474
  });
1475
1475
  } catch (error) {
1476
1476
  this.logger(
1477
- `[agent-serve] hook "${hook.name}" handler for ${event.type} threw: ${describeError(error)}`
1477
+ `[agentkit] hook "${hook.name}" handler for ${event.type} threw: ${describeError(error)}`
1478
1478
  );
1479
1479
  }
1480
1480
  }
@@ -1616,7 +1616,7 @@ export class SessionEngine {
1616
1616
  });
1617
1617
  } catch (error) {
1618
1618
  this.logger(
1619
- `[agent-serve] ab persistSnapshots.save threw: ${describeError(error)}`
1619
+ `[agentkit] ab persistSnapshots.save threw: ${describeError(error)}`
1620
1620
  );
1621
1621
  }
1622
1622
  } else {
@@ -1825,9 +1825,7 @@ export class SessionEngine {
1825
1825
  try {
1826
1826
  await this.runBulkRestore(storage, policy);
1827
1827
  } catch (error) {
1828
- this.logger(
1829
- `[agent-serve] session restore failed: ${describeError(error)}`
1830
- );
1828
+ this.logger(`[agentkit] session restore failed: ${describeError(error)}`);
1831
1829
  }
1832
1830
  }
1833
1831
 
@@ -1884,7 +1882,7 @@ export class SessionEngine {
1884
1882
  return { record, events };
1885
1883
  } catch (error) {
1886
1884
  this.logger(
1887
- `[agent-serve] failed to restore session ${record.sessionId}: ${describeError(error)}`
1885
+ `[agentkit] failed to restore session ${record.sessionId}: ${describeError(error)}`
1888
1886
  );
1889
1887
  return undefined;
1890
1888
  }
@@ -1903,7 +1901,7 @@ export class SessionEngine {
1903
1901
  (ndjson === undefined ? 0 : Buffer.byteLength(ndjson, "utf8"));
1904
1902
  if (bytes > budget) {
1905
1903
  this.logger(
1906
- `[agent-serve] session restore stopped at the ${policy.maxTotalBytes}-byte budget after ${restored} session(s); remaining sessions restore lazily on resume`
1904
+ `[agentkit] session restore stopped at the ${policy.maxTotalBytes}-byte budget after ${restored} session(s); remaining sessions restore lazily on resume`
1907
1905
  );
1908
1906
  break outer;
1909
1907
  }
@@ -1913,13 +1911,13 @@ export class SessionEngine {
1913
1911
  restored += 1;
1914
1912
  } catch (error) {
1915
1913
  this.logger(
1916
- `[agent-serve] failed to restore session ${item.record.sessionId}: ${describeError(error)}`
1914
+ `[agentkit] failed to restore session ${item.record.sessionId}: ${describeError(error)}`
1917
1915
  );
1918
1916
  }
1919
1917
  }
1920
1918
  }
1921
1919
  if (restored > 0) {
1922
- this.logger(`[agent-serve] restored ${restored} session(s) from storage`);
1920
+ this.logger(`[agentkit] restored ${restored} session(s) from storage`);
1923
1921
  }
1924
1922
  }
1925
1923
 
@@ -1975,7 +1973,7 @@ export class SessionEngine {
1975
1973
  const events = await storage.listSessionEvents(record.sessionId);
1976
1974
  await this.materializeSession(record, eventsNdjson(events));
1977
1975
  this.logger(
1978
- `[agent-serve] lazily restored session ${record.sessionId} from storage`
1976
+ `[agentkit] lazily restored session ${record.sessionId} from storage`
1979
1977
  );
1980
1978
  return record;
1981
1979
  }
@@ -152,6 +152,40 @@ function parseSessionSummary(value: unknown): SessionSummary | undefined {
152
152
  };
153
153
  }
154
154
 
155
+ /**
156
+ * Pick the previous (most recently updated) followable session for
157
+ * `resume` / `chat --resume` when no session id was passed.
158
+ * Followable = has a non-empty continuation token (task sessions without
159
+ * one are skipped).
160
+ */
161
+ export function pickPreviousSession(
162
+ sessions: readonly SessionSummary[]
163
+ ): SessionSummary | undefined {
164
+ const followable = sessions.filter(
165
+ (s) => typeof s.continuationToken === "string" && s.continuationToken !== ""
166
+ );
167
+ if (followable.length === 0) {
168
+ return undefined;
169
+ }
170
+ return [...followable].sort((a, b) =>
171
+ b.updatedAt.localeCompare(a.updatedAt)
172
+ )[0];
173
+ }
174
+
175
+ /** Look up the most recently updated followable session id. */
176
+ export async function resolvePreviousSessionId(args: {
177
+ baseUrl: string;
178
+ auth?: RequestAuth;
179
+ fetchImpl?: typeof fetch;
180
+ }): Promise<string | undefined> {
181
+ const sessions = await listSessions({
182
+ baseUrl: args.baseUrl,
183
+ auth: args.auth,
184
+ fetchImpl: args.fetchImpl,
185
+ });
186
+ return pickPreviousSession(sessions)?.sessionId;
187
+ }
188
+
155
189
  /** Format a sessions table (id, channel, mode, turns, running, updated). */
156
190
  export function formatSessionsTable(sessions: SessionSummary[]): string {
157
191
  if (sessions.length === 0) {
@@ -317,7 +317,7 @@ export class StorageCoordinator {
317
317
  // under at-most-once). The session is unrecoverable; treat as a miss
318
318
  // so the conversation can continue rather than failing forever.
319
319
  this.logger(
320
- `[agent-serve] storage continuation entry points at missing session ${sessionId}; treating as a miss`
320
+ `[agentkit] storage continuation entry points at missing session ${sessionId}; treating as a miss`
321
321
  );
322
322
  return undefined;
323
323
  }
@@ -488,7 +488,7 @@ export class StorageCoordinator {
488
488
  return value == null ? undefined : (value as unknown as ABSnapshot);
489
489
  } catch (error) {
490
490
  this.logger(
491
- `[agent-serve] storage get(ab-snapshot) failed: ${describeError(error)}`
491
+ `[agentkit] storage get(ab-snapshot) failed: ${describeError(error)}`
492
492
  );
493
493
  return undefined;
494
494
  }
@@ -521,7 +521,7 @@ export class StorageCoordinator {
521
521
  clearTimeout(timer);
522
522
  if (!drained) {
523
523
  this.logger(
524
- `[agent-serve] storage shutdown drain timed out after ${CLOSE_DRAIN_TIMEOUT_MS}ms with ${this.pending} write(s) undelivered`
524
+ `[agentkit] storage shutdown drain timed out after ${CLOSE_DRAIN_TIMEOUT_MS}ms with ${this.pending} write(s) undelivered`
525
525
  );
526
526
  }
527
527
  }
@@ -569,7 +569,7 @@ export class StorageCoordinator {
569
569
  return Array.isArray(entries) ? entries : [];
570
570
  } catch (error) {
571
571
  this.logger(
572
- `[agent-serve] storage list(${prefix}) failed: ${describeError(error)}`
572
+ `[agentkit] storage list(${prefix}) failed: ${describeError(error)}`
573
573
  );
574
574
  return [];
575
575
  }
@@ -583,7 +583,7 @@ export class StorageCoordinator {
583
583
  this.dropped += ops.length;
584
584
  if (this.dropped <= ops.length || this.dropped % 1_000 < ops.length) {
585
585
  this.logger(
586
- `[agent-serve] storage queue full (${MAX_PENDING_OPS} pending writes); dropped ${this.dropped} write(s) so far — the sink is too slow for the traffic`
586
+ `[agentkit] storage queue full (${MAX_PENDING_OPS} pending writes); dropped ${this.dropped} write(s) so far — the sink is too slow for the traffic`
587
587
  );
588
588
  }
589
589
  return;
@@ -600,7 +600,7 @@ export class StorageCoordinator {
600
600
  }
601
601
  } catch (error) {
602
602
  this.logger(
603
- `[agent-serve] storage ${op.op}(${op.key}) failed: ${describeError(error)}`
603
+ `[agentkit] storage ${op.op}(${op.key}) failed: ${describeError(error)}`
604
604
  );
605
605
  } finally {
606
606
  this.pending -= 1;