@velum-labs/cursorkit 0.1.0
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.
- package/DISCLAIMER.md +12 -0
- package/README.md +157 -0
- package/dist/src/agentTools/diff.d.ts +11 -0
- package/dist/src/agentTools/diff.js +88 -0
- package/dist/src/agentTools/policy.d.ts +3 -0
- package/dist/src/agentTools/policy.js +12 -0
- package/dist/src/agentTools/registry.d.ts +114 -0
- package/dist/src/agentTools/registry.js +663 -0
- package/dist/src/agentTools/results.d.ts +14 -0
- package/dist/src/agentTools/results.js +117 -0
- package/dist/src/agentTools/schemas.d.ts +3 -0
- package/dist/src/agentTools/schemas.js +89 -0
- package/dist/src/agentTools/surface.d.ts +11 -0
- package/dist/src/agentTools/surface.js +251 -0
- package/dist/src/certs.d.ts +8 -0
- package/dist/src/certs.js +34 -0
- package/dist/src/ck.d.ts +2 -0
- package/dist/src/ck.js +6 -0
- package/dist/src/ckLauncher.d.ts +150 -0
- package/dist/src/ckLauncher.js +1496 -0
- package/dist/src/cli.d.ts +2 -0
- package/dist/src/cli.js +265 -0
- package/dist/src/config.d.ts +52 -0
- package/dist/src/config.js +210 -0
- package/dist/src/connectEnvelope.d.ts +16 -0
- package/dist/src/connectEnvelope.js +70 -0
- package/dist/src/desktop.d.ts +19 -0
- package/dist/src/desktop.js +167 -0
- package/dist/src/desktopConnectProxy.d.ts +26 -0
- package/dist/src/desktopConnectProxy.js +175 -0
- package/dist/src/extensions/index.d.ts +2 -0
- package/dist/src/extensions/index.js +1 -0
- package/dist/src/extensions/registry.d.ts +8 -0
- package/dist/src/extensions/registry.js +52 -0
- package/dist/src/extensions/types.d.ts +42 -0
- package/dist/src/extensions/types.js +1 -0
- package/dist/src/fixtures/modelFusion.d.ts +103 -0
- package/dist/src/fixtures/modelFusion.js +404 -0
- package/dist/src/fixtures/replay.d.ts +9 -0
- package/dist/src/fixtures/replay.js +41 -0
- package/dist/src/fixtures/sanitizer.d.ts +9 -0
- package/dist/src/fixtures/sanitizer.js +43 -0
- package/dist/src/fixtures/schema.d.ts +38 -0
- package/dist/src/fixtures/schema.js +33 -0
- package/dist/src/gen/agent/v1/agent_pb.d.ts +21577 -0
- package/dist/src/gen/agent/v1/agent_pb.js +5325 -0
- package/dist/src/gen/aiserver/v1/aiserver_pb.d.ts +135242 -0
- package/dist/src/gen/aiserver/v1/aiserver_pb.js +34430 -0
- package/dist/src/gen/anyrun/v1/anyrun_pb.d.ts +1163 -0
- package/dist/src/gen/anyrun/v1/anyrun_pb.js +374 -0
- package/dist/src/gen/google/protobuf/google_pb.d.ts +142 -0
- package/dist/src/gen/google/protobuf/google_pb.js +54 -0
- package/dist/src/gen/internapi/v1/internapi_pb.d.ts +121 -0
- package/dist/src/gen/internapi/v1/internapi_pb.js +79 -0
- package/dist/src/logger.d.ts +8 -0
- package/dist/src/logger.js +37 -0
- package/dist/src/modelFusion/cursorHarness.d.ts +146 -0
- package/dist/src/modelFusion/cursorHarness.js +647 -0
- package/dist/src/modelFusion/index.d.ts +4 -0
- package/dist/src/modelFusion/index.js +2 -0
- package/dist/src/models/registry.d.ts +22 -0
- package/dist/src/models/registry.js +30 -0
- package/dist/src/proto.d.ts +13 -0
- package/dist/src/proto.js +61 -0
- package/dist/src/providers/openai.d.ts +64 -0
- package/dist/src/providers/openai.js +355 -0
- package/dist/src/redaction.d.ts +4 -0
- package/dist/src/redaction.js +65 -0
- package/dist/src/routeInventory.d.ts +16 -0
- package/dist/src/routeInventory.js +39 -0
- package/dist/src/routes.d.ts +37 -0
- package/dist/src/routes.js +227 -0
- package/dist/src/server.d.ts +50 -0
- package/dist/src/server.js +1353 -0
- package/dist/src/services/agent.d.ts +1 -0
- package/dist/src/services/agent.js +7 -0
- package/dist/src/services/agentRun.d.ts +60 -0
- package/dist/src/services/agentRun.js +391 -0
- package/dist/src/services/chat.d.ts +11 -0
- package/dist/src/services/chat.js +47 -0
- package/dist/src/services/models.d.ts +10 -0
- package/dist/src/services/models.js +216 -0
- package/dist/src/services/serverConfig.d.ts +2 -0
- package/dist/src/services/serverConfig.js +19 -0
- package/dist/src/testing/artifacts.d.ts +14 -0
- package/dist/src/testing/artifacts.js +92 -0
- package/dist/src/testing/cli.d.ts +4 -0
- package/dist/src/testing/cli.js +192 -0
- package/dist/src/testing/localBackend.d.ts +24 -0
- package/dist/src/testing/localBackend.js +310 -0
- package/dist/src/testing/processRunner.d.ts +7 -0
- package/dist/src/testing/processRunner.js +74 -0
- package/dist/src/testing/runner.d.ts +9 -0
- package/dist/src/testing/runner.js +85 -0
- package/dist/src/testing/scenarios.d.ts +3 -0
- package/dist/src/testing/scenarios.js +2535 -0
- package/dist/src/testing/types.d.ts +66 -0
- package/dist/src/testing/types.js +1 -0
- package/dist/src/tools/baselineInventory.d.ts +12 -0
- package/dist/src/tools/baselineInventory.js +680 -0
- package/dist/src/tools/checkModelFusionProtocol.d.ts +1 -0
- package/dist/src/tools/checkModelFusionProtocol.js +274 -0
- package/dist/src/tools/checkReleasePublishConfig.d.ts +1 -0
- package/dist/src/tools/checkReleasePublishConfig.js +99 -0
- package/dist/src/tools/generateProtoInventory.d.ts +1 -0
- package/dist/src/tools/generateProtoInventory.js +89 -0
- package/dist/src/tools/normalizeGeneratedCode.d.ts +1 -0
- package/dist/src/tools/normalizeGeneratedCode.js +18 -0
- package/dist/src/tools/releaseCheck.d.ts +26 -0
- package/dist/src/tools/releaseCheck.js +367 -0
- package/dist/src/trace.d.ts +39 -0
- package/dist/src/trace.js +106 -0
- package/dist/src/translation.d.ts +6 -0
- package/dist/src/translation.js +22 -0
- package/dist/src/upstream.d.ts +20 -0
- package/dist/src/upstream.js +270 -0
- package/docs/configuration.md +55 -0
- package/docs/cursor-app.md +263 -0
- package/docs/implementation-inventory.json +609 -0
- package/docs/learnings.md +363 -0
- package/docs/model-fusion-protocol-origin.json +126 -0
- package/docs/model-fusion-protocol.md +110 -0
- package/docs/plugin-authoring.md +24 -0
- package/docs/proto-inventory.md +1477 -0
- package/docs/protocol-surface-audit.md +92 -0
- package/docs/protocol.md +52 -0
- package/docs/refreshing-protos.md +78 -0
- package/docs/release-gates.md +110 -0
- package/docs/release-summary.json +86 -0
- package/docs/route-contract-manifest.json +288 -0
- package/docs/route-policy.json +133 -0
- package/docs/service-manifest.json +9490 -0
- package/docs/test-manifest.json +155 -0
- package/docs/testing-harness.md +204 -0
- package/docs/troubleshooting.md +36 -0
- package/docs/type-manifest-summary.json +28927 -0
- package/package.json +93 -0
- package/proto/agent/v1/agent.proto +5371 -0
- package/proto/aiserver/v1/aiserver.proto +32944 -0
- package/proto/anyrun/v1/anyrun.proto +294 -0
- package/proto/google/protobuf/google.proto +37 -0
- package/proto/internapi/v1/internapi.proto +32 -0
|
@@ -0,0 +1,609 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"generatedBy": "src/tools/baselineInventory.ts",
|
|
4
|
+
"sources": ["docs/service-manifest.json", "src/routes.ts", "src/config.ts"],
|
|
5
|
+
"routes": [
|
|
6
|
+
{
|
|
7
|
+
"path": "/aiserver.v1.AiService/AvailableModels",
|
|
8
|
+
"policy": "intercept",
|
|
9
|
+
"owner": "bridge-core",
|
|
10
|
+
"packageName": "aiserver.v1",
|
|
11
|
+
"service": "AiService",
|
|
12
|
+
"method": "AvailableModels",
|
|
13
|
+
"inputType": "AvailableModelsRequest",
|
|
14
|
+
"outputType": "AvailableModelsResponse",
|
|
15
|
+
"serverStreaming": false,
|
|
16
|
+
"protoBacked": true,
|
|
17
|
+
"supportLevel": "implemented",
|
|
18
|
+
"expectedMethods": ["POST"],
|
|
19
|
+
"expectedContentTypes": [
|
|
20
|
+
"application/proto",
|
|
21
|
+
"application/connect+proto"
|
|
22
|
+
],
|
|
23
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
24
|
+
"testStatus": "focused-tests-present",
|
|
25
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
26
|
+
"reason": "Merge conservative local model entries with upstream models.",
|
|
27
|
+
"uncertainty": "Model metadata fields beyond local id/display/context remain fixture-gated."
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"path": "/aiserver.v1.AiService/GetUsableModels",
|
|
31
|
+
"policy": "intercept",
|
|
32
|
+
"owner": "bridge-core",
|
|
33
|
+
"packageName": "aiserver.v1",
|
|
34
|
+
"service": "AiService",
|
|
35
|
+
"method": "GetUsableModels",
|
|
36
|
+
"inputType": "AgentV1_GetUsableModelsRequest",
|
|
37
|
+
"outputType": "AgentV1_GetUsableModelsResponse",
|
|
38
|
+
"serverStreaming": false,
|
|
39
|
+
"protoBacked": true,
|
|
40
|
+
"supportLevel": "implemented",
|
|
41
|
+
"expectedMethods": ["POST"],
|
|
42
|
+
"expectedContentTypes": [
|
|
43
|
+
"application/proto",
|
|
44
|
+
"application/connect+proto"
|
|
45
|
+
],
|
|
46
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
47
|
+
"testStatus": "focused-tests-present",
|
|
48
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
49
|
+
"reason": "Cursor Agent CLI reads this route for its model picker; merge local model entries with upstream usable models.",
|
|
50
|
+
"uncertainty": "Desktop model picker usage must be confirmed by route inventory before adding desktop-specific assumptions."
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"path": "/aiserver.v1.AiService/GetDefaultModelForCli",
|
|
54
|
+
"policy": "intercept",
|
|
55
|
+
"owner": "bridge-core",
|
|
56
|
+
"packageName": "aiserver.v1",
|
|
57
|
+
"service": "AiService",
|
|
58
|
+
"method": "GetDefaultModelForCli",
|
|
59
|
+
"inputType": "AgentV1_GetDefaultModelForCliRequest",
|
|
60
|
+
"outputType": "AgentV1_GetDefaultModelForCliResponse",
|
|
61
|
+
"serverStreaming": false,
|
|
62
|
+
"protoBacked": true,
|
|
63
|
+
"supportLevel": "implemented",
|
|
64
|
+
"expectedMethods": ["POST"],
|
|
65
|
+
"expectedContentTypes": [
|
|
66
|
+
"application/proto",
|
|
67
|
+
"application/connect+proto"
|
|
68
|
+
],
|
|
69
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
70
|
+
"testStatus": "focused-tests-present",
|
|
71
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
72
|
+
"reason": "Preserve upstream's CLI default model when present; otherwise provide the first registered local model.",
|
|
73
|
+
"uncertainty": "Client-specific default selection remains gated by observed CLI/ACP traffic."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"path": "/aiserver.v1.AiService/GetDefaultModel",
|
|
77
|
+
"policy": "intercept",
|
|
78
|
+
"owner": "bridge-core",
|
|
79
|
+
"packageName": "aiserver.v1",
|
|
80
|
+
"service": "AiService",
|
|
81
|
+
"method": "GetDefaultModel",
|
|
82
|
+
"inputType": "GetDefaultModelRequest",
|
|
83
|
+
"outputType": "GetDefaultModelResponse",
|
|
84
|
+
"serverStreaming": false,
|
|
85
|
+
"protoBacked": true,
|
|
86
|
+
"supportLevel": "implemented",
|
|
87
|
+
"expectedMethods": ["POST"],
|
|
88
|
+
"expectedContentTypes": [
|
|
89
|
+
"application/proto",
|
|
90
|
+
"application/connect+proto"
|
|
91
|
+
],
|
|
92
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
93
|
+
"testStatus": "focused-tests-present",
|
|
94
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
95
|
+
"reason": "Return the first registered local model as a fallback default for non-CLI callers.",
|
|
96
|
+
"uncertainty": "Desktop reliance on this route is not yet proven by captured traffic."
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"path": "/aiserver.v1.AiService/NameAgent",
|
|
100
|
+
"policy": "intercept",
|
|
101
|
+
"owner": "bridge-core",
|
|
102
|
+
"packageName": "aiserver.v1",
|
|
103
|
+
"service": "AiService",
|
|
104
|
+
"method": "NameAgent",
|
|
105
|
+
"inputType": "AgentV1_NameAgentRequest",
|
|
106
|
+
"outputType": "AgentV1_NameAgentResponse",
|
|
107
|
+
"serverStreaming": false,
|
|
108
|
+
"protoBacked": true,
|
|
109
|
+
"supportLevel": "implemented",
|
|
110
|
+
"expectedMethods": ["POST"],
|
|
111
|
+
"expectedContentTypes": [
|
|
112
|
+
"application/proto",
|
|
113
|
+
"application/connect+proto"
|
|
114
|
+
],
|
|
115
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
116
|
+
"testStatus": "focused-tests-present",
|
|
117
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
118
|
+
"reason": "Provide a local fallback name for Cursor Agent sessions.",
|
|
119
|
+
"uncertainty": "Exact naming behavior can be refined once real client naming fixtures are replayed."
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
"path": "/aiserver.v1.ServerConfigService/GetServerConfig",
|
|
123
|
+
"policy": "intercept",
|
|
124
|
+
"owner": "bridge-core",
|
|
125
|
+
"packageName": "aiserver.v1",
|
|
126
|
+
"service": "ServerConfigService",
|
|
127
|
+
"method": "GetServerConfig",
|
|
128
|
+
"inputType": "GetServerConfigRequest",
|
|
129
|
+
"outputType": "GetServerConfigResponse",
|
|
130
|
+
"serverStreaming": false,
|
|
131
|
+
"protoBacked": true,
|
|
132
|
+
"supportLevel": "implemented",
|
|
133
|
+
"expectedMethods": ["POST"],
|
|
134
|
+
"expectedContentTypes": [
|
|
135
|
+
"application/proto",
|
|
136
|
+
"application/connect+proto"
|
|
137
|
+
],
|
|
138
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
139
|
+
"testStatus": "focused-tests-present",
|
|
140
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
141
|
+
"reason": "Rewrite agent URLs to the bridge origin and force HTTP/2 off for local bridge compatibility.",
|
|
142
|
+
"uncertainty": "Additional desktop server-config fields stay pass-through until captured fixtures prove they are needed."
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
"path": "/auth/full_stripe_profile",
|
|
146
|
+
"policy": "intercept",
|
|
147
|
+
"owner": "bridge-core",
|
|
148
|
+
"protoBacked": false,
|
|
149
|
+
"supportLevel": "implemented",
|
|
150
|
+
"expectedMethods": ["GET", "POST"],
|
|
151
|
+
"expectedContentTypes": ["application/json", "none"],
|
|
152
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
153
|
+
"testStatus": "focused-tests-present",
|
|
154
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
155
|
+
"reason": "Provide a local desktop auth-profile shim for Cursor desktop experiments.",
|
|
156
|
+
"uncertainty": "HTTP auth profile routes are not proto-backed; exact desktop expectations remain traffic-gated."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"path": "/auth/stripe_profile",
|
|
160
|
+
"policy": "intercept",
|
|
161
|
+
"owner": "bridge-core",
|
|
162
|
+
"protoBacked": false,
|
|
163
|
+
"supportLevel": "implemented",
|
|
164
|
+
"expectedMethods": ["GET", "POST"],
|
|
165
|
+
"expectedContentTypes": ["application/json", "none"],
|
|
166
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
167
|
+
"testStatus": "focused-tests-present",
|
|
168
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
169
|
+
"reason": "Provide a local desktop auth-profile shim for Cursor desktop experiments.",
|
|
170
|
+
"uncertainty": "HTTP auth profile routes are not proto-backed; exact desktop expectations remain traffic-gated."
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
"path": "/agent.v1.AgentService/Run",
|
|
174
|
+
"policy": "intercept",
|
|
175
|
+
"owner": "bridge-core",
|
|
176
|
+
"packageName": "agent.v1",
|
|
177
|
+
"service": "AgentService",
|
|
178
|
+
"method": "Run",
|
|
179
|
+
"inputType": "AgentClientMessage",
|
|
180
|
+
"outputType": "AgentServerMessage",
|
|
181
|
+
"serverStreaming": false,
|
|
182
|
+
"protoBacked": true,
|
|
183
|
+
"supportLevel": "conditional",
|
|
184
|
+
"expectedMethods": ["POST"],
|
|
185
|
+
"expectedContentTypes": [
|
|
186
|
+
"application/proto",
|
|
187
|
+
"application/connect+proto"
|
|
188
|
+
],
|
|
189
|
+
"fixtureStatus": "needs-captured-fixture",
|
|
190
|
+
"testStatus": "partial-tests-present",
|
|
191
|
+
"realClientEvidence": "traffic-gated",
|
|
192
|
+
"reason": "Handle local Agent Run requests when the selected model is registered locally; otherwise preserve upstream behavior.",
|
|
193
|
+
"uncertainty": "Connect/native streaming shape needs broader fixture replay before this becomes fully fixture-backed."
|
|
194
|
+
},
|
|
195
|
+
{
|
|
196
|
+
"path": "/agent.v1.AgentService/RunSSE",
|
|
197
|
+
"policy": "intercept",
|
|
198
|
+
"owner": "bridge-core",
|
|
199
|
+
"packageName": "agent.v1",
|
|
200
|
+
"service": "AgentService",
|
|
201
|
+
"method": "RunSSE",
|
|
202
|
+
"inputType": "AiserverV1_BidiRequestId",
|
|
203
|
+
"outputType": "AgentServerMessage",
|
|
204
|
+
"serverStreaming": true,
|
|
205
|
+
"protoBacked": true,
|
|
206
|
+
"supportLevel": "conditional",
|
|
207
|
+
"expectedMethods": ["POST"],
|
|
208
|
+
"expectedContentTypes": [
|
|
209
|
+
"application/proto",
|
|
210
|
+
"application/connect+proto"
|
|
211
|
+
],
|
|
212
|
+
"fixtureStatus": "needs-captured-fixture",
|
|
213
|
+
"testStatus": "partial-tests-present",
|
|
214
|
+
"realClientEvidence": "traffic-gated",
|
|
215
|
+
"reason": "Serve Cursor Agent local-model runs when paired with a matching BidiAppend payload.",
|
|
216
|
+
"uncertainty": "Bidi request-id flow and payload framing need captured fixture replay across CLI and ACP."
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"path": "/aiserver.v1.BidiService/BidiAppend",
|
|
220
|
+
"policy": "intercept",
|
|
221
|
+
"owner": "bridge-core",
|
|
222
|
+
"packageName": "aiserver.v1",
|
|
223
|
+
"service": "BidiService",
|
|
224
|
+
"method": "BidiAppend",
|
|
225
|
+
"inputType": "BidiAppendRequest",
|
|
226
|
+
"outputType": "BidiAppendResponse",
|
|
227
|
+
"serverStreaming": false,
|
|
228
|
+
"protoBacked": true,
|
|
229
|
+
"supportLevel": "conditional",
|
|
230
|
+
"expectedMethods": ["POST"],
|
|
231
|
+
"expectedContentTypes": [
|
|
232
|
+
"application/proto",
|
|
233
|
+
"application/connect+proto"
|
|
234
|
+
],
|
|
235
|
+
"fixtureStatus": "needs-captured-fixture",
|
|
236
|
+
"testStatus": "partial-tests-present",
|
|
237
|
+
"realClientEvidence": "traffic-gated",
|
|
238
|
+
"reason": "Decode Cursor Agent client messages and register pending local-model runs.",
|
|
239
|
+
"uncertainty": "Observed payload encodings include surprising nested forms; unsupported forms must pass through."
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
"path": "/aiserver.v1.ChatService/StreamUnifiedChatWithTools",
|
|
243
|
+
"policy": "intercept",
|
|
244
|
+
"owner": "bridge-core",
|
|
245
|
+
"packageName": "aiserver.v1",
|
|
246
|
+
"service": "ChatService",
|
|
247
|
+
"method": "StreamUnifiedChatWithTools",
|
|
248
|
+
"inputType": "StreamUnifiedChatRequestWithTools",
|
|
249
|
+
"outputType": "StreamUnifiedChatResponseWithTools",
|
|
250
|
+
"serverStreaming": false,
|
|
251
|
+
"protoBacked": true,
|
|
252
|
+
"supportLevel": "conditional",
|
|
253
|
+
"expectedMethods": ["POST"],
|
|
254
|
+
"expectedContentTypes": [
|
|
255
|
+
"application/proto",
|
|
256
|
+
"application/connect+proto"
|
|
257
|
+
],
|
|
258
|
+
"fixtureStatus": "needs-captured-fixture",
|
|
259
|
+
"testStatus": "partial-tests-present",
|
|
260
|
+
"realClientEvidence": "traffic-gated",
|
|
261
|
+
"reason": "Handle requests only when selected model is registered locally; otherwise pass upstream.",
|
|
262
|
+
"uncertainty": "SSE, Poll, and idempotent chat variants stay pass-through until observed and decoded."
|
|
263
|
+
},
|
|
264
|
+
{
|
|
265
|
+
"path": "/aiserver.v1.AnalyticsService/UploadIssueTrace",
|
|
266
|
+
"policy": "intercept",
|
|
267
|
+
"owner": "bridge-core",
|
|
268
|
+
"packageName": "aiserver.v1",
|
|
269
|
+
"service": "AnalyticsService",
|
|
270
|
+
"method": "UploadIssueTrace",
|
|
271
|
+
"inputType": "UploadIssueTraceRequest",
|
|
272
|
+
"outputType": "UploadIssueTraceResponse",
|
|
273
|
+
"serverStreaming": false,
|
|
274
|
+
"protoBacked": true,
|
|
275
|
+
"supportLevel": "implemented",
|
|
276
|
+
"expectedMethods": ["POST"],
|
|
277
|
+
"expectedContentTypes": [
|
|
278
|
+
"application/proto",
|
|
279
|
+
"application/connect+proto"
|
|
280
|
+
],
|
|
281
|
+
"fixtureStatus": "synthetic-or-unit-covered",
|
|
282
|
+
"testStatus": "focused-tests-present",
|
|
283
|
+
"realClientEvidence": "cli-or-unit-evidence",
|
|
284
|
+
"reason": "Acknowledge issue-trace uploads locally to avoid forwarding sensitive diagnostic blobs during local experiments.",
|
|
285
|
+
"uncertainty": "Full payload redaction and fixture coverage remain part of the reliability/security workstream."
|
|
286
|
+
}
|
|
287
|
+
],
|
|
288
|
+
"config": {
|
|
289
|
+
"envVars": [
|
|
290
|
+
{
|
|
291
|
+
"name": "BRIDGE_AGENT_CONTEXT_TIMEOUT_MS",
|
|
292
|
+
"category": "reliability",
|
|
293
|
+
"defaultValue": "undefined",
|
|
294
|
+
"description": "Optional timeout for gathering agent context before local model execution."
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"name": "BRIDGE_AGENT_NATIVE_CONTEXT",
|
|
298
|
+
"category": "agent-tools",
|
|
299
|
+
"defaultValue": "true",
|
|
300
|
+
"description": "Controls whether local agent runs include native Cursor context gathered before model execution."
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
"name": "BRIDGE_AGENT_PUBLIC_ORIGIN",
|
|
304
|
+
"category": "desktop",
|
|
305
|
+
"defaultValue": "undefined",
|
|
306
|
+
"description": "Public origin advertised to Cursor Agent clients when different from the bridge public origin."
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"name": "BRIDGE_AGENT_RUN_SSE_WAIT_TIMEOUT_MS",
|
|
310
|
+
"category": "reliability",
|
|
311
|
+
"defaultValue": "undefined",
|
|
312
|
+
"description": "Optional timeout for waiting on pending Agent RunSSE/Bidi state."
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"name": "BRIDGE_AGENT_TOOL_MAX_ITERATIONS",
|
|
316
|
+
"category": "agent-tools",
|
|
317
|
+
"defaultValue": "8",
|
|
318
|
+
"description": "Maximum number of tool-call iterations the bridge runs per local agent turn before stopping."
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
"name": "BRIDGE_AGENT_TOOL_POLICY",
|
|
322
|
+
"category": "agent-tools",
|
|
323
|
+
"defaultValue": "safe",
|
|
324
|
+
"description": "Controls whether local agent runs advertise only safe tools or the approved extended tool set."
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"name": "BRIDGE_AGENT_TOOL_RESULT_TIMEOUT_MS",
|
|
328
|
+
"category": "reliability",
|
|
329
|
+
"defaultValue": "undefined",
|
|
330
|
+
"description": "Optional timeout for waiting on Cursor exec tool results during local agent runs."
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"name": "BRIDGE_AUTH_TOKEN",
|
|
334
|
+
"category": "safety",
|
|
335
|
+
"defaultValue": "undefined",
|
|
336
|
+
"requiredWhen": "BRIDGE_HOST is non-localhost unless BRIDGE_UNSAFE_ALLOW_NON_LOCALHOST=true",
|
|
337
|
+
"description": "Bearer token required to protect non-localhost bridge binds unless explicitly bypassed."
|
|
338
|
+
},
|
|
339
|
+
{
|
|
340
|
+
"name": "BRIDGE_CAPTURE_DIR",
|
|
341
|
+
"category": "capture",
|
|
342
|
+
"defaultValue": "fixtures/captures",
|
|
343
|
+
"description": "Directory for traffic captures when capture mode is enabled."
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
"name": "BRIDGE_CAPTURE_ENABLED",
|
|
347
|
+
"category": "capture",
|
|
348
|
+
"defaultValue": "false",
|
|
349
|
+
"description": "Enables explicit traffic capture hooks; route inventory is separate."
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
"name": "BRIDGE_CERT_PATH",
|
|
353
|
+
"category": "tls",
|
|
354
|
+
"defaultValue": "undefined",
|
|
355
|
+
"requiredWhen": "BRIDGE_USE_TLS=true and generated certs are not used",
|
|
356
|
+
"description": "Path to TLS certificate material."
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"name": "BRIDGE_DESKTOP_AGENT_HTTP_PORT",
|
|
360
|
+
"category": "desktop",
|
|
361
|
+
"defaultValue": "undefined",
|
|
362
|
+
"description": "Optional secondary HTTP listener port for desktop agent compatibility experiments."
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "BRIDGE_DESKTOP_MODE",
|
|
366
|
+
"category": "desktop",
|
|
367
|
+
"defaultValue": "false",
|
|
368
|
+
"description": "Enables desktop proxy defaults, including upstream, public origin, TLS hostnames, and route inventory."
|
|
369
|
+
},
|
|
370
|
+
{
|
|
371
|
+
"name": "BRIDGE_EXTENSION_SETUP_TIMEOUT_MS",
|
|
372
|
+
"category": "reliability",
|
|
373
|
+
"defaultValue": "undefined",
|
|
374
|
+
"description": "Optional timeout for local extension/plugin setup during bridge startup."
|
|
375
|
+
},
|
|
376
|
+
{
|
|
377
|
+
"name": "BRIDGE_FAIL_OPEN",
|
|
378
|
+
"category": "safety",
|
|
379
|
+
"defaultValue": "true",
|
|
380
|
+
"description": "Controls whether typed intercept failures return explicit bridge errors after consuming request bodies."
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"name": "BRIDGE_HARDCODED_RESPONSE",
|
|
384
|
+
"category": "model",
|
|
385
|
+
"defaultValue": "undefined",
|
|
386
|
+
"description": "Optional fixed local model response for deterministic experiments."
|
|
387
|
+
},
|
|
388
|
+
{
|
|
389
|
+
"name": "BRIDGE_HOST",
|
|
390
|
+
"category": "core",
|
|
391
|
+
"defaultValue": "127.0.0.1",
|
|
392
|
+
"description": "Bridge bind host."
|
|
393
|
+
},
|
|
394
|
+
{
|
|
395
|
+
"name": "BRIDGE_KEY_PATH",
|
|
396
|
+
"category": "tls",
|
|
397
|
+
"defaultValue": "undefined",
|
|
398
|
+
"requiredWhen": "BRIDGE_USE_TLS=true and generated certs are not used",
|
|
399
|
+
"description": "Path to TLS private key material."
|
|
400
|
+
},
|
|
401
|
+
{
|
|
402
|
+
"name": "BRIDGE_LOG_LEVEL",
|
|
403
|
+
"category": "diagnostics",
|
|
404
|
+
"defaultValue": "info",
|
|
405
|
+
"description": "Bridge log level: debug, info, warn, or error."
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
"name": "BRIDGE_LOG_MODEL_PAYLOADS",
|
|
409
|
+
"category": "diagnostics",
|
|
410
|
+
"defaultValue": "summary",
|
|
411
|
+
"description": "Controls local model payload logging; full payload logging is explicit opt-in."
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
"name": "BRIDGE_MAX_INTERCEPT_BODY_BYTES",
|
|
415
|
+
"category": "safety",
|
|
416
|
+
"defaultValue": "52428800",
|
|
417
|
+
"description": "Maximum buffered body size for typed intercept routes."
|
|
418
|
+
},
|
|
419
|
+
{
|
|
420
|
+
"name": "BRIDGE_MODELS_JSON",
|
|
421
|
+
"category": "model",
|
|
422
|
+
"defaultValue": "undefined",
|
|
423
|
+
"description": "JSON array of local model registrations with Cursor-facing and provider-facing IDs."
|
|
424
|
+
},
|
|
425
|
+
{
|
|
426
|
+
"name": "BRIDGE_PLUGIN_PATH",
|
|
427
|
+
"category": "plugins",
|
|
428
|
+
"defaultValue": "undefined",
|
|
429
|
+
"description": "Experimental local plugin module path."
|
|
430
|
+
},
|
|
431
|
+
{
|
|
432
|
+
"name": "BRIDGE_PORT",
|
|
433
|
+
"category": "core",
|
|
434
|
+
"defaultValue": "9443",
|
|
435
|
+
"description": "Bridge bind port."
|
|
436
|
+
},
|
|
437
|
+
{
|
|
438
|
+
"name": "BRIDGE_PUBLIC_ORIGIN",
|
|
439
|
+
"category": "desktop",
|
|
440
|
+
"defaultValue": "desktop mode: https://api2.cursor.sh; otherwise undefined",
|
|
441
|
+
"description": "Public origin advertised in rewritten server config responses."
|
|
442
|
+
},
|
|
443
|
+
{
|
|
444
|
+
"name": "BRIDGE_ROUTE_INVENTORY",
|
|
445
|
+
"category": "diagnostics",
|
|
446
|
+
"defaultValue": "desktop mode: true; otherwise false",
|
|
447
|
+
"description": "Enables redacted method/path/content-type/status/framing route inventory logs."
|
|
448
|
+
},
|
|
449
|
+
{
|
|
450
|
+
"name": "BRIDGE_TLS_HOSTNAMES",
|
|
451
|
+
"category": "tls",
|
|
452
|
+
"defaultValue": "desktop mode: api2.cursor.sh,api3.cursor.sh,agent.api5.cursor.sh,agentn.api5.cursor.sh,agentn.global.api5.cursor.sh,localhost,127.0.0.1,::1; otherwise localhost,127.0.0.1,::1",
|
|
453
|
+
"description": "Comma-separated hostnames/IPs for generated TLS certificate SANs."
|
|
454
|
+
},
|
|
455
|
+
{
|
|
456
|
+
"name": "BRIDGE_UNSAFE_ALLOW_NON_LOCALHOST",
|
|
457
|
+
"category": "safety",
|
|
458
|
+
"defaultValue": "false",
|
|
459
|
+
"description": "Required override before binding the bridge to anything other than localhost."
|
|
460
|
+
},
|
|
461
|
+
{
|
|
462
|
+
"name": "BRIDGE_UPSTREAM_REQUEST_TIMEOUT_MS",
|
|
463
|
+
"category": "reliability",
|
|
464
|
+
"defaultValue": "undefined",
|
|
465
|
+
"description": "Optional timeout for pass-through requests to Cursor upstream services."
|
|
466
|
+
},
|
|
467
|
+
{
|
|
468
|
+
"name": "BRIDGE_USE_TLS",
|
|
469
|
+
"category": "tls",
|
|
470
|
+
"defaultValue": "false",
|
|
471
|
+
"description": "Runs the bridge over HTTPS when enabled."
|
|
472
|
+
},
|
|
473
|
+
{
|
|
474
|
+
"name": "CURSOR_UPSTREAM_BASE_URL",
|
|
475
|
+
"category": "upstream",
|
|
476
|
+
"defaultValue": "desktop mode: https://api2.cursor.sh; otherwise undefined",
|
|
477
|
+
"description": "Logical Cursor upstream base URL for pass-through traffic."
|
|
478
|
+
},
|
|
479
|
+
{
|
|
480
|
+
"name": "CURSOR_UPSTREAM_CONNECT_HOST",
|
|
481
|
+
"category": "upstream",
|
|
482
|
+
"defaultValue": "undefined",
|
|
483
|
+
"description": "Optional physical upstream host/IP while preserving logical Host and TLS SNI."
|
|
484
|
+
},
|
|
485
|
+
{
|
|
486
|
+
"name": "CURSOR_UPSTREAM_CONNECT_PORT",
|
|
487
|
+
"category": "upstream",
|
|
488
|
+
"defaultValue": "undefined",
|
|
489
|
+
"description": "Optional physical upstream port paired with CURSOR_UPSTREAM_CONNECT_HOST."
|
|
490
|
+
},
|
|
491
|
+
{
|
|
492
|
+
"name": "MODEL_API_KEY",
|
|
493
|
+
"category": "model",
|
|
494
|
+
"defaultValue": "",
|
|
495
|
+
"description": "API key sent to the OpenAI-compatible local model backend."
|
|
496
|
+
},
|
|
497
|
+
{
|
|
498
|
+
"name": "MODEL_BASE_URL",
|
|
499
|
+
"category": "model",
|
|
500
|
+
"defaultValue": "http://localhost:8080/v1",
|
|
501
|
+
"description": "OpenAI-compatible local model endpoint."
|
|
502
|
+
},
|
|
503
|
+
{
|
|
504
|
+
"name": "MODEL_CONTEXT_TOKEN_LIMIT",
|
|
505
|
+
"category": "model",
|
|
506
|
+
"defaultValue": "128000",
|
|
507
|
+
"description": "Advertised local model context window."
|
|
508
|
+
},
|
|
509
|
+
{
|
|
510
|
+
"name": "MODEL_NAME",
|
|
511
|
+
"category": "model",
|
|
512
|
+
"defaultValue": "local-model",
|
|
513
|
+
"description": "Default Cursor-facing local model ID."
|
|
514
|
+
},
|
|
515
|
+
{
|
|
516
|
+
"name": "MODEL_PROVIDER_MODEL",
|
|
517
|
+
"category": "model",
|
|
518
|
+
"defaultValue": "MODEL_NAME",
|
|
519
|
+
"description": "Provider-facing model ID sent to the local backend when different from MODEL_NAME."
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"name": "MODEL_REQUEST_TIMEOUT_MS",
|
|
523
|
+
"category": "model",
|
|
524
|
+
"defaultValue": "undefined",
|
|
525
|
+
"description": "Optional request deadline for OpenAI-compatible local model backend calls."
|
|
526
|
+
}
|
|
527
|
+
]
|
|
528
|
+
},
|
|
529
|
+
"uncertaintyRegister": [
|
|
530
|
+
{
|
|
531
|
+
"path": "/agent.v1.AgentService/RunPoll",
|
|
532
|
+
"packageName": "agent.v1",
|
|
533
|
+
"service": "AgentService",
|
|
534
|
+
"method": "RunPoll",
|
|
535
|
+
"inputType": "AiserverV1_BidiPollRequest",
|
|
536
|
+
"outputType": "AiserverV1_BidiPollResponse",
|
|
537
|
+
"serverStreaming": true,
|
|
538
|
+
"policy": "pass-through",
|
|
539
|
+
"supportLevel": "observe-first",
|
|
540
|
+
"uncertainty": "Proto-visible alternate Agent transport; leave pass-through until real traffic proves request-id and poll framing."
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
"path": "/aiserver.v1.ChatService/StreamUnifiedChatWithToolsSSE",
|
|
544
|
+
"packageName": "aiserver.v1",
|
|
545
|
+
"service": "ChatService",
|
|
546
|
+
"method": "StreamUnifiedChatWithToolsSSE",
|
|
547
|
+
"inputType": "BidiRequestId",
|
|
548
|
+
"outputType": "StreamUnifiedChatResponseWithTools",
|
|
549
|
+
"serverStreaming": true,
|
|
550
|
+
"policy": "pass-through",
|
|
551
|
+
"supportLevel": "observe-first",
|
|
552
|
+
"uncertainty": "Proto-visible Chat SSE variant; leave pass-through until content type, request-id flow, and response shape are captured."
|
|
553
|
+
},
|
|
554
|
+
{
|
|
555
|
+
"path": "/aiserver.v1.ChatService/StreamUnifiedChatWithToolsPoll",
|
|
556
|
+
"packageName": "aiserver.v1",
|
|
557
|
+
"service": "ChatService",
|
|
558
|
+
"method": "StreamUnifiedChatWithToolsPoll",
|
|
559
|
+
"inputType": "BidiPollRequest",
|
|
560
|
+
"outputType": "BidiPollResponse",
|
|
561
|
+
"serverStreaming": true,
|
|
562
|
+
"policy": "pass-through",
|
|
563
|
+
"supportLevel": "observe-first",
|
|
564
|
+
"uncertainty": "Proto-visible Chat poll variant; leave pass-through until BidiPollRequest/BidiPollResponse framing is captured."
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"path": "/aiserver.v1.ChatService/StreamUnifiedChatWithToolsIdempotent",
|
|
568
|
+
"packageName": "aiserver.v1",
|
|
569
|
+
"service": "ChatService",
|
|
570
|
+
"method": "StreamUnifiedChatWithToolsIdempotent",
|
|
571
|
+
"inputType": "StreamUnifiedChatRequestWithToolsIdempotent",
|
|
572
|
+
"outputType": "StreamUnifiedChatResponseWithToolsIdempotent",
|
|
573
|
+
"serverStreaming": false,
|
|
574
|
+
"policy": "pass-through",
|
|
575
|
+
"supportLevel": "observe-first",
|
|
576
|
+
"uncertainty": "Proto-visible idempotent Chat route; leave pass-through until observed traffic proves it is needed."
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"path": "/aiserver.v1.ChatService/StreamUnifiedChatWithToolsIdempotentSSE",
|
|
580
|
+
"packageName": "aiserver.v1",
|
|
581
|
+
"service": "ChatService",
|
|
582
|
+
"method": "StreamUnifiedChatWithToolsIdempotentSSE",
|
|
583
|
+
"inputType": "BidiRequestId",
|
|
584
|
+
"outputType": "StreamUnifiedChatResponseWithToolsIdempotent",
|
|
585
|
+
"serverStreaming": true,
|
|
586
|
+
"policy": "pass-through",
|
|
587
|
+
"supportLevel": "observe-first",
|
|
588
|
+
"uncertainty": "Proto-visible idempotent Chat SSE route; leave pass-through until observed and decoded."
|
|
589
|
+
},
|
|
590
|
+
{
|
|
591
|
+
"path": "/aiserver.v1.ChatService/StreamUnifiedChatWithToolsIdempotentPoll",
|
|
592
|
+
"packageName": "aiserver.v1",
|
|
593
|
+
"service": "ChatService",
|
|
594
|
+
"method": "StreamUnifiedChatWithToolsIdempotentPoll",
|
|
595
|
+
"inputType": "BidiPollRequest",
|
|
596
|
+
"outputType": "BidiPollResponse",
|
|
597
|
+
"serverStreaming": true,
|
|
598
|
+
"policy": "pass-through",
|
|
599
|
+
"supportLevel": "observe-first",
|
|
600
|
+
"uncertainty": "Proto-visible idempotent Chat poll route; leave pass-through until observed and decoded."
|
|
601
|
+
},
|
|
602
|
+
{
|
|
603
|
+
"path": "desktop-route-set",
|
|
604
|
+
"policy": "pass-through",
|
|
605
|
+
"supportLevel": "observe-first",
|
|
606
|
+
"uncertainty": "Cursor desktop route set remains uncertain; use redacted route inventory before adding desktop-only interceptors."
|
|
607
|
+
}
|
|
608
|
+
]
|
|
609
|
+
}
|