@cursor/july 0.1.43 → 0.1.45

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 (136) hide show
  1. package/AGENTS.md +1 -1
  2. package/dist/channels/github/github-channel.d.ts.map +1 -1
  3. package/dist/channels/github/github-channel.js +13 -5
  4. package/dist/channels/github/types.d.ts +8 -0
  5. package/dist/channels/github/types.d.ts.map +1 -1
  6. package/dist/channels.d.ts +17 -0
  7. package/dist/channels.d.ts.map +1 -1
  8. package/dist/channels.js +31 -0
  9. package/dist/docs/404.html +2 -2
  10. package/dist/docs/ab.html +3 -3
  11. package/dist/docs/assets/{app.DsTLo2j1.js → app.fHnNXEJ6.js} +1 -1
  12. package/dist/docs/assets/chunks/@localSearchIndexroot.BMT0xM4I.js +1 -0
  13. package/dist/docs/assets/chunks/{VPLocalSearchBox.DoVfutcV.js → VPLocalSearchBox.Cf6ghfFY.js} +1 -1
  14. package/dist/docs/assets/chunks/{theme.DtuVtKkc.js → theme.B_5-VLe8.js} +2 -2
  15. package/dist/docs/assets/guides_opentelemetry.md.Csn7ZI25.js +27 -0
  16. package/dist/docs/assets/guides_opentelemetry.md.Csn7ZI25.lean.js +1 -0
  17. package/dist/docs/assets/index.md.COeoSkcF.js +5 -0
  18. package/dist/docs/assets/index.md.COeoSkcF.lean.js +1 -0
  19. package/dist/docs/assets/{quickstart.md.rIbfahJM.js → quickstart.md.DZxBu44y.js} +18 -49
  20. package/dist/docs/assets/quickstart.md.DZxBu44y.lean.js +1 -0
  21. package/dist/docs/assets/{reference_agent-config.md.CRmkoxd6.js → reference_agent-config.md.XRpxctsA.js} +9 -4
  22. package/dist/docs/assets/{reference_agent-config.md.CRmkoxd6.lean.js → reference_agent-config.md.XRpxctsA.lean.js} +1 -1
  23. package/dist/docs/assets/{reference_cli.md.DqEqQpGn.js → reference_cli.md.BDmjPPAm.js} +2 -2
  24. package/dist/docs/assets/{reference_tools.md.lSrsTxYJ.js → reference_tools.md.kJfJAP2m.js} +1 -1
  25. package/dist/docs/building-with-agents.html +3 -3
  26. package/dist/docs/concepts.html +3 -3
  27. package/dist/docs/deployment.html +3 -3
  28. package/dist/docs/evals.html +3 -3
  29. package/dist/docs/example-agents/approval-buddy.html +3 -3
  30. package/dist/docs/example-agents/benny.html +3 -3
  31. package/dist/docs/example-agents/bugbot.html +3 -3
  32. package/dist/docs/example-agents/codebase-wiki.html +3 -3
  33. package/dist/docs/example-agents/codeowners-review.html +3 -3
  34. package/dist/docs/example-agents/concierge.html +3 -3
  35. package/dist/docs/example-agents/fsd.html +3 -3
  36. package/dist/docs/example-agents/index.html +3 -3
  37. package/dist/docs/example-agents/knowledge-base.html +3 -3
  38. package/dist/docs/example-agents/oncall.html +3 -3
  39. package/dist/docs/example-agents/security-reviewer.html +3 -3
  40. package/dist/docs/example-agents/slack-agent.html +3 -3
  41. package/dist/docs/example-agents/weather-agent.html +3 -3
  42. package/dist/docs/guides/agent-to-agent.html +3 -3
  43. package/dist/docs/guides/cloud-runtime.html +3 -3
  44. package/dist/docs/guides/github.html +3 -3
  45. package/dist/docs/guides/human-in-the-loop.html +3 -3
  46. package/dist/docs/guides/mcp-oauth.html +3 -3
  47. package/dist/docs/guides/opentelemetry.html +12 -5
  48. package/dist/docs/guides/slack.html +3 -3
  49. package/dist/docs/guides/webhooks.html +3 -3
  50. package/dist/docs/hashmap.json +1 -1
  51. package/dist/docs/hillclimbing.html +3 -3
  52. package/dist/docs/index.html +8 -28
  53. package/dist/docs/quickstart.html +24 -55
  54. package/dist/docs/reference/agent-config.html +11 -6
  55. package/dist/docs/reference/artifacts.html +3 -3
  56. package/dist/docs/reference/channels.html +3 -3
  57. package/dist/docs/reference/cli.html +6 -6
  58. package/dist/docs/reference/connections.html +3 -3
  59. package/dist/docs/reference/hooks.html +3 -3
  60. package/dist/docs/reference/http-api.html +3 -3
  61. package/dist/docs/reference/instructions.html +3 -3
  62. package/dist/docs/reference/playground.html +3 -3
  63. package/dist/docs/reference/project-layout.html +3 -3
  64. package/dist/docs/reference/prompt.html +3 -3
  65. package/dist/docs/reference/schedules.html +3 -3
  66. package/dist/docs/reference/sessions.html +3 -3
  67. package/dist/docs/reference/skills.html +3 -3
  68. package/dist/docs/reference/subagents.html +3 -3
  69. package/dist/docs/reference/tools.html +5 -5
  70. package/dist/docs/scaffolding-agents.html +3 -3
  71. package/dist/docs/storage.html +3 -3
  72. package/dist/docs/templates/triage.html +3 -3
  73. package/dist/docs/troubleshooting.html +3 -3
  74. package/dist/index.d.ts +1 -1
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +1 -1
  77. package/dist/internal/cli-ax.js +2 -2
  78. package/dist/internal/cli-deploy.d.ts.map +1 -1
  79. package/dist/internal/cli-deploy.js +38 -7
  80. package/dist/internal/deploy-client.d.ts +8 -0
  81. package/dist/internal/deploy-client.d.ts.map +1 -1
  82. package/dist/internal/deploy-client.js +5 -2
  83. package/dist/internal/discovery.d.ts.map +1 -1
  84. package/dist/internal/discovery.js +46 -9
  85. package/dist/internal/host-otel.d.ts +25 -0
  86. package/dist/internal/host-otel.d.ts.map +1 -0
  87. package/dist/internal/host-otel.js +162 -0
  88. package/dist/internal/init-project.js +10 -10
  89. package/dist/internal/otel/collector.d.ts +5 -0
  90. package/dist/internal/otel/collector.d.ts.map +1 -1
  91. package/dist/internal/otel/collector.js +68 -27
  92. package/dist/internal/sdk-runner.d.ts +1 -1
  93. package/dist/internal/sdk-runner.d.ts.map +1 -1
  94. package/dist/internal/sdk-runner.js +1 -1
  95. package/dist/internal/server.d.ts.map +1 -1
  96. package/dist/internal/server.js +1 -0
  97. package/dist/internal/session-engine.d.ts +5 -1
  98. package/dist/internal/session-engine.d.ts.map +1 -1
  99. package/dist/internal/session-engine.js +23 -5
  100. package/dist/playground/assets/index-CZH9EFvO.css +1 -0
  101. package/dist/playground/assets/{index-D-DIYQzw.js → index-Dces8BDp.js} +26 -26
  102. package/dist/playground/index.html +2 -2
  103. package/dist/types.d.ts +81 -2
  104. package/dist/types.d.ts.map +1 -1
  105. package/docs/README.md +33 -106
  106. package/docs/guides/opentelemetry.md +30 -0
  107. package/docs/quickstart.md +89 -227
  108. package/docs/reference/agent-config.md +52 -0
  109. package/docs/reference/cli.md +2 -2
  110. package/docs/reference/tools.md +5 -4
  111. package/package.json +2 -2
  112. package/skills/otel/SKILL.md +20 -2
  113. package/src/channels/github/github-channel.ts +9 -0
  114. package/src/channels/github/types.ts +4 -0
  115. package/src/channels.ts +38 -0
  116. package/src/index.ts +1 -0
  117. package/src/internal/cli-ax.ts +2 -2
  118. package/src/internal/cli-deploy.ts +58 -3
  119. package/src/internal/deploy-client.ts +11 -0
  120. package/src/internal/discovery.ts +49 -0
  121. package/src/internal/host-otel.ts +252 -0
  122. package/src/internal/init-project.ts +10 -10
  123. package/src/internal/otel/collector.ts +135 -50
  124. package/src/internal/sdk-runner.ts +6 -0
  125. package/src/internal/server.ts +1 -0
  126. package/src/internal/session-engine.ts +32 -2
  127. package/src/types.ts +89 -2
  128. package/dist/docs/assets/chunks/@localSearchIndexroot.BZx4pmZL.js +0 -1
  129. package/dist/docs/assets/guides_opentelemetry.md.DmyUwC5R.js +0 -20
  130. package/dist/docs/assets/guides_opentelemetry.md.DmyUwC5R.lean.js +0 -1
  131. package/dist/docs/assets/index.md.CMc5FP7E.js +0 -25
  132. package/dist/docs/assets/index.md.CMc5FP7E.lean.js +0 -1
  133. package/dist/docs/assets/quickstart.md.rIbfahJM.lean.js +0 -1
  134. package/dist/playground/assets/index-DQTH622f.css +0 -1
  135. /package/dist/docs/assets/{reference_cli.md.DqEqQpGn.lean.js → reference_cli.md.BDmjPPAm.lean.js} +0 -0
  136. /package/dist/docs/assets/{reference_tools.md.lSrsTxYJ.lean.js → reference_tools.md.kJfJAP2m.lean.js} +0 -0
