@cursor/july 0.1.2 → 0.1.4

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 (232) hide show
  1. package/AGENTS.md +16 -5
  2. package/README.md +8 -9
  3. package/dist/bin/agent-serve.d.ts +3 -1
  4. package/dist/bin/agent-serve.d.ts.map +1 -1
  5. package/dist/bin/agent-serve.js +416 -155
  6. package/dist/channels/slack/log.d.ts +1 -1
  7. package/dist/channels/slack/log.d.ts.map +1 -1
  8. package/dist/channels/slack/log.js +4 -5
  9. package/dist/channels/slack/setup.js +1 -1
  10. package/dist/channels/slack/socket-mode.d.ts.map +1 -1
  11. package/dist/channels/slack/socket-mode.js +10 -9
  12. package/dist/docs/404.html +2 -2
  13. package/dist/docs/ab.html +3 -3
  14. package/dist/docs/assets/{app.Oje4vhlk.js → app.DF-Yx4OP.js} +1 -1
  15. package/dist/docs/assets/chunks/@localSearchIndexroot.0XrheBv2.js +1 -0
  16. package/dist/docs/assets/chunks/{VPLocalSearchBox.H5XZ2zCB.js → VPLocalSearchBox.DSeJSudL.js} +1 -1
  17. package/dist/docs/assets/chunks/{theme.CTR_TuaE.js → theme.DZVLTXOC.js} +2 -2
  18. package/dist/docs/assets/{index.md.m81y7TY7.js → index.md.Cylk70gg.js} +1 -1
  19. package/dist/docs/assets/{quickstart.md.CfU8_uTC.js → quickstart.md.BU6Iwi_9.js} +18 -6
  20. package/dist/docs/assets/{reference_cli.md.DA730zCu.js → reference_cli.md.Bv6pOxcF.js} +11 -6
  21. package/dist/docs/assets/{reference_cli.md.DA730zCu.lean.js → reference_cli.md.Bv6pOxcF.lean.js} +1 -1
  22. package/dist/docs/building-with-agents.html +3 -3
  23. package/dist/docs/concepts.html +3 -3
  24. package/dist/docs/deployment.html +3 -3
  25. package/dist/docs/evals.html +3 -3
  26. package/dist/docs/guides/agent-to-agent.html +3 -3
  27. package/dist/docs/guides/cloud-runtime.html +3 -3
  28. package/dist/docs/guides/github.html +3 -3
  29. package/dist/docs/guides/human-in-the-loop.html +3 -3
  30. package/dist/docs/guides/slack.html +3 -3
  31. package/dist/docs/guides/webhooks.html +3 -3
  32. package/dist/docs/hashmap.json +1 -1
  33. package/dist/docs/hillclimbing.html +3 -3
  34. package/dist/docs/index.html +5 -5
  35. package/dist/docs/quickstart.html +22 -10
  36. package/dist/docs/reference/agent-config.html +3 -3
  37. package/dist/docs/reference/channels.html +3 -3
  38. package/dist/docs/reference/cli.html +14 -9
  39. package/dist/docs/reference/connections.html +3 -3
  40. package/dist/docs/reference/hooks.html +3 -3
  41. package/dist/docs/reference/http-api.html +3 -3
  42. package/dist/docs/reference/instructions.html +3 -3
  43. package/dist/docs/reference/playground.html +3 -3
  44. package/dist/docs/reference/project-layout.html +3 -3
  45. package/dist/docs/reference/schedules.html +3 -3
  46. package/dist/docs/reference/sessions.html +3 -3
  47. package/dist/docs/reference/skills.html +3 -3
  48. package/dist/docs/reference/subagents.html +3 -3
  49. package/dist/docs/reference/tools.html +3 -3
  50. package/dist/docs/scaffolding-agents.html +3 -3
  51. package/dist/docs/storage.html +3 -3
  52. package/dist/docs/troubleshooting.html +3 -3
  53. package/dist/internal/ab-collector.js +3 -3
  54. package/dist/internal/ab-fold.js +1 -1
  55. package/dist/internal/chat-client.d.ts +29 -3
  56. package/dist/internal/chat-client.d.ts.map +1 -1
  57. package/dist/internal/chat-client.js +180 -27
  58. package/dist/internal/cli-ax.d.ts +83 -2
  59. package/dist/internal/cli-ax.d.ts.map +1 -1
  60. package/dist/internal/cli-ax.js +626 -52
  61. package/dist/internal/cli-cursor.d.ts.map +1 -1
  62. package/dist/internal/cli-cursor.js +8 -36
  63. package/dist/internal/cli-deploy.d.ts +59 -3
  64. package/dist/internal/cli-deploy.d.ts.map +1 -1
  65. package/dist/internal/cli-deploy.js +316 -38
  66. package/dist/internal/cli-github.js +13 -13
  67. package/dist/internal/cursor/account-mcp.js +3 -3
  68. package/dist/internal/cursor/backend-client.js +1 -1
  69. package/dist/internal/cursor/credentials.d.ts +14 -3
  70. package/dist/internal/cursor/credentials.d.ts.map +1 -1
  71. package/dist/internal/cursor/credentials.js +21 -6
  72. package/dist/internal/cursor/github-credentials.js +3 -3
  73. package/dist/internal/cursor-event-relay.js +1 -1
  74. package/dist/internal/cursor-relay-core.d.ts +1 -1
  75. package/dist/internal/cursor-relay-core.d.ts.map +1 -1
  76. package/dist/internal/cursor-relay-core.js +2 -1
  77. package/dist/internal/cursor-slack-relay.js +1 -1
  78. package/dist/internal/deploy-client.d.ts +9 -1
  79. package/dist/internal/deploy-client.d.ts.map +1 -1
  80. package/dist/internal/deploy-client.js +23 -3
  81. package/dist/internal/deploy-source.d.ts +35 -0
  82. package/dist/internal/deploy-source.d.ts.map +1 -0
  83. package/dist/internal/deploy-source.js +118 -0
  84. package/dist/internal/discovery.d.ts +11 -0
  85. package/dist/internal/discovery.d.ts.map +1 -1
  86. package/dist/internal/discovery.js +43 -14
  87. package/dist/internal/distribution.d.ts +7 -0
  88. package/dist/internal/distribution.d.ts.map +1 -1
  89. package/dist/internal/distribution.js +7 -0
  90. package/dist/internal/docs-site.js +3 -3
  91. package/dist/internal/eval-run-store.d.ts.map +1 -1
  92. package/dist/internal/eval-run-store.js +10 -9
  93. package/dist/internal/eval-runner.d.ts +2 -0
  94. package/dist/internal/eval-runner.d.ts.map +1 -1
  95. package/dist/internal/eval-runner.js +2 -0
  96. package/dist/internal/event-mapper.d.ts +54 -1
  97. package/dist/internal/event-mapper.d.ts.map +1 -1
  98. package/dist/internal/event-mapper.js +151 -41
  99. package/dist/internal/github-fanout.js +2 -2
  100. package/dist/internal/host-platforms.js +5 -5
  101. package/dist/internal/init-project.d.ts +88 -1
  102. package/dist/internal/init-project.d.ts.map +1 -1
  103. package/dist/internal/init-project.js +221 -31
  104. package/dist/internal/install-cursor-skills.d.ts +64 -0
  105. package/dist/internal/install-cursor-skills.d.ts.map +1 -0
  106. package/dist/internal/install-cursor-skills.js +274 -0
  107. package/dist/internal/logs-client.d.ts +60 -0
  108. package/dist/internal/logs-client.d.ts.map +1 -0
  109. package/dist/internal/logs-client.js +311 -0
  110. package/dist/internal/mcp-endpoint.d.ts.map +1 -1
  111. package/dist/internal/mcp-endpoint.js +1 -1
  112. package/dist/internal/open-browser.d.ts +5 -0
  113. package/dist/internal/open-browser.d.ts.map +1 -0
  114. package/dist/internal/open-browser.js +34 -0
  115. package/dist/internal/playground/toolchain.d.ts.map +1 -1
  116. package/dist/internal/playground/toolchain.js +19 -14
  117. package/dist/internal/playground-proxy.d.ts +69 -0
  118. package/dist/internal/playground-proxy.d.ts.map +1 -0
  119. package/dist/internal/playground-proxy.js +468 -0
  120. package/dist/internal/prompt-context.d.ts +35 -0
  121. package/dist/internal/prompt-context.d.ts.map +1 -0
  122. package/dist/internal/prompt-context.js +71 -0
  123. package/dist/internal/reminder-runner.d.ts.map +1 -1
  124. package/dist/internal/reminder-runner.js +11 -11
  125. package/dist/internal/request-headers.d.ts +11 -0
  126. package/dist/internal/request-headers.d.ts.map +1 -0
  127. package/dist/internal/request-headers.js +14 -0
  128. package/dist/internal/resolve-prod-target.d.ts +44 -0
  129. package/dist/internal/resolve-prod-target.d.ts.map +1 -0
  130. package/dist/internal/resolve-prod-target.js +134 -0
  131. package/dist/internal/resolved-connections.js +5 -5
  132. package/dist/internal/run-client.d.ts +2 -2
  133. package/dist/internal/run-client.d.ts.map +1 -1
  134. package/dist/internal/run-client.js +38 -23
  135. package/dist/internal/schedule-runner.js +1 -1
  136. package/dist/internal/server.d.ts.map +1 -1
  137. package/dist/internal/server.js +23 -17
  138. package/dist/internal/session-engine.d.ts +1 -1
  139. package/dist/internal/session-engine.d.ts.map +1 -1
  140. package/dist/internal/session-engine.js +34 -19
  141. package/dist/internal/sessions-client.d.ts +34 -0
  142. package/dist/internal/sessions-client.d.ts.map +1 -0
  143. package/dist/internal/sessions-client.js +193 -0
  144. package/dist/internal/storage-coordinator.js +6 -6
  145. package/dist/internal/stream-progress.d.ts.map +1 -1
  146. package/dist/internal/stream-progress.js +31 -3
  147. package/dist/internal/terminal-style.d.ts +22 -0
  148. package/dist/internal/terminal-style.d.ts.map +1 -0
  149. package/dist/internal/terminal-style.js +49 -0
  150. package/dist/internal/trajectory.d.ts +10 -5
  151. package/dist/internal/trajectory.d.ts.map +1 -1
  152. package/dist/internal/trajectory.js +82 -10
  153. package/dist/internal/update-check.d.ts +93 -0
  154. package/dist/internal/update-check.d.ts.map +1 -0
  155. package/dist/internal/update-check.js +431 -0
  156. package/dist/internal/workspace.d.ts +11 -0
  157. package/dist/internal/workspace.d.ts.map +1 -1
  158. package/dist/internal/workspace.js +38 -4
  159. package/dist/playground/assets/index-Ct_Usdm8.css +1 -0
  160. package/dist/playground/assets/index-Dsyb-Vaj.js +319 -0
  161. package/dist/playground/index.html +2 -2
  162. package/dist/types.d.ts +29 -2
  163. package/dist/types.d.ts.map +1 -1
  164. package/docs/README.md +0 -1
  165. package/docs/quickstart.md +22 -7
  166. package/docs/reference/cli.md +51 -3
  167. package/package.json +4 -1
  168. package/skills/ab/SKILL.md +8 -8
  169. package/skills/create-agent/SKILL.md +28 -22
  170. package/skills/debug/SKILL.md +11 -11
  171. package/skills/evals/SKILL.md +16 -16
  172. package/skills/framework-map/SKILL.md +6 -6
  173. package/skills/github/SKILL.md +13 -13
  174. package/skills/hillclimb/SKILL.md +10 -10
  175. package/skills/setup-slack/SKILL.md +14 -14
  176. package/src/bin/agent-serve.ts +451 -191
  177. package/src/channels/slack/log.ts +5 -5
  178. package/src/channels/slack/setup.ts +1 -1
  179. package/src/channels/slack/socket-mode.ts +11 -9
  180. package/src/internal/ab-collector.ts +3 -3
  181. package/src/internal/ab-fold.ts +1 -1
  182. package/src/internal/chat-client.ts +252 -37
  183. package/src/internal/cli-ax.ts +761 -72
  184. package/src/internal/cli-cursor.ts +14 -42
  185. package/src/internal/cli-deploy.ts +428 -49
  186. package/src/internal/cli-github.ts +13 -15
  187. package/src/internal/cursor/account-mcp.ts +3 -3
  188. package/src/internal/cursor/backend-client.ts +1 -1
  189. package/src/internal/cursor/credentials.ts +26 -7
  190. package/src/internal/cursor/github-credentials.ts +3 -3
  191. package/src/internal/cursor-event-relay.ts +1 -1
  192. package/src/internal/cursor-relay-core.ts +4 -2
  193. package/src/internal/cursor-slack-relay.ts +1 -1
  194. package/src/internal/deploy-client.ts +45 -4
  195. package/src/internal/deploy-source.ts +133 -0
  196. package/src/internal/discovery.ts +53 -16
  197. package/src/internal/distribution.ts +8 -0
  198. package/src/internal/docs-site.ts +3 -3
  199. package/src/internal/eval-run-store.ts +10 -11
  200. package/src/internal/eval-runner.ts +5 -0
  201. package/src/internal/event-mapper.ts +222 -42
  202. package/src/internal/github-fanout.ts +2 -2
  203. package/src/internal/host-platforms.ts +5 -5
  204. package/src/internal/init-project.ts +333 -51
  205. package/src/internal/install-cursor-skills.ts +327 -0
  206. package/src/internal/logs-client.ts +442 -0
  207. package/src/internal/mcp-endpoint.ts +1 -3
  208. package/src/internal/open-browser.ts +41 -0
  209. package/src/internal/playground/toolchain.ts +18 -16
  210. package/src/internal/playground-proxy.ts +576 -0
  211. package/src/internal/prompt-context.ts +95 -0
  212. package/src/internal/reminder-runner.ts +11 -17
  213. package/src/internal/request-headers.ts +23 -0
  214. package/src/internal/resolve-prod-target.ts +182 -0
  215. package/src/internal/resolved-connections.ts +5 -5
  216. package/src/internal/run-client.ts +39 -36
  217. package/src/internal/schedule-runner.ts +1 -1
  218. package/src/internal/server.ts +25 -16
  219. package/src/internal/session-engine.ts +35 -18
  220. package/src/internal/sessions-client.ts +216 -0
  221. package/src/internal/storage-coordinator.ts +6 -6
  222. package/src/internal/stream-progress.ts +36 -2
  223. package/src/internal/terminal-style.ts +74 -0
  224. package/src/internal/trajectory.ts +91 -13
  225. package/src/internal/update-check.ts +552 -0
  226. package/src/internal/workspace.ts +42 -4
  227. package/src/types.ts +45 -7
  228. package/dist/docs/assets/chunks/@localSearchIndexroot.zwQ9RCQ7.js +0 -1
  229. package/dist/playground/assets/index-B1Qc9h2u.css +0 -1
  230. package/dist/playground/assets/index-CpDYCj8W.js +0 -79
  231. /package/dist/docs/assets/{index.md.m81y7TY7.lean.js → index.md.Cylk70gg.lean.js} +0 -0
  232. /package/dist/docs/assets/{quickstart.md.CfU8_uTC.lean.js → quickstart.md.BU6Iwi_9.lean.js} +0 -0
