pi-cursor-sdk 0.1.60 → 0.1.61

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 (56) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +123 -9
  3. package/docs/cursor-model-ux-spec.md +19 -11
  4. package/docs/cursor-native-tool-replay.md +4 -2
  5. package/docs/cursor-tool-surfaces.md +7 -1
  6. package/docs/platform-smoke.md +51 -20
  7. package/package.json +13 -2
  8. package/platform-smoke.config.mjs +1 -0
  9. package/scripts/cloud-runtime-smoke.d.mts +40 -1
  10. package/scripts/cloud-runtime-smoke.mjs +444 -325
  11. package/scripts/lib/cloud-smoke-artifacts.d.mts +16 -0
  12. package/scripts/lib/cloud-smoke-artifacts.mjs +94 -0
  13. package/scripts/lib/cloud-smoke-cleanup-evidence.d.mts +209 -0
  14. package/scripts/lib/cloud-smoke-cleanup-evidence.mjs +585 -0
  15. package/scripts/lib/cloud-smoke-github.d.mts +78 -0
  16. package/scripts/lib/cloud-smoke-github.mjs +331 -0
  17. package/scripts/lib/cloud-smoke-pi-runner.d.mts +42 -0
  18. package/scripts/lib/cloud-smoke-pi-runner.mjs +214 -0
  19. package/scripts/lib/cloud-smoke-shutdown.d.mts +67 -0
  20. package/scripts/lib/cloud-smoke-shutdown.mjs +133 -0
  21. package/scripts/lib/local-resume-smoke-harness.mjs +2 -0
  22. package/scripts/local-resume-cleanup-smoke.mjs +11 -2
  23. package/scripts/platform-smoke/card-detect.mjs +1 -0
  24. package/scripts/platform-smoke/scenarios.d.mts +22 -0
  25. package/scripts/platform-smoke/scenarios.mjs +17 -0
  26. package/scripts/platform-smoke/targets.mjs +1 -0
  27. package/src/cursor-agent-message-web-tools.ts +14 -6
  28. package/src/cursor-cloud-local-state.ts +536 -0
  29. package/src/cursor-cloud-options.ts +46 -70
  30. package/src/cursor-config.ts +160 -14
  31. package/src/cursor-http1.ts +65 -0
  32. package/src/cursor-live-run-coordinator.ts +8 -1
  33. package/src/cursor-pi-tool-bridge-abort.ts +10 -3
  34. package/src/cursor-pi-tool-bridge-constants.ts +6 -0
  35. package/src/cursor-pi-tool-bridge-env.ts +9 -0
  36. package/src/cursor-pi-tool-bridge-run.ts +27 -5
  37. package/src/cursor-pi-tool-bridge.ts +11 -2
  38. package/src/cursor-provider-errors.ts +72 -2
  39. package/src/cursor-provider-live-run-drain.ts +2 -1
  40. package/src/cursor-provider-run-finalizer.ts +8 -2
  41. package/src/cursor-provider-run-outcome.ts +7 -1
  42. package/src/cursor-provider-turn-finalize.ts +23 -4
  43. package/src/cursor-provider-turn-prepare.ts +17 -3
  44. package/src/cursor-provider-turn-runner.ts +5 -0
  45. package/src/cursor-provider-turn-send.ts +1 -1
  46. package/src/cursor-question-tool.ts +8 -0
  47. package/src/cursor-ripgrep-path.ts +32 -0
  48. package/src/cursor-runtime-state.ts +119 -100
  49. package/src/cursor-sdk-process-error-guard.ts +19 -0
  50. package/src/cursor-session-agent-cleanup.ts +66 -15
  51. package/src/cursor-session-agent-lifecycle.ts +9 -4
  52. package/src/cursor-session-agent-resume.ts +50 -7
  53. package/src/cursor-session-agent.ts +106 -67
  54. package/src/cursor-session-scope.ts +22 -2
  55. package/src/cursor-session-store.ts +155 -0
  56. package/src/cursor-state.ts +162 -21
@@ -1,6 +1,6 @@
1
1
  # Platform Smoke Gate
2
2
 
