@cursor/july 0.1.46 → 0.1.48

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 (95) hide show
  1. package/dist/bin/agent-serve.js +30 -35
  2. package/dist/docs/404.html +1 -1
  3. package/dist/docs/ab.html +2 -2
  4. package/dist/docs/assets/{app.C2NFTb-h.js → app.BC1P20xI.js} +1 -1
  5. package/dist/docs/assets/chunks/@localSearchIndexroot.DV5SAHnQ.js +1 -0
  6. package/dist/docs/assets/chunks/{VPLocalSearchBox.o1_FJGip.js → VPLocalSearchBox.C_900xn2.js} +1 -1
  7. package/dist/docs/assets/chunks/{theme.BcGduE7g.js → theme.CT135Jhh.js} +2 -2
  8. package/dist/docs/building-with-agents.html +2 -2
  9. package/dist/docs/concepts.html +2 -2
  10. package/dist/docs/deployment.html +2 -2
  11. package/dist/docs/evals.html +2 -2
  12. package/dist/docs/example-agents/approval-buddy.html +2 -2
  13. package/dist/docs/example-agents/benny.html +2 -2
  14. package/dist/docs/example-agents/bugbot.html +2 -2
  15. package/dist/docs/example-agents/codebase-wiki.html +2 -2
  16. package/dist/docs/example-agents/codeowners-review.html +2 -2
  17. package/dist/docs/example-agents/concierge.html +2 -2
  18. package/dist/docs/example-agents/fsd.html +2 -2
  19. package/dist/docs/example-agents/index.html +2 -2
  20. package/dist/docs/example-agents/knowledge-base.html +2 -2
  21. package/dist/docs/example-agents/oncall.html +2 -2
  22. package/dist/docs/example-agents/security-reviewer.html +2 -2
  23. package/dist/docs/example-agents/slack-agent.html +2 -2
  24. package/dist/docs/example-agents/weather-agent.html +2 -2
  25. package/dist/docs/guides/agent-to-agent.html +2 -2
  26. package/dist/docs/guides/cloud-runtime.html +2 -2
  27. package/dist/docs/guides/github.html +2 -2
  28. package/dist/docs/guides/human-in-the-loop.html +2 -2
  29. package/dist/docs/guides/mcp-oauth.html +2 -2
  30. package/dist/docs/guides/opentelemetry.html +2 -2
  31. package/dist/docs/guides/slack.html +2 -2
  32. package/dist/docs/guides/webhooks.html +2 -2
  33. package/dist/docs/hillclimbing.html +2 -2
  34. package/dist/docs/index.html +2 -2
  35. package/dist/docs/quickstart.html +2 -2
  36. package/dist/docs/reference/agent-config.html +2 -2
  37. package/dist/docs/reference/artifacts.html +2 -2
  38. package/dist/docs/reference/channels.html +2 -2
  39. package/dist/docs/reference/cli.html +2 -2
  40. package/dist/docs/reference/connections.html +2 -2
  41. package/dist/docs/reference/hooks.html +2 -2
  42. package/dist/docs/reference/http-api.html +2 -2
  43. package/dist/docs/reference/instructions.html +2 -2
  44. package/dist/docs/reference/playground.html +2 -2
  45. package/dist/docs/reference/project-layout.html +2 -2
  46. package/dist/docs/reference/prompt.html +2 -2
  47. package/dist/docs/reference/schedules.html +2 -2
  48. package/dist/docs/reference/sessions.html +2 -2
  49. package/dist/docs/reference/skills.html +2 -2
  50. package/dist/docs/reference/subagents.html +2 -2
  51. package/dist/docs/reference/tools.html +2 -2
  52. package/dist/docs/scaffolding-agents.html +2 -2
  53. package/dist/docs/storage.html +2 -2
  54. package/dist/docs/templates/triage.html +2 -2
  55. package/dist/docs/troubleshooting.html +2 -2
  56. package/dist/internal/authored-loaders.d.ts +19 -0
  57. package/dist/internal/authored-loaders.d.ts.map +1 -1
  58. package/dist/internal/authored-loaders.js +39 -0
  59. package/dist/internal/cli-deploy.d.ts +2 -1
  60. package/dist/internal/cli-deploy.d.ts.map +1 -1
  61. package/dist/internal/cli-deploy.js +97 -1
  62. package/dist/internal/deploy-client.d.ts +7 -2
  63. package/dist/internal/deploy-client.d.ts.map +1 -1
  64. package/dist/internal/deploy-client.js +12 -0
  65. package/dist/internal/discovery.d.ts.map +1 -1
  66. package/dist/internal/discovery.js +2 -8
  67. package/dist/internal/eval-runner.d.ts.map +1 -1
  68. package/dist/internal/eval-runner.js +3 -8
  69. package/dist/internal/logs-client.d.ts +1 -1
  70. package/dist/internal/logs-client.d.ts.map +1 -1
  71. package/dist/internal/logs-client.js +3 -0
  72. package/dist/internal/sdk-runner.d.ts +21 -0
  73. package/dist/internal/sdk-runner.d.ts.map +1 -1
  74. package/dist/internal/sdk-runner.js +34 -1
  75. package/dist/internal/serve-restart.d.ts +42 -0
  76. package/dist/internal/serve-restart.d.ts.map +1 -0
  77. package/dist/internal/serve-restart.js +85 -0
  78. package/dist/internal/server.d.ts.map +1 -1
  79. package/dist/internal/server.js +7 -2
  80. package/dist/playground/assets/index-CiCmH6R-.css +1 -0
  81. package/dist/playground/assets/{index-6wW6SAc4.js → index-DEVTyeOu.js} +46 -46
  82. package/dist/playground/index.html +2 -2
  83. package/package.json +1 -1
  84. package/src/bin/agent-serve.ts +39 -38
  85. package/src/internal/authored-loaders.ts +45 -0
  86. package/src/internal/cli-deploy.ts +103 -1
  87. package/src/internal/deploy-client.ts +19 -1
  88. package/src/internal/discovery.ts +5 -12
  89. package/src/internal/eval-runner.ts +3 -12
  90. package/src/internal/logs-client.ts +4 -0
  91. package/src/internal/sdk-runner.ts +46 -1
  92. package/src/internal/serve-restart.ts +120 -0
  93. package/src/internal/server.ts +11 -1
  94. package/dist/docs/assets/chunks/@localSearchIndexroot.B-FxvuoI.js +0 -1
  95. package/dist/playground/assets/index-CSRYDAFw.css +0 -1
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Enter-to-restart for `serve` / `dev` on a TTY.
3
+ *
4
+ * In-process close+re-serve cannot reload every authored change: Node ESM
5
+ * caches transitive imports, and module-level state (tsx, singletons) survives.
6
+ * The parent process therefore supervises a worker and respawns it when the
7
+ * worker exits with {@link ENTER_RESTART_EXIT_CODE}.
8
+ */
9
+
10
+ export const ENTER_RESTART_EXIT_CODE = 75;
11
+
12
+ export const SERVE_RESTART_WORKER_ENV = "AGENT_SERVE_RESTART_WORKER";
13
+
14
+ export interface ServeRestartProcess {
15
+ execPath: string;
16
+ execArgv: readonly string[];
17
+ argv: readonly string[];
18
+ env: NodeJS.ProcessEnv;
19
+ }
20
+
21
+ export interface ServeRestartSpawnPlan {
22
+ command: string;
23
+ args: string[];
24
+ env: NodeJS.ProcessEnv;
25
+ }
26
+
27
+ export interface ServeRestartWorkerChild {
28
+ once(
29
+ event: "exit",
30
+ listener: (code: number | null, signal: NodeJS.Signals | null) => void
31
+ ): void;
32
+ }
33
+
34
+ export function isServeRestartWorker(
35
+ env: NodeJS.ProcessEnv = process.env
36
+ ): boolean {
37
+ return env[SERVE_RESTART_WORKER_ENV] === "1";
38
+ }
39
+
40
+ export function serveRestartSpawnPlan(
41
+ proc: ServeRestartProcess
42
+ ): ServeRestartSpawnPlan {
43
+ return {
44
+ command: proc.execPath,
45
+ args: [...proc.execArgv, ...proc.argv.slice(1)],
46
+ env: { ...proc.env, [SERVE_RESTART_WORKER_ENV]: "1" },
47
+ };
48
+ }
49
+
50
+ export function shouldRespawnServeWorker(
51
+ code: number | null,
52
+ signal: NodeJS.Signals | null
53
+ ): boolean {
54
+ return signal === null && code === ENTER_RESTART_EXIT_CODE;
55
+ }
56
+
57
+ /**
58
+ * Run the TTY Enter-to-restart supervisor: spawn this CLI as a worker, and
59
+ * respawn whenever the worker exits asking for a restart. Other exits
60
+ * (Ctrl-C drain, crash, bind failure) propagate to the caller.
61
+ */
62
+ export async function runEnterRestartSupervisor(options: {
63
+ spawn: (
64
+ command: string,
65
+ args: string[],
66
+ spawnOptions: { stdio: "inherit"; env: NodeJS.ProcessEnv }
67
+ ) => ServeRestartWorkerChild;
68
+ proc?: ServeRestartProcess;
69
+ onRestart?: () => void;
70
+ installSignalGuards?: (handler: () => void) => () => void;
71
+ }): Promise<number> {
72
+ const proc = options.proc ?? {
73
+ execPath: process.execPath,
74
+ execArgv: process.execArgv,
75
+ argv: process.argv,
76
+ env: process.env,
77
+ };
78
+ const plan = serveRestartSpawnPlan(proc);
79
+ const uninstallSignals = (
80
+ options.installSignalGuards ?? installDefaultSignalGuards
81
+ )(() => undefined);
82
+
83
+ try {
84
+ for (;;) {
85
+ const child = options.spawn(plan.command, plan.args, {
86
+ stdio: "inherit",
87
+ env: plan.env,
88
+ });
89
+ const { code, signal } = await waitForExit(child);
90
+ if (!shouldRespawnServeWorker(code, signal)) {
91
+ if (signal !== null) {
92
+ return 1;
93
+ }
94
+ return code ?? 1;
95
+ }
96
+ options.onRestart?.();
97
+ }
98
+ } finally {
99
+ uninstallSignals();
100
+ }
101
+ }
102
+
103
+ function waitForExit(
104
+ child: ServeRestartWorkerChild
105
+ ): Promise<{ code: number | null; signal: NodeJS.Signals | null }> {
106
+ return new Promise((resolve) => {
107
+ child.once("exit", (code, signal) => {
108
+ resolve({ code, signal });
109
+ });
110
+ });
111
+ }
112
+
113
+ function installDefaultSignalGuards(handler: () => void): () => void {
114
+ process.on("SIGINT", handler);
115
+ process.on("SIGTERM", handler);
116
+ return () => {
117
+ process.off("SIGINT", handler);
118
+ process.off("SIGTERM", handler);
119
+ };
120
+ }
@@ -147,7 +147,11 @@ import {
147
147
  } from "./resolved-connections.js";
148
148
  import { Router } from "./router.js";
149
149
  import { ScheduleRunner, UnknownScheduleError } from "./schedule-runner.js";
150
- import { type AgentRunner, CursorSdkRunner } from "./sdk-runner.js";
150
+ import {
151
+ type AgentRunner,
152
+ CursorSdkRunner,
153
+ resolveServeWorkspaceScanCacheTtlMs,
154
+ } from "./sdk-runner.js";
151
155
  import {
152
156
  SessionAuthError,
153
157
  SessionBusyError,
@@ -364,11 +368,17 @@ export async function startServer(
364
368
  "[agent-sdk] 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"
365
369
  );
366
370
  }
371
+ const workspaceScanCacheTtlMs = resolveServeWorkspaceScanCacheTtlMs({
372
+ dev,
373
+ });
367
374
  const runner =
368
375
  options.runner ??
369
376
  new CursorSdkRunner({
370
377
  ...(accountKey === undefined ? {} : { apiKey: accountKey.apiKey }),
371
378
  logger,
379
+ ...(workspaceScanCacheTtlMs === undefined
380
+ ? {}
381
+ : { workspaceScanCacheTtlMs }),
372
382
  });
373
383
 
374
384
  const router = new Router();