@@ -42,7 +42,7 @@ import { assertSlackCursorAgentName } from "../channels/slack/types.js";
42
42
  import { allowAll, bearerAuth, localDevStrict } from "../channels.js";
43
43
  import { CursorAccountMcpBridge, collectCursorAccountConnections, cursorAccountMcpPath, } from "./cursor/account-mcp.js";
44
44
  import { CursorBackendClient } from "./cursor/backend-client.js";
45
- import { cursorBackendUrl, resolveApiKey, SIGN_IN_HINT, } from "./cursor/credentials.js";
45
+ import { cursorBackendUrl, cursorExternalApiUrl, resolveApiKey, SIGN_IN_HINT, } from "./cursor/credentials.js";
46
46
  import { CursorGithubCredentialProvider } from "./cursor/github-credentials.js";
47
47
  import { CursorEventRelay, formatCursorScmEventLog, scmMetadataToGitHubPayload, } from "./cursor-event-relay.js";
48
48
  import { CursorSlackRelay, createCursorSlackApiCaller, formatCursorSlackEventLog, } from "./cursor-slack-relay.js";
@@ -120,10 +120,13 @@ export function startServer(mounts_1) {
120
120
  throw new Error("githubChannel({ cursorAccount: true }) could not resolve Cursor event authentication.");
121
121
  }