3
- Status: current local-runtime release gate for Cursor provider/runtime changes. Cloud-runtime changes also require the opt-in `npm run smoke:cloud` lane. The Crabbox runner, packed-install platform-build suite, and real live PTY/ConPTY suite runner are implemented for macOS, Ubuntu, and Windows native targets with one-lease-per-target orchestration.
3
+ Status: current local-runtime release gate for Cursor provider/runtime changes. Cloud-runtime changes also require the separate paid `npm run smoke:cloud` gate. The Crabbox runner, packed-install platform-build suite, and real live PTY/ConPTY suite runner are implemented for macOS, Ubuntu, and Windows native targets with one-lease-per-target orchestration.
4
4
 
5
5
  Detailed detector, registry, command-rendering, implementation-history, replacement, and portability reference: [Platform Smoke Implementation Reference](./platform-smoke-implementation.md).
6
6
 
@@ -43,7 +43,7 @@ No partial adoption exists. The release evidence must include macOS, Ubuntu, and
43
43
  ## Non-negotiable constraints
44
44
 
45
45
  - No GitHub Actions dependency.
46
- - No cloud provider dependency in the default local platform gate; cloud-runtime changes use the separate opt-in cloud lane.
46
+ - No cloud provider dependency in the default local platform gate; cloud-runtime changes use the separate paid cloud gate.
47
47
  - No Crabbox broker/coordinator dependency.
48
48
  - No release gate that runs on only one operating system.
49
49
  - No release gate that proves command behavior but not TUI visual behavior.
@@ -116,6 +116,7 @@ start target session
116
116
  sync checkout once into extensionSourceRoot
117
117
  run platform-build
118
118
  run cursor-native-visual-matrix
119
+ run cursor-http1-live
119
120
  run cursor-bridge-visual-matrix
120
121
  run cursor-abort-cleanup
121
122
  run cursor-local-resume-restart
@@ -142,7 +143,7 @@ Runtime budget is part of the contract:
142
143
  - `platform-build` runs once per target and is the only suite that performs the full local CI/build/typecheck/package gate.
143
144
  - Live suites reuse the target checkout and prepared `node_modules` when run after `platform-build`; they do not repeat `npm ci` in a target-session release run.
144
145
  - Live and local-resume suites share one target-local packed-install prep directory per target-session release run. The first such suite runs `npm pack` and `npm install --no-save <tarball>` once. Visual/abort suites install that packed path with `pi install --approve -l`; local-resume lanes pass the same packed package path to their source-tree smoke harness instead of loading the checkout extension.
145
- - Visual coverage is batched into one native prompt, one bridge prompt, and one abort/cleanup prompt per target. Do not split these into one prompt per card.
146
+ - Visual coverage is batched into one native prompt, one focused HTTP/1.1 transport prompt, one bridge prompt, and one abort/cleanup prompt per target. Do not split the card matrices into one prompt per card.
146
147
  - The gate is fail-fast by target to avoid burning Cursor calls after a platform has already failed.
147
148
 
148
149
  ## Required targets
@@ -155,30 +156,32 @@ Runtime budget is part of the contract:
155
156
 
156
157
  Ubuntu is covered as its own local-container target, and Windows native remains a full visual TUI target.
157
158
 
158
- ## Opt-in cloud smoke lane
159
+ ## Required cloud smoke gate
159
160
 
160
- Cloud validation is intentionally separate from `smoke:platform:all`. The required release gate keeps **no cloud provider dependency**; cloud runtime PRs must also run the opt-in cloud lane when they touch actual cloud execution.
161
-
162
- Run:
161
+ Cloud validation stays separate from `smoke:platform:all`. Releases that touch actual cloud execution must run both the local platform gate and:
163
162
 
164
163
  ```bash
165
164
  npm run smoke:cloud
166
165
  ```
167
166
 