@@ -40,6 +40,7 @@ import { TurnEventMapper } from "./event-mapper.js";
40
40
  import { selectFrameworkStorageDefinition } from "./framework-storage-selection.js";
41
41
  import { createHostFilesApi } from "./host-files.js";
42
42
  import { createHostKvApi } from "./host-kv.js";
43
+ import { createHostOtelApi } from "./host-otel.js";
43
44
  import { createHostPlatforms, createHostSlackClient, } from "./host-platforms.js";
44
45
  import { formatContinuationToken, newContinuationKey, newSessionId, newToolCallId, } from "./ids.js";
45
46
  import { validateToolInput } from "./json-schema.js";
@@ -153,6 +154,11 @@ export class SessionEngine {
153
154
  this.getCloudUsage = (_b = options.getCloudUsage) !== null && _b !== void 0 ? _b : defaultGetCloudUsage;
154
155
  this.estimateTurnCost = (_c = options.estimateTurnCost) !== null && _c !== void 0 ? _c : estimateTurnCostFromApi;
155
156
  this.otel = options.otel;
157
+ this.otelHost = createHostOtelApi({
158
+ agentName: options.project.name,
159
+ meter: options.otelMeter,
160
+ collector: options.otel,
161
+ });
156
162
  this.turnGovernor = new TurnGovernor(options.project.agent.concurrency);
157
163
  this.sessions = new SessionStore(join(options.stateRoot, "sessions"));
158
164
  this.nudgeStore = new SlackNudgeStore(join(options.stateRoot, "slack-nudges"));
@@ -287,7 +293,7 @@ export class SessionEngine {
287
293
  setCloudServerToolsConnection(connection) {
288
294
  this.cloudServerToolsConnection = connection;
289
295
  }
290
- /** Shared host services (MCP / GitHub / Slack / reminders / evals / kv / Slack nudges). */
296
+ /** Shared host services (MCP / GitHub / Slack / reminders / evals / kv / files / otel / Slack nudges). */
291
297
  get host() {
292
298
  return {
293
299
  mcp: this.mcpHost,
@@ -297,6 +303,7 @@ export class SessionEngine {
297
303
  evals: this.evalsApi,
298
304
  kv: this.kvApi,
299
305
  files: this.filesApi,
306
+ otel: this.otelHost,
300
307
  slackNudges: this.slackNudgeHostApi(),
301
308
  };
302
309
  }
@@ -310,7 +317,7 @@ export class SessionEngine {
310
317
  const host = this.host;
311
318
  return sessionId === undefined
312
319
  ? host
313
- : Object.assign(Object.assign({}, host), { files: this.filesApi.forSession(sessionId) });
320
+ : Object.assign(Object.assign({}, host), { files: this.filesApi.forSession(sessionId), otel: this.otelHost.forSession(sessionId) });
314
321
  }
315
322
  /** Unbound `ctx.artifacts` facade (channel handlers, scratch tool calls). */
316
323
  get artifacts() {
@@ -914,7 +921,9 @@ export class SessionEngine {
914
921
  }
915
922
  const startedAt = Date.now();
916
923
  try {
917
- const outcome = yield this.runner.prewarm(Object.assign({ workspaceDir, runnerStateDir: join(this.stateRoot, "runner"), sandbox: ((_b = agent.local) === null || _b === void 0 ? void 0 : _b.sandbox) === true, mcpServers: this.buildMcpServers("local"), subagents: buildRunnerSubagents(agent) }, (agent.model === undefined ? {} : { model: agent.model })));
924
+ const outcome = yield this.runner.prewarm(Object.assign(Object.assign(Object.assign({ workspaceDir, runnerStateDir: join(this.stateRoot, "runner"), sandbox: ((_b = agent.local) === null || _b === void 0 ? void 0 : _b.sandbox) === true }, (agent.allowedTools === undefined
925
+ ? {}
926
+ : { tools: agent.allowedTools })), { mcpServers: this.buildMcpServers("local"), subagents: buildRunnerSubagents(agent) }), (agent.model === undefined ? {} : { model: agent.model })));
918
927
  // Report what happened rather than that the call returned: a runner
919
928
  // that cannot warm resolves cleanly, and logging success there would
920
929
  // tell an operator the workspace is hot when nothing touched it.
@@ -1107,6 +1116,13 @@ export class SessionEngine {
1107
1116
  agentRuntime: agent.runtime,
1108
1117
  cloudOverride: record.cloudOverride,
1109
1118
  });
1119
+ // Fail closed: the SDK cannot enforce the built-in tool allowlist on
1120
+ // cloud agents yet, and a restriction that silently does not apply is
1121
+ // worse than a refused turn. Cloud-runtime agents already fail
1122
+ // discovery; this guards hybrid agents' per-send cloud sessions.
1123
+ if (runtime === "cloud" && agent.allowedTools !== undefined) {
1124
+ throw new Error(`Agent "${agent.name}" declares a built-in tool allowlist (tools), which cannot be enforced on cloud turns yet. Refusing the cloud session rather than running it unrestricted.`);
1125
+ }
1110
1126
  const mergedCloud = runtime === "cloud"
1111
1127
  ? mergeCloudOptions({
1112
1128
  base: agent.cloud,
@@ -1153,9 +1169,11 @@ export class SessionEngine {
1153
1169
  turnPrompt = `${preamble}\n\n${turnPrompt}`;
1154
1170
  }
1155
1171
  }
1156
- return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ sessionId: record.sessionId }, (record.sdkAgentId === undefined
1172
+ return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({ sessionId: record.sessionId }, (record.sdkAgentId === undefined
1157
1173
  ? {}
1158
- : { sdkAgentId: record.sdkAgentId })), { workspaceDir: this.harnessCwd(record), sandbox: ((_c = this.project.agent.local) === null || _c === void 0 ? void 0 : _c.sandbox) === true, runnerStateDir: join(this.stateRoot, "runner"), prompt: turnPrompt, isFirstTurn }), (images !== undefined && images.length > 0 ? { images } : {})), (agent.model === undefined ? {} : { model: agent.model })), { runtime }), (mergedCloud === undefined ? {} : { cloud: mergedCloud })), { customTools: runtime === "local" ? this.buildCustomTools(record, turnId, emit) : {}, mcpServers: this.buildMcpServers(runtime, record.sessionId), subagents: buildRunnerSubagents(agent), onUpdate,
1174
+ : { sdkAgentId: record.sdkAgentId })), { workspaceDir: this.harnessCwd(record), sandbox: ((_c = this.project.agent.local) === null || _c === void 0 ? void 0 : _c.sandbox) === true }), (runtime === "local" && agent.allowedTools !== undefined
1175
+ ? { tools: agent.allowedTools }
1176
+ : {})), { runnerStateDir: join(this.stateRoot, "runner"), prompt: turnPrompt, isFirstTurn }), (images !== undefined && images.length > 0 ? { images } : {})), (agent.model === undefined ? {} : { model: agent.model })), { runtime }), (mergedCloud === undefined ? {} : { cloud: mergedCloud })), { customTools: runtime === "local" ? this.buildCustomTools(record, turnId, emit) : {}, mcpServers: this.buildMcpServers(runtime, record.sessionId), subagents: buildRunnerSubagents(agent), onUpdate,
1159
1177
  signal,
1160
1178
  // Local follow-ups expire any lingering active run so a preempted turn
1161
1179
  // (or one orphaned by a crashed process) never blocks this send.