122
122
  if (options.allowAnonymous === true) {
123
- throw new Error("githubChannel({ cursorAccount: true }) cannot be served with --allow-anonymous because admitted callers could use the signed-in account's GitHub access.");
123
+ if (options.allowAnonymousCursorGithub !== true) {
124
+ throw new Error("githubChannel({ cursorAccount: true }) cannot be served with --allow-anonymous because admitted callers could use the signed-in account's GitHub access. If every admitted caller is trusted (e.g. behind an SSO proxy), opt in with --allow-anonymous-cursor-github.");
125
+ }
126
+ logger("[agentkit] warning: --allow-anonymous-cursor-github — every admitted HTTP caller can drive sessions holding the signed-in account's repo-scoped GitHub credential; serve this only behind a trusted boundary (e.g. an SSO proxy)");
124
127
  }
125
128
  if (cursorGithubConfig.scope.permissions === "contents-write") {
126
- logger('[agent-serve] warning: Cursor GitHub credentials include contents:write — the host holds a push-capable token shared with model-driven tools and untrusted webhook content; prefer permissions: "pr-write" unless this agent must push code');
129
+ logger('[agentkit] warning: Cursor GitHub credentials include contents:write — the host holds a push-capable token shared with model-driven tools and untrusted webhook content; prefer permissions: "pr-write" unless this agent must push code');
127
130
  }