168
- The default lane is intentionally minimal: it starts one non-interactive cloud run in a fresh persisted pi session (Cloud rejects `--no-session` so lifecycle intent can be fsynced before remote work), with explicit acknowledgement, fresh context, no pi bridge, no env forwarding, SDK event-debug contract checks, bounded stream-only cloud report shape checks, and cloud-agent archival cleanup with post-archive `archived: true` verification. Raw usage/artifact presence is account-dependent, so display-only accounting and artifact formatting contracts stay covered by unit/provider tests. It must fail closed when requested but unavailable:
167
+ The no-flag command is the required `cursor/composer-2-5` matrix. It uses current `gh` CLI authentication to create one private throwaway GitHub repository, seeds clean `main`, `starting-ref`, and `direct-push` branches, and runs persisted-session named lanes for:
168
+
169
+ - cancellation, with exact agent/run IDs captured before abort, retained `runIdSource` (`metadata` or installed-SDK `Agent.listRuns()` recovery), and terminal `cancelled` independently read through the SDK;
170
+ - explicit HTTPS repository plus `startingRef`, requiring a distinct pushed cloud branch with remote-content and starting-ref-ancestry proof, recording whether the SDK returned branch metadata, and validating any returned PR URL through GitHub;
171
+ - explicit direct-push opt-in, independently fetching the remote branch and checking its changed file content;
172
+ - a nonexistent starting branch, which must fail closed;
173
+ - `/cursor-cloud delete <exact bc-id> --yes` in the run's persisted session, followed by independent `Agent.get` not-found/404 and archived-inclusive list exclusion;
174
+ - passive artifacts and raw usage, recording observed true/false and validating bounded known shapes when the account returns either. Absence is an observation, not a skipped lane.
175
+
176
+ Prerequisites are intentionally strict: `CURSOR_API_KEY` with cloud entitlement, Cursor's GitHub integration with access to the new private repository, and `gh` auth with private-repository create, clone/push, inspect, and delete capability. Missing auth, entitlement, integration/access, required output, or any cleanup proof fails the gate. The GitHub mutation scope is destructive but bounded to self-created repositories named `pi-cursor-cloud-smoke-<uuid>` with an exact ownership-marker description. A cleanup handle is exposed only after create ownership is established (or an ambiguous create probe observes that exact marker). Deletion rejects arbitrary repository handles and independently requires an authenticated GitHub API HTTP 404 afterward.
169
177
 
170
- - missing cloud-capable credentials, repo access, or cloud entitlement → report **blocked**, not skipped-ready;
171
- - no non-interactive prompts; every needed cloud choice must come from CLI/env/config;
172
- - do not expose inline cloud MCP in the first cloud runtime lane;
173
- - do not forward local env values;
174
- - harvest exact throwaway agent IDs from optional debug metadata plus canonical session JSONL/lifecycle journals, archive the full union, and verify archived metadata before passing;
175
- - retain the entire artifact root whenever the run or any cleanup fails (successful runs remove it unless `CURSOR_CLOUD_SMOKE_KEEP_ARTIFACTS=1`).
178
+ Every path harvests exact IDs from provider metadata and canonical lifecycle session JSONL/journals. Final cleanup takes their union, archives every still-existing agent, requires `archived: true`, deletes it, then requires `Agent.get` not-found/404 and `Agent.list({ runtime: "cloud", includeArchived: true })` exclusion. `SIGINT` and `SIGTERM` first terminate the active detached Pi child, reject the lane, and then enter the same agent/repository cleanup coordinator before the process exits. Evidence is staged to a temporary file, then an event-loop signal checkpoint runs immediately before the atomic rename; that rename is the evidence commit point. A signal observed before it discards staged evidence. A signal dispatched after it but before the final terminal checkpoint still fails the process and suppresses the success marker, while the committed completed-cleanup summary remains valid. Emitting the success marker is the terminal-success boundary. Signal handlers stay installed through process teardown and independently set a failing exit code, so a still-active process cannot exit successfully if a signal is dispatched after that boundary, even when the marker was already written. Cleanup or repository-deletion verification failure fails the gate and retains the raw temporary artifact root. Successful runs remove raw artifacts unless `CURSOR_CLOUD_SMOKE_KEEP_ARTIFACTS=1`.
176
179
 