128
131
  const provider = new CursorGithubCredentialProvider({
129
132
  client: new CursorBackendClient({
@@ -158,7 +161,7 @@ export function startServer(mounts_1) {
158
161
  yield ensureDocsSiteBundle(logger);
159
162
  }
160
163
  if (options.allowAnonymous === true) {
161
- logger("[agent-serve] warning: --allow-anonymous admits every HTTP caller as the same principal; use only on a trusted network (e.g. Tailscale) and prefer --bearer-token for shared hosts");
164
+ logger("[agentkit] warning: --allow-anonymous admits every HTTP caller as the same principal; use only on a trusted network (e.g. Tailscale) and prefer --bearer-token for shared hosts");
162
165
  }
163
166
  const runner = (_l = options.runner) !== null && _l !== void 0 ? _l : new CursorSdkRunner(accountKey === undefined ? {} : { apiKey: accountKey.apiKey });
164
167
  const router = new Router();
@@ -276,7 +279,7 @@ export function startServer(mounts_1) {
276
279
  yield definition.onStart(startArgs);
277
280
  }
278
281
  catch (error) {
279
- logger(`[agent-serve] channel "${channel.id}" onStart failed: ${error instanceof Error
282
+ logger(`[agentkit] channel "${channel.id}" onStart failed: ${error instanceof Error
280
283
  ? ((_o = error.stack) !== null && _o !== void 0 ? _o : error.message)
281
284
  : String(error)}`);
282
285
  }
@@ -564,7 +567,7 @@ export function startServer(mounts_1) {
564
567
  yield stop();
565
568
  }
566
569
  catch (error) {
567
- logger(`[agent-serve] channel onStop failed: ${error instanceof Error
570
+ logger(`[agentkit] channel onStop failed: ${error instanceof Error
568
571
  ? ((_a = error.stack) !== null && _a !== void 0 ? _a : error.message)
569
572
  : String(error)}`);
570
573
  }
@@ -1037,14 +1040,17 @@ function mountAgentRoutes(router, runtime, args) {
1037
1040
  * serve instead of starting with a relay that could never run.
1038
1041
  */
1039
1042
  function requireCursorEventsAuth(config, accountKey) {
1040
- var _a, _b, _c, _d;
1043
+ var _a, _b, _c;
1041
1044
  const apiKey = ((_b = (_a = config.apiKey) !== null && _a !== void 0 ? _a : accountKey === null || accountKey === void 0 ? void 0 : accountKey.apiKey) !== null && _b !== void 0 ? _b : "").trim();
1042
1045
  if (apiKey === "") {
1043
- throw new Error(`[agent-serve] --cursor-events (serve({ cursorEvents })) requires a signed-in Cursor account: the SCM event stream is read as the host's user. ${SIGN_IN_HINT}`);
1046
+ throw new Error(`[agentkit] --cursor-events (serve({ cursorEvents })) requires a signed-in Cursor account: the SCM event stream is read as the host's user. ${SIGN_IN_HINT}`);
1044
1047
  }
1045
1048
  return {
1046
1049
  apiKey,
1047
- baseUrl: (_d = (_c = config.baseUrl) !== null && _c !== void 0 ? _c : accountKey === null || accountKey === void 0 ? void 0 : accountKey.backendUrl) !== null && _d !== void 0 ? _d : cursorBackendUrl(),
1050
+ // `/v0/scm-events/*` lives on the external API (api.cursor.com), not
1051
+ // api2. Prefer that default over the account key's backendUrl, which
1052
+ // follows cursorBackendUrl() (api2) when CURSOR_API_KEY is set.
1053
+ baseUrl: (_c = config.baseUrl) !== null && _c !== void 0 ? _c : cursorExternalApiUrl(),
1048
1054
  };
1049
1055
  }
1050
1056
  /**
@@ -1061,13 +1067,13 @@ function startCursorEventRelay(input) {
1061
1067
  }
1062
1068
  const repos = [...new Set(config.repos.map((repo) => repo.trim()))].filter((repo) => repo.length > 0);
1063
1069
  if (repos.length === 0) {
1064
- logger("[agent-serve] cursor-events: no repos configured (pass --repo owner/name); relay disabled");
1070
+ logger("[agentkit] cursor-events: no repos configured (pass --repo owner/name); relay disabled");
1065
1071
  return undefined;
1066
1072
  }
1067
1073
  const githubTargets = findGitHubChannelTargets(mounts);
1068
1074
  const events = [...new Set(githubTargets.flatMap((target) => target.events))];
1069
1075
  if (events.length === 0) {
1070
- logger("[agent-serve] cursor-events: no mounted agent declares a github channel; relay disabled");
1076
+ logger("[agentkit] cursor-events: no mounted agent declares a github channel; relay disabled");
1071
1077
  return undefined;
1072
1078
  }
1073
1079
  const baseStateRoot = stateRoot !== null && stateRoot !== void 0 ? stateRoot : join((_b = (_a = mounts[0]) === null || _a === void 0 ? void 0 : _a.project.rootDir) !== null && _b !== void 0 ? _b : process.cwd(), ".agent-serve");
@@ -1104,11 +1110,11 @@ function startCursorEventRelay(input) {
1104
1110
  const outcomes = result.targets
1105
1111
  .map((target) => `${target.slug || "default"}:${target.status}`)
1106
1112
  .join(", ");
1107
- logger(`[agent-serve] cursor-events: dispatched ${formatCursorScmEventLog(event)}${outcomes === "" ? "" : ` → ${outcomes}`}`);
1113
+ logger(`[agentkit] cursor-events: dispatched ${formatCursorScmEventLog(event)}${outcomes === "" ? "" : ` → ${outcomes}`}`);
1108
1114
  }),
1109
1115
  });
1110
1116
  relay.start();
1111
- logger(`[agent-serve] cursor-events: relaying ${events.length} event kind(s) for ${repos.join(", ")} from ${auth.baseUrl}`);
1117
+ logger(`[agentkit] cursor-events: relaying ${events.length} event kind(s) for ${repos.join(", ")} from ${auth.baseUrl}`);
1112
1118
  return relay;
1113
1119
  }
1114
1120
  function collectCursorGithubTargets(mounts) {
@@ -1238,7 +1244,7 @@ function startCursorSlackRelay(input) {
1238
1244
  runtime: target.runtime,
1239
1245
  channelId: target.channelId,
1240
1246
  });
1241
- logger(`[agent-serve] cursor-slack: dispatching ${formatCursorSlackEventLog(envelope)} → ${target.runtime.slug || "default"}`);
1247
+ logger(`[agentkit] cursor-slack: dispatching ${formatCursorSlackEventLog(envelope)} → ${target.runtime.slug || "default"}`);
1242
1248
  yield dispatchCursorSlackEnvelope({
1243
1249
  runtime: target.accountRuntime,
1244
1250
  envelope,
@@ -1260,7 +1266,7 @@ function startCursorSlackRelay(input) {
1260
1266
  }));
1261
1267
  }
1262
1268
  relay.start();
1263
- logger(`[agent-serve] cursor-slack: relaying Slack for ${targets
1269
+ logger(`[agentkit] cursor-slack: relaying Slack for ${targets
1264
1270
  .map((target) => `${target.agentName} (${target.runtime.slug || "default"})`)
1265
1271
  .join(", ")} from ${baseUrl} — mention "@Cursor <agent name> …" in the linked workspace`);
1266
1272
  return relay;
@@ -1325,7 +1331,7 @@ function handleRequest(router, req, res, logger) {
1325
1331
  response = errorResponse(403, "forbidden", error.message);
1326
1332
  }
1327
1333
  else {
1328
- logger(`[agent-serve] request failed: ${error instanceof Error
1334
+ logger(`[agentkit] request failed: ${error instanceof Error
1329
1335
  ? ((_c = error.stack) !== null && _c !== void 0 ? _c : error.message)
1330
1336
  : String(error)}`);
1331
1337
  response = errorResponse(500, "internal_error", "Internal server error.");
@@ -1335,7 +1341,7 @@ function handleRequest(router, req, res, logger) {
1335
1341
  yield writeFetchResponse(response, res, method);
1336
1342
  }
1337
1343
  catch (error) {
1338
- logger(`[agent-serve] response write failed: ${error instanceof Error ? error.message : String(error)}`);
1344
+ logger(`[agentkit] response write failed: ${error instanceof Error ? error.message : String(error)}`);
1339
1345
  res.destroy();
1340
1346
  }
1341
1347
  });
@@ -13,7 +13,7 @@ import type { AgentRunner } from "./sdk-runner.js";
13
13
  import { SessionStore } from "./session-store.js";
14
14
  import { StorageCoordinator } from "./storage-coordinator.js";
15
15
  export declare const HTTP_CHANNEL_ID = "http";
16
- export declare const SCHEDULE_CHANNEL_PREFIX = "schedule:";
16
+ export { SCHEDULE_CHANNEL_PREFIX } from "./prompt-context.js";
17
17
  export declare class SessionBusyError extends Error {
18
18
  constructor(sessionId: string);
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-engine.d.ts","sourceRoot":"","sources":["../../src/internal/session-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-engine.d.ts","sourceRoot":"","sources":["../../src/internal/session-engine.ts"],"names":[],"mappings":"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"}
@@ -37,19 +37,21 @@ import { buildABSnapshot } from "./ab-snapshot.js";
37
37
  import { ApprovalGate } from "./approval-gate.js";
38
38
  import { samePrincipal } from "./auth.js";
39
39
  import { mergeCloudOptions, resolveSessionRuntime } from "./cloud-merge.js";
40
+ import { isDevMode } from "./dev-mode.js";
40
41
  import { EventLogStore } from "./event-log.js";
41
42
  import { TurnEventMapper } from "./event-mapper.js";
42
43
  import { createHostPlatforms } from "./host-platforms.js";
43
44
  import { formatContinuationToken, newContinuationKey, newSessionId, newToolCallId, } from "./ids.js";
44
45
  import { validateToolInput } from "./json-schema.js";
45
46
  import { McpHost } from "./mcp-host.js";
47
+ import { buildIdentitySection, buildSessionContextBlock, SCHEDULE_CHANNEL_PREFIX, } from "./prompt-context.js";
46
48
  import { assertCloudCanHonorAccountServersFilters } from "./resolved-connections.js";
47
49
  import { SessionStore } from "./session-store.js";
48
50
  import { StorageCoordinator } from "./storage-coordinator.js";
49
51
  import { normalizeToolResult, toolCallErrorMessage } from "./tool-result.js";
50
52
  import { buildAgentToolsCatalog, materializeWorkspace, writeWorkspaceFiles, } from "./workspace.js";
51
53
  export const HTTP_CHANNEL_ID = "http";
52
- export const SCHEDULE_CHANNEL_PREFIX = "schedule:";
54
+ export { SCHEDULE_CHANNEL_PREFIX } from "./prompt-context.js";
53
55
  export class SessionBusyError extends Error {
54
56
  constructor(sessionId) {
55
57
  super(`Session ${sessionId} already has a running turn; wait for session.waiting before sending a follow-up`);
@@ -131,7 +133,7 @@ export class SessionEngine {
131
133
  this.runner = options.runner;
132
134
  this.logger = (_c = options.logger) !== null && _c !== void 0 ? _c : (() => { });
133
135
  this.sessions = new SessionStore(join(options.stateRoot, "sessions"));
134
- this.logs = new EventLogStore((sessionId) => this.sessions.eventFilePath(sessionId), (sessionId, error) => this.logger(`[agent-serve] failed to persist events for ${sessionId}: ${describeError(error)}`));
136
+ this.logs = new EventLogStore((sessionId) => this.sessions.eventFilePath(sessionId), (sessionId, error) => this.logger(`[agentkit] failed to persist events for ${sessionId}: ${describeError(error)}`));
135
137
  this.storage =
136
138
  options.project.storage === undefined
137
139
  ? undefined
@@ -286,7 +288,7 @@ export class SessionEngine {
286
288
  }
287
289
  }
288
290
  catch (error) {
289
- this.logger(`[agent-serve] ab "${experiment.name}" enrollment failed (sticky skip): ${describeError(error)}`);
291
+ this.logger(`[agentkit] ab "${experiment.name}" enrollment failed (sticky skip): ${describeError(error)}`);
290
292
  variant = null;
291
293
  }
292
294
  abs[experiment.name] = variant;
@@ -509,7 +511,7 @@ export class SessionEngine {
509
511
  this.queueDispatch(sessionId, event);
510
512
  }
511
513
  catch (error) {
512
- this.logger(`[agent-serve] failed to record event for ${sessionId}: ${describeError(error)}`);
514
+ this.logger(`[agentkit] failed to record event for ${sessionId}: ${describeError(error)}`);
513
515
  }
514
516
  };
515
517
  const mapper = new TurnEventMapper(emit);
@@ -537,7 +539,10 @@ export class SessionEngine {
537
539
  // Yield so the HTTP NDJSON writer can flush tool start/result
538
540
  // events while sibling parallel tools are still executing.
539
541
  if (update.type === "tool-call-started" ||
540
- update.type === "tool-call-completed") {
542
+ update.type === "tool-call-completed" ||
543
+ // Nested subagent progress (newer SDKs); string check keeps
544
+ // typecheck green against older published `@cursor/sdk` pins.
545
+ update.type === "tool-call-delta") {
541
546
  yield yieldEventLoop();
542
547
  }
543
548
  }), signal);
@@ -601,8 +606,8 @@ export class SessionEngine {
601
606
  });
602
607
  }
603
608
  buildTurnRequest(record, agent, turnId, prompt, isFirstTurn, emit, onUpdate, signal) {
604
- var _a;
605
- var _b;
609
+ var _a, _b, _c;
610
+ var _d;
606
611
  // Per-session cloud attach (channel/tool handoff) forces cloud runtime
607
612
  // even when the agent defaults to local for chat server tools.
608
613
  const runtime = resolveSessionRuntime({
@@ -616,14 +621,24 @@ export class SessionEngine {
616
621
  })
617
622
  : undefined;
618
623
  let turnPrompt = prompt;
624
+ if (isFirstTurn) {
625
+ const contextBlock = buildSessionContextBlock({
626
+ sessionId: record.sessionId,
627
+ channelId: record.channelId,
628
+ channelKind: (_b = (_a = this.channelsById.get(record.channelId)) === null || _a === void 0 ? void 0 : _a.meta) === null || _b === void 0 ? void 0 : _b.kind,
629
+ environment: isDevMode() ? "local dev server" : "hosted deployment",
630
+ });
631
+ turnPrompt = `${contextBlock}\n\n${prompt}`;
632
+ }
619
633
  if (runtime === "cloud" && isFirstTurn) {
620
634
  const preamble = [
621
- (_b = (_a = agent.instructions) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : "",
635
+ (_d = (_c = agent.instructions) === null || _c === void 0 ? void 0 : _c.trim()) !== null && _d !== void 0 ? _d : "",
636
+ buildIdentitySection(agent),
622
637
  buildAgentToolsCatalog(agent.tools, { includeScripts: true }),
623
638
  ]
624
639
  .filter((part) => part !== "")
625
640
  .join("\n\n");
626
- turnPrompt = preamble === "" ? prompt : `${preamble}\n\n${prompt}`;
641
+ turnPrompt = `${preamble}\n\n${turnPrompt}`;
627
642
  }
628
643
  return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ sessionId: record.sessionId }, (record.sdkAgentId === undefined
629
644
  ? {}
@@ -1026,7 +1041,7 @@ export class SessionEngine {
1026
1041
  const next = chain
1027
1042
  .then(() => this.dispatchEvent(sessionId, event))
1028
1043
  .catch((error) => {
1029
- this.logger(`[agent-serve] event dispatch failed for ${sessionId}: ${describeError(error)}`);
1044
+ this.logger(`[agentkit] event dispatch failed for ${sessionId}: ${describeError(error)}`);
1030
1045
  })
1031
1046
  .then(() => {
1032
1047
  var _a;
@@ -1067,7 +1082,7 @@ export class SessionEngine {
1067
1082
  yield handler(event, channelCtx, sessionCtx);
1068
1083
  }
1069
1084
  catch (error) {
1070
- this.logger(`[agent-serve] channel "${record.channelId}" handler for ${event.type} threw: ${describeError(error)}`);
1085
+ this.logger(`[agentkit] channel "${record.channelId}" handler for ${event.type} threw: ${describeError(error)}`);
1071
1086
  }
1072
1087
  }
1073
1088
  // Handlers mutate channel state in place; persist after each batch.
@@ -1093,7 +1108,7 @@ export class SessionEngine {
1093
1108
  });
1094
1109
  }
1095
1110
  catch (error) {
1096
- this.logger(`[agent-serve] hook "${hook.name}" handler for ${event.type} threw: ${describeError(error)}`);
1111
+ this.logger(`[agentkit] hook "${hook.name}" handler for ${event.type} threw: ${describeError(error)}`);
1097
1112
  }
1098
1113
  }
1099
1114
  }
@@ -1207,7 +1222,7 @@ export class SessionEngine {
1207
1222
  });
1208
1223
  }
1209
1224
  catch (error) {
1210
- this.logger(`[agent-serve] ab persistSnapshots.save threw: ${describeError(error)}`);
1225
+ this.logger(`[agentkit] ab persistSnapshots.save threw: ${describeError(error)}`);
1211
1226
  }
1212
1227
  }
1213
1228
  else {
@@ -1373,7 +1388,7 @@ export class SessionEngine {
1373
1388
  yield this.runBulkRestore(storage, policy);
1374
1389
  }
1375
1390
  catch (error) {
1376
- this.logger(`[agent-serve] session restore failed: ${describeError(error)}`);
1391
+ this.logger(`[agentkit] session restore failed: ${describeError(error)}`);
1377
1392
  }
1378
1393
  });
1379
1394
  }
@@ -1418,7 +1433,7 @@ export class SessionEngine {
1418
1433
  return { record, events };
1419
1434
  }
1420
1435
  catch (error) {
1421
- this.logger(`[agent-serve] failed to restore session ${record.sessionId}: ${describeError(error)}`);
1436
+ this.logger(`[agentkit] failed to restore session ${record.sessionId}: ${describeError(error)}`);
1422
1437
  return undefined;
1423
1438
  }
1424
1439
  })));
@@ -1433,7 +1448,7 @@ export class SessionEngine {
1433
1448
  const bytes = Buffer.byteLength(JSON.stringify(item.record), "utf8") +
1434
1449
  (ndjson === undefined ? 0 : Buffer.byteLength(ndjson, "utf8"));
1435
1450
  if (bytes > budget) {
1436
- this.logger(`[agent-serve] session restore stopped at the ${policy.maxTotalBytes}-byte budget after ${restored} session(s); remaining sessions restore lazily on resume`);
1451
+ this.logger(`[agentkit] session restore stopped at the ${policy.maxTotalBytes}-byte budget after ${restored} session(s); remaining sessions restore lazily on resume`);
1437
1452
  break outer;
1438
1453
  }
1439
1454
  try {
@@ -1442,12 +1457,12 @@ export class SessionEngine {
1442
1457
  restored += 1;
1443
1458
  }
1444
1459
  catch (error) {
1445
- this.logger(`[agent-serve] failed to restore session ${item.record.sessionId}: ${describeError(error)}`);
1460
+ this.logger(`[agentkit] failed to restore session ${item.record.sessionId}: ${describeError(error)}`);
1446
1461
  }
1447
1462
  }
1448
1463
  }
1449
1464
  if (restored > 0) {
1450
- this.logger(`[agent-serve] restored ${restored} session(s) from storage`);
1465
+ this.logger(`[agentkit] restored ${restored} session(s) from storage`);
1451
1466
  }
1452
1467
  });
1453
1468
  }
@@ -1488,7 +1503,7 @@ export class SessionEngine {
1488
1503
  }
1489
1504
  const events = yield storage.listSessionEvents(record.sessionId);
1490
1505
  yield this.materializeSession(record, eventsNdjson(events));
1491
- this.logger(`[agent-serve] lazily restored session ${record.sessionId} from storage`);
1506
+ this.logger(`[agentkit] lazily restored session ${record.sessionId} from storage`);
1492
1507
  return record;
1493
1508
  });
1494
1509
  }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Session list / event fetch for CLI (`sessions`, `session`, chat reattach).
3
+ *
4
+ * Customer-facing errors never include hosting URLs or infra jargon.
5
+ */
6
+ import type { SessionEvent, SessionSummary } from "../types.js";
7
+ import { type RequestAuth } from "./request-headers.js";
8
+ export declare function listSessions(args: {
9
+ baseUrl: string;
10
+ auth?: RequestAuth;
11
+ fetchImpl?: typeof fetch;
12
+ }): Promise<SessionSummary[]>;
13
+ export declare function fetchSessionEvents(args: {
14
+ baseUrl: string;
15
+ sessionId: string;
16
+ auth?: RequestAuth;
17
+ fetchImpl?: typeof fetch;
18
+ }): Promise<SessionEvent[]>;
19
+ /**
20
+ * Pick the previous (most recently updated) followable session for
21
+ * `resume` / `chat --resume` when no session id was passed.
22
+ * Followable = has a non-empty continuation token (task sessions without
23
+ * one are skipped).
24
+ */
25
+ export declare function pickPreviousSession(sessions: readonly SessionSummary[]): SessionSummary | undefined;
26
+ /** Look up the most recently updated followable session id. */
27
+ export declare function resolvePreviousSessionId(args: {
28
+ baseUrl: string;
29
+ auth?: RequestAuth;
30
+ fetchImpl?: typeof fetch;
31
+ }): Promise<string | undefined>;
32
+ /** Format a sessions table (id, channel, mode, turns, running, updated). */
33
+ export declare function formatSessionsTable(sessions: SessionSummary[]): string;
34
+ //# sourceMappingURL=sessions-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions-client.d.ts","sourceRoot":"","sources":["../../src/internal/sessions-client.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAuB,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAE7E,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CA8B5B;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE;IAC7C,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAuE1B;AAgCD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,cAAc,GAAG,SAAS,CAU5B;AAED,+DAA+D;AAC/D,wBAAsB,wBAAwB,CAAC,IAAI,EAAE;IACnD,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;CAC1B,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAO9B;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,cAAc,EAAE,GAAG,MAAM,CActE"}
@@ -0,0 +1,193 @@
1
+ /**
2
+ * Session list / event fetch for CLI (`sessions`, `session`, chat reattach).
3
+ *
4
+ * Customer-facing errors never include hosting URLs or infra jargon.
5
+ */
6
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
7
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8
+ return new (P || (P = Promise))(function (resolve, reject) {
9
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
10
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
12
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
13
+ });
14
+ };
15
+ import { sanitizeCustomerError } from "./logs-client.js";
16
+ import { mergeRequestHeaders } from "./request-headers.js";
17
+ export function listSessions(args) {
18
+ return __awaiter(this, void 0, void 0, function* () {
19
+ var _a;
20
+ const baseUrl = args.baseUrl.replace(/\/$/, "");
21
+ const fetchImpl = (_a = args.fetchImpl) !== null && _a !== void 0 ? _a : fetch;
22
+ let resp;
23
+ try {
24
+ resp = yield fetchImpl(`${baseUrl}/v1/sessions`, {
25
+ headers: mergeRequestHeaders(args.auth),
26
+ });
27
+ }
28
+ catch (error) {
29
+ throw new Error(sanitizeCustomerError(error instanceof Error ? error.message : "Could not list sessions."));
30
+ }
31
+ if (!resp.ok) {
32
+ throw new Error(`Could not list sessions (HTTP ${resp.status}).`);
33
+ }
34
+ const body = (yield resp.json());
35
+ if (!Array.isArray(body.sessions)) {
36
+ return [];
37
+ }
38
+ const out = [];
39
+ for (const row of body.sessions) {
40
+ const parsed = parseSessionSummary(row);
41
+ if (parsed !== undefined) {
42
+ out.push(parsed);
43
+ }
44
+ }
45
+ return out;
46
+ });
47
+ }
48
+ export function fetchSessionEvents(args) {
49
+ return __awaiter(this, void 0, void 0, function* () {
50
+ var _a;
51
+ const baseUrl = args.baseUrl.replace(/\/$/, "");
52
+ const fetchImpl = (_a = args.fetchImpl) !== null && _a !== void 0 ? _a : fetch;
53
+ const path = `/v1/session/${encodeURIComponent(args.sessionId)}/events`;
54
+ try {
55
+ const jsonResp = yield fetchImpl(`${baseUrl}${path}?format=json`, {
56
+ headers: mergeRequestHeaders(args.auth),
57
+ });
58
+ if (jsonResp.ok) {
59
+ const body = (yield jsonResp.json());
60
+ if (Array.isArray(body.events)) {
61
+ return body.events;
62
+ }
63
+ }
64
+ else if (jsonResp.status === 404) {
65
+ throw new Error(`Session ${args.sessionId} not found.`);
66
+ }
67
+ else if (jsonResp.status === 403) {
68
+ throw new Error(`Session ${args.sessionId} is not readable by this caller.`);
69
+ }
70
+ }
71
+ catch (error) {
72
+ if (error instanceof Error && error.message.startsWith("Session ")) {
73
+ throw error;
74
+ }
75
+ // Fall through to NDJSON.
76
+ }
77
+ try {
78
+ const resp = yield fetchImpl(`${baseUrl}${path}`, {
79
+ headers: mergeRequestHeaders(args.auth),
80
+ });
81
+ if (resp.status === 404) {
82
+ throw new Error(`Session ${args.sessionId} not found.`);
83
+ }
84
+ if (resp.status === 403) {
85
+ throw new Error(`Session ${args.sessionId} is not readable by this caller.`);
86
+ }
87
+ if (!resp.ok) {
88
+ throw new Error(`Could not fetch session events (HTTP ${resp.status}).`);
89
+ }
90
+ const text = yield resp.text();
91
+ const events = [];
92
+ for (const line of text.split("\n")) {
93
+ if (line.trim() === "") {
94
+ continue;
95
+ }
96
+ try {
97
+ events.push(JSON.parse(line));
98
+ }
99
+ catch (_b) {
100
+ // skip malformed lines
101
+ }
102
+ }
103
+ return events;
104
+ }
105
+ catch (error) {
106
+ if (error instanceof Error && error.message.startsWith("Session ")) {
107
+ throw error;
108
+ }
109
+ if (error instanceof Error && error.message.startsWith("Could not fetch")) {
110
+ throw new Error(sanitizeCustomerError(error.message));
111
+ }
112
+ throw new Error(sanitizeCustomerError(error instanceof Error
113
+ ? error.message
114
+ : "Could not fetch session events."));
115
+ }
116
+ });
117
+ }
118
+ /** Lenient parse so partial stubs / older servers still list by sessionId. */
119
+ function parseSessionSummary(value) {
120
+ if (typeof value !== "object" || value === null) {
121
+ return undefined;
122
+ }
123
+ const row = value;
124
+ if (typeof row.sessionId !== "string" || row.sessionId === "") {
125
+ return undefined;
126
+ }
127
+ const continuationToken = typeof row.continuationToken === "string"
128
+ ? row.continuationToken
129
+ : row.continuationToken === null
130
+ ? null
131
+ : null;
132
+ return {
133
+ sessionId: row.sessionId,
134
+ channelId: typeof row.channelId === "string" ? row.channelId : "",
135
+ mode: row.mode === "task" ? "task" : "chat",
136
+ title: typeof row.title === "string" ? row.title : undefined,
137
+ turnCount: typeof row.turnCount === "number" ? row.turnCount : 0,
138
+ running: row.running === true,
139
+ createdAt: typeof row.createdAt === "string" ? row.createdAt : "",
140
+ updatedAt: typeof row.updatedAt === "string" ? row.updatedAt : "",
141
+ continuationToken,
142
+ externalUrl: typeof row.externalUrl === "string" ? row.externalUrl : undefined,
143
+ };
144
+ }
145
+ /**
146
+ * Pick the previous (most recently updated) followable session for
147
+ * `resume` / `chat --resume` when no session id was passed.
148
+ * Followable = has a non-empty continuation token (task sessions without
149
+ * one are skipped).
150
+ */
151
+ export function pickPreviousSession(sessions) {
152
+ const followable = sessions.filter((s) => typeof s.continuationToken === "string" && s.continuationToken !== "");
153
+ if (followable.length === 0) {
154
+ return undefined;
155
+ }
156
+ return [...followable].sort((a, b) => b.updatedAt.localeCompare(a.updatedAt))[0];
157
+ }
158
+ /** Look up the most recently updated followable session id. */
159
+ export function resolvePreviousSessionId(args) {
160
+ return __awaiter(this, void 0, void 0, function* () {
161
+ var _a;
162
+ const sessions = yield listSessions({
163
+ baseUrl: args.baseUrl,
164
+ auth: args.auth,
165
+ fetchImpl: args.fetchImpl,
166
+ });
167
+ return (_a = pickPreviousSession(sessions)) === null || _a === void 0 ? void 0 : _a.sessionId;
168
+ });
169
+ }
170
+ /** Format a sessions table (id, channel, mode, turns, running, updated). */
171
+ export function formatSessionsTable(sessions) {
172
+ if (sessions.length === 0) {
173
+ return "No sessions.\n";
174
+ }
175
+ const header = ["SESSION", "CHANNEL", "MODE", "TURNS", "RUNNING", "UPDATED"];
176
+ const rows = sessions.map((s) => [
177
+ s.sessionId,
178
+ s.channelId,
179
+ s.mode,
180
+ String(s.turnCount),
181
+ s.running ? "yes" : "no",
182
+ s.updatedAt,
183
+ ]);
184
+ return `${renderTable(header, rows)}\n`;
185
+ }
186
+ function renderTable(header, rows) {
187
+ const widths = header.map((h, i) => Math.max(h.length, ...rows.map((row) => { var _a; return ((_a = row[i]) !== null && _a !== void 0 ? _a : "").length; })));
188
+ const renderRow = (row) => row
189
+ .map((cell, i) => { var _a; return cell.padEnd((_a = widths[i]) !== null && _a !== void 0 ? _a : 0); })
190
+ .join(" ")
191
+ .trimEnd();
192
+ return [renderRow(header), ...rows.map(renderRow)].join("\n");
193
+ }
@@ -252,7 +252,7 @@ export class StorageCoordinator {
252
252
  // Index entry without its record (e.g. the record write was shed
253
253
  // under at-most-once). The session is unrecoverable; treat as a miss
254
254
  // so the conversation can continue rather than failing forever.
255
- this.logger(`[agent-serve] storage continuation entry points at missing session ${sessionId}; treating as a miss`);
255
+ this.logger(`[agentkit] storage continuation entry points at missing session ${sessionId}; treating as a miss`);
256
256
  return undefined;
257
257
  }
258
258
  // The sink must answer for the exact key it was asked about — a
@@ -383,7 +383,7 @@ export class StorageCoordinator {
383
383
  return value == null ? undefined : value;
384
384
  }
385
385
  catch (error) {
386
- this.logger(`[agent-serve] storage get(ab-snapshot) failed: ${describeError(error)}`);
386
+ this.logger(`[agentkit] storage get(ab-snapshot) failed: ${describeError(error)}`);
387
387
  return undefined;
388
388
  }
389
389
  });
@@ -415,7 +415,7 @@ export class StorageCoordinator {
415
415
  ]);
416
416
  clearTimeout(timer);
417
417
  if (!drained) {
418
- this.logger(`[agent-serve] storage shutdown drain timed out after ${CLOSE_DRAIN_TIMEOUT_MS}ms with ${this.pending} write(s) undelivered`);
418
+ this.logger(`[agentkit] storage shutdown drain timed out after ${CLOSE_DRAIN_TIMEOUT_MS}ms with ${this.pending} write(s) undelivered`);
419
419
  }
420
420
  });
421
421
  }
@@ -455,7 +455,7 @@ export class StorageCoordinator {
455
455
  return Array.isArray(entries) ? entries : [];
456
456
  }
457
457
  catch (error) {
458
- this.logger(`[agent-serve] storage list(${prefix}) failed: ${describeError(error)}`);
458
+ this.logger(`[agentkit] storage list(${prefix}) failed: ${describeError(error)}`);
459
459
  return [];
460
460
  }
461
461
  });
@@ -467,7 +467,7 @@ export class StorageCoordinator {
467
467
  if (this.pending + ops.length > MAX_PENDING_OPS) {
468
468
  this.dropped += ops.length;
469
469
  if (this.dropped <= ops.length || this.dropped % 1000 < ops.length) {
470
- this.logger(`[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`);
470
+ this.logger(`[agentkit] storage queue full (${MAX_PENDING_OPS} pending writes); dropped ${this.dropped} write(s) so far — the sink is too slow for the traffic`);
471
471
  }
472
472
  return;
473
473
  }
@@ -485,7 +485,7 @@ export class StorageCoordinator {
485
485
  }
486
486
  }
487
487
  catch (error) {
488
- this.logger(`[agent-serve] storage ${op.op}(${op.key}) failed: ${describeError(error)}`);
488
+ this.logger(`[agentkit] storage ${op.op}(${op.key}) failed: ${describeError(error)}`);
489
489
  }
490
490
  finally {
491
491
  this.pending -= 1;