177
- Focused optional proof: `npm run smoke:cloud:context` runs a separate sessionful context-handoff matrix. Use it when changing cloud context-handoff behavior or gathering default-on/cloud-resume evidence. `fresh` must answer `NO_MARKER` for a prior-marker recall prompt, while `bootstrap` must recall the marker. It archives and verifies every exact cloud agent ID observed in debug metadata or canonical lifecycle artifacts.
180
+ Before removing successful raw artifacts, the gate atomically replaces `docs/evidence/cursor-cloud-smoke-matrix-latest.json` with a known-shape summary containing timestamp, model, lane observations, exact agent/run IDs, agent cleanup proof, repository cleanup proof, and retained evidence provenance. Provenance records the extension package version, installed `@cursor/sdk` version, git source revision, and a deterministic `packageSourceSha256` over the full published package surface from `package.json` `files` plus `package.json` itself (relative path + bytes; directories expanded; symlinks/non-regular paths rejected). Generated `docs/evidence/*` is outside that published surface and is not hashed. Because successful pre-commit checkouts may be uncommitted, the package-source hash is authoritative for code identity and the revision is baseline identity only. The summary is a runtime-validated known shape (explicit six-lane allowlist, complete lane-agent cleanup coverage, repository proof, provenance) that round-trips through the persisted-evidence validator with no prompts or raw output, and must pass canonical secret scrubbing plus forbidden-field scanning; a run or cleanup failure observed before the atomic rename commit point never overwrites the last successful summary. A signal first dispatched after that point can fail the process while retaining the newly committed completed-cleanup summary, as defined above. Offline release-gate resource coordination (run → harvest IDs → cleanup agents → cleanup repo → evidence only on complete success) lives in `coordinateCloudSmokeReleaseGate()` inside `scripts/lib/cloud-smoke-cleanup-evidence.mjs`. GitHub throwaway fixture ownership lives in `scripts/lib/cloud-smoke-github.mjs`, signal-safe child shutdown lives in `scripts/lib/cloud-smoke-shutdown.mjs`, and `scripts/cloud-runtime-smoke.mjs` keeps concrete lane logic.
178
181
 
179
- Future expanded cloud smoke work should add throwaway repo/branch coverage, dirty/unpushed warning assertions, branch/PR behavior, explicit direct-push opt-in, missing-branch failure, cancel/delete cleanup, and account-backed artifact/raw-usage fixtures when those contracts need live proof beyond the current report-shape and context-handoff smokes.
182
+ `npm run smoke:cloud:context` (`--context-matrix`) remains optional, separate proof for fresh-versus-bootstrap context handoff. `fresh` must answer `NO_MARKER`; `bootstrap` must recall the marker. Its agents receive the same archive, delete, `Agent.get` not-found/404, and archived-inclusive list-exclusion verification, but it does not create a GitHub repository or replace the required-matrix evidence summary.
180
183
 
181
- This lane is a cloud-runtime release gate, not a substitute for the local macOS/Ubuntu/Windows `smoke:platform:all` gate.
184
+ This cloud gate does not replace the local macOS/Ubuntu/Windows `smoke:platform:all` gate.
182
185
 
183
186
  ## Focused local resume smoke
184
187
 
@@ -250,7 +253,7 @@ Package scripts:
250
253
 
251
254
  ```json
252
255
  {
253
- "check:platform-smoke": "node --check platform-smoke.config.mjs && node --check <platform smoke scripts> && vitest run test/platform-artifact-boundaries.test.ts test/platform-smoke-artifact-transport.test.ts test/smoke-cli-package-contracts.test.ts test/smoke-tooling.test.ts",
256
+ "check:platform-smoke": "node --check platform-smoke.config.mjs && node --check <platform smoke scripts> && vitest run test/platform-artifact-boundaries.test.ts test/platform-smoke-artifact-transport.test.ts test/cloud-smoke-helpers.test.ts test/cursor-sdk-cloud-list-runs-contract.test.ts test/smoke-cli-package-contracts.test.ts test/smoke-tooling.test.ts",
254
257
  "smoke:platform": "node scripts/platform-smoke.mjs",
255
258
  "smoke:platform:doctor": "node scripts/platform-smoke.mjs doctor",
256
259
  "smoke:platform:macos": "node scripts/platform-smoke.mjs run --target macos",
@@ -296,6 +299,7 @@ export default {
296
299
  requiredSuites: [
297
300
  "platform-build",
298
301
  "cursor-native-visual-matrix",
302
+ "cursor-http1-live",
299
303
  "cursor-bridge-visual-matrix",
300
304
  "cursor-abort-cleanup",
301
305
  ...LOCAL_RESUME_SUITE_NAMES,
@@ -615,6 +619,32 @@ Required JSONL evidence:
615
619
  - final assistant message's last non-empty `text` part contains `NATIVE_MATRIX_OK`;
616
620
  - assistant usage fields are non-negative.
617
621
 
622
+ ### `cursor-http1-live`
623
+
624
+ Cursor calls: `1`.
625
+
626
+ Required environment:
627
+
628
+ ```text
629
+ PI_CURSOR_SETTING_SOURCES=none
630
+ PI_CURSOR_HTTP_1_1=1
631
+ PI_CURSOR_NATIVE_TOOL_DISPLAY=1
632
+ PI_CURSOR_REGISTER_NATIVE_TOOLS=1
633
+ PI_CURSOR_PI_TOOL_BRIDGE=0
634
+ PI_CURSOR_EXPOSE_BUILTIN_TOOLS=0
635
+ PI_CURSOR_SDK_EVENT_DEBUG=1
636
+ ```
637
+
638
+ Purpose:
639
+
640
+ - prove the packed extension completes a real local provider turn through the SDK's opt-in HTTP/1.1/SSE transport on every required OS;
641
+ - prove the final TUI status visibly includes `cursor:local ... http1`;
642
+ - keep the default transport covered by the other required live suites.
643
+
644
+ Required final marker: `HTTP1_LIVE_OK`.
645
+
646
+ Required visual evidence: `http1-status`.
647
+
618
648
  ### `cursor-bridge-visual-matrix`
619
649
 
620
650
  Cursor calls: `1`.
@@ -749,6 +779,7 @@ Per target maximum live Cursor invocations:
749
779
 
750
780
  ```text
751
781
  cursor-native-visual-matrix: 1
782
+ cursor-http1-live: 1
752
783
  cursor-bridge-visual-matrix: 1
753
784
  cursor-abort-cleanup: 1
754
785
  cursor-local-resume-restart: 2
@@ -763,9 +794,9 @@ cursor-local-resume-default-dry-run: 3
763
794
  cursor-local-resume-cleanup: 4
764
795
  ```
765
796
 
766
- Maximum per target: `36` Cursor invocations.
797
+ Maximum per target: `37` Cursor invocations.
767
798
 
768
- Maximum full gate: `108` Cursor invocations.
799
+ Maximum full gate: `111` Cursor invocations.
769
800
 
770
801
  The merge gate is `npm run smoke:platform:all`; that script runs doctor first and then the matrix to preserve this budget. No suite adds a new Cursor invocation without updating this plan and the scenario source of truth (`scripts/platform-smoke/scenarios.mjs`, plus `scripts/platform-smoke/local-resume-suites.mjs` for local-resume lanes).
771
802
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-cursor-sdk",
3
- "version": "0.1.60",
3
+ "version": "0.1.61",
4
4
  "description": "pi provider extension backed by @cursor/sdk local and cloud agents",
5
5
  "author": "Mitch Fultz (https://github.com/fitchmultz)",
6
6
  "license": "MIT",
@@ -65,10 +65,21 @@
65
65
  "scripts/platform-smoke/pty-capture.mjs",
66
66
  "scripts/platform-smoke/render-ansi.mjs",
67
67
  "scripts/platform-smoke/scenarios.mjs",
68
+ "scripts/platform-smoke/scenarios.d.mts",
68
69
  "scripts/platform-smoke/target-runtime.mjs",
69
70
  "scripts/platform-smoke/targets.mjs",
70
71
  "scripts/platform-smoke/visual-evidence.mjs",
71
72
  "scripts/platform-smoke/wrapped-line-match.mjs",
73
+ "scripts/lib/cloud-smoke-cleanup-evidence.mjs",
74
+ "scripts/lib/cloud-smoke-cleanup-evidence.d.mts",
75
+ "scripts/lib/cloud-smoke-artifacts.mjs",
76
+ "scripts/lib/cloud-smoke-artifacts.d.mts",
77
+ "scripts/lib/cloud-smoke-pi-runner.mjs",
78
+ "scripts/lib/cloud-smoke-pi-runner.d.mts",
79
+ "scripts/lib/cloud-smoke-github.mjs",
80
+ "scripts/lib/cloud-smoke-github.d.mts",
81
+ "scripts/lib/cloud-smoke-shutdown.mjs",
82
+ "scripts/lib/cloud-smoke-shutdown.d.mts",
72
83
  "scripts/lib/cursor-cli-args.mjs",
73
84
  "scripts/lib/cursor-cli-args.d.mts",
74
85
  "scripts/lib/cursor-child-process.mjs",
@@ -132,7 +143,7 @@
132
143
  "debug:sdk-events": "node scripts/debug-sdk-events.mjs",
133
144
  "debug:provider-events": "node scripts/debug-provider-events.mjs",
134
145
  "debug:mcp-coldstart": "node scripts/probe-mcp-coldstart.mjs",
135
- "check:platform-smoke": "node --check platform-smoke.config.mjs && node --check scripts/cloud-runtime-smoke.mjs && node --check scripts/local-resume-cleanup-smoke.mjs && node --check scripts/local-resume-smoke.mjs && node --check scripts/lib/local-resume-smoke-harness.mjs && node --check scripts/platform-smoke.mjs && node --check scripts/platform-smoke/artifact-bundle-chunk.mjs && node --check scripts/platform-smoke/artifact-bundle-contract.mjs && node --check scripts/platform-smoke/artifact-fs-safety.mjs && node --check scripts/platform-smoke/artifact-anchored-extract.mjs && node --check scripts/platform-smoke/artifact-secrets.mjs && node --check scripts/platform-smoke/assertions.mjs && node --check scripts/platform-smoke/artifacts.mjs && node --check scripts/platform-smoke/card-detect.mjs && node --check scripts/platform-smoke/crabbox-runner.mjs && node --check scripts/platform-smoke/doctor.mjs && node --check scripts/platform-smoke/jsonl-text.mjs && node --check scripts/platform-smoke/live-suite-runner.mjs && node --check scripts/platform-smoke/local-resume-runner.mjs && node --check scripts/platform-smoke/pty-capture.mjs && node --check scripts/platform-smoke/render-ansi.mjs && node --check scripts/platform-smoke/scenarios.mjs && node --check scripts/platform-smoke/target-runtime.mjs && node --check scripts/platform-smoke/targets.mjs && node --check scripts/platform-smoke/visual-evidence.mjs && node --check scripts/platform-smoke/wrapped-line-match.mjs && vitest run test/platform-artifact-boundaries.test.ts test/platform-smoke-artifact-transport.test.ts test/smoke-cli-package-contracts.test.ts test/smoke-tooling.test.ts",
146
+ "check:platform-smoke": "node --check platform-smoke.config.mjs && node --check scripts/cloud-runtime-smoke.mjs && node --check scripts/lib/cloud-smoke-cleanup-evidence.mjs && node --check scripts/lib/cloud-smoke-artifacts.mjs && node --check scripts/lib/cloud-smoke-pi-runner.mjs && node --check scripts/lib/cloud-smoke-github.mjs && node --check scripts/lib/cloud-smoke-shutdown.mjs && node --check scripts/local-resume-cleanup-smoke.mjs && node --check scripts/local-resume-smoke.mjs && node --check scripts/lib/local-resume-smoke-harness.mjs && node --check scripts/platform-smoke.mjs && node --check scripts/platform-smoke/artifact-bundle-chunk.mjs && node --check scripts/platform-smoke/artifact-bundle-contract.mjs && node --check scripts/platform-smoke/artifact-fs-safety.mjs && node --check scripts/platform-smoke/artifact-anchored-extract.mjs && node --check scripts/platform-smoke/artifact-secrets.mjs && node --check scripts/platform-smoke/assertions.mjs && node --check scripts/platform-smoke/artifacts.mjs && node --check scripts/platform-smoke/card-detect.mjs && node --check scripts/platform-smoke/crabbox-runner.mjs && node --check scripts/platform-smoke/doctor.mjs && node --check scripts/platform-smoke/jsonl-text.mjs && node --check scripts/platform-smoke/live-suite-runner.mjs && node --check scripts/platform-smoke/local-resume-runner.mjs && node --check scripts/platform-smoke/pty-capture.mjs && node --check scripts/platform-smoke/render-ansi.mjs && node --check scripts/platform-smoke/scenarios.mjs && node --check scripts/platform-smoke/target-runtime.mjs && node --check scripts/platform-smoke/targets.mjs && node --check scripts/platform-smoke/visual-evidence.mjs && node --check scripts/platform-smoke/wrapped-line-match.mjs && vitest run test/platform-artifact-boundaries.test.ts test/platform-smoke-artifact-transport.test.ts test/cloud-smoke-helpers.test.ts test/cursor-sdk-cloud-list-runs-contract.test.ts test/smoke-cli-package-contracts.test.ts test/smoke-tooling.test.ts",
136
147
  "smoke:platform": "node scripts/platform-smoke.mjs",
137
148
  "smoke:platform:doctor": "node scripts/platform-smoke.mjs doctor",
138
149
  "smoke:platform:macos": "node scripts/platform-smoke.mjs run --target macos",
@@ -16,6 +16,7 @@ export default {
16
16
  requiredSuites: [
17
17
  "platform-build",
18
18
  "cursor-native-visual-matrix",
19
+ "cursor-http1-live",
19
20
  "cursor-bridge-visual-matrix",
20
21
  "cursor-abort-cleanup",
21
22
  ...LOCAL_RESUME_SUITE_NAMES,
@@ -1,3 +1,42 @@
1
- export function buildCloudSmokeEnv(artifactDir: string, options?: { contextHandoff?: "fresh" | "bootstrap" | "never" }): NodeJS.ProcessEnv;
1
+ export function buildCloudSmokeEnv(artifactDir: string, options?: {
2
+ contextHandoff?: "fresh" | "bootstrap" | "never";
3
+ repoUrl?: string;
4
+ startingRef?: string;
5
+ directPush?: boolean;
6
+ }): NodeJS.ProcessEnv;
2
7
  export function buildCloudSmokeWorkspace(artifactDir: string): string;
3
8
  export function cloudAgentIdsFromLifecycleArtifacts(artifactDir: string): string[];
9
+
10
+ export {
11
+ assertCloudSmokeEvidenceSafe,
12
+ buildCloudSmokeEvidenceProvenance,
13
+ coordinateCloudSmokeReleaseGate,
14
+ listCloudSmokePackageSourcePaths,
15
+ projectCloudSmokeMatrixEvidence,
16
+ validateCloudSmokeMatrixEvidence,
17
+ } from "./lib/cloud-smoke-cleanup-evidence.d.mts";
18
+
19
+ export type {
20
+ CloudSmokeBranchLaneEvidence,
21
+ CloudSmokeCancelLaneEvidence,
22
+ CloudSmokeCleanupEvidence,
23
+ CloudSmokeDirectPushLaneEvidence,
24
+ CloudSmokeEvidenceBranch,
25
+ CloudSmokeEvidenceProvenance,
26
+ CloudSmokeLaneEvidence,
27
+ CloudSmokeLaneName,
28
+ CloudSmokeLifecycleDeleteLaneEvidence,
29
+ CloudSmokeMatrixEvidence,
30
+ CloudSmokeMissingBranchLaneEvidence,
31
+ CloudSmokePassiveArtifactsLaneEvidence,
32
+ CloudSmokeReleaseGateState,
33
+ CloudSmokeThrowawayRepositoryEvidence,
34
+ } from "./lib/cloud-smoke-cleanup-evidence.d.mts";
35
+
36
+ export {
37
+ assertOwnedThrowawayRepositoryHandle,
38
+ cloudSmokeRepositoryDescription,
39
+ normalizeCloudSmokeGitHubRepo,
40
+ } from "./lib/cloud-smoke-github.d.mts";
41
+
42
+ export type { CloudSmokeOwnedRepository } from "./lib/cloud-smoke-github.d.mts";