@ganju/utils 0.0.1 → 0.0.3

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/README.md CHANGED
@@ -2,8 +2,6 @@
2
2
 
3
3
  The shared kernel imported by every app and package. Framework-agnostic TypeScript with no runtime dependency on a specific app.
4
4
 
5
- > **Published because [`@ganju/sdk`](https://www.npmjs.com/package/@ganju/sdk) depends on it, not because it has an audience of its own.** It is internal to [Ganju](https://ganju.ai) and changes without notice; nothing here is a stable public API. If you are writing a custom tool, install `@ganju/sdk`.
6
-
7
5
  ## What's in here
8
6
 
9
7
  | Area | Files |
@@ -1,6 +1,7 @@
1
1
  export declare const CLI_OAUTH_CLIENT_NAME = "Ganju CLI";
2
2
  export declare const CLI_OAUTH_REDIRECT_PATH = "/callback";
3
3
  export declare const CLI_OAUTH_REDIRECT_PORTS: number[];
4
+ export declare const CONTROL_PLANE_SCOPE = "ganju:manage";
4
5
  export declare const CLI_OAUTH_SCOPES: string[];
5
6
  export declare const CLI_TOKEN_REFRESH_SKEW_SECONDS = 60;
6
7
  export declare const CUSTOM_CODE_SDK_SPECIFIER = "./ganju-sdk.js";
@@ -1 +1 @@
1
- {"version":3,"file":"cliConstants.d.ts","sourceRoot":"","sources":["../src/cliConstants.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,qBAAqB,cAAc,CAAC;AACjD,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,wBAAwB,UAAiC,CAAC;AAIvE,eAAO,MAAM,gBAAgB,UAK5B,CAAC;AAIF,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAIjD,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAI1D,eAAO,MAAM,4BAA4B,QAAkB,CAAC;AAK5D,eAAO,MAAM,+BAA+B,EAAoB,aAAa,CAAC"}
1
+ {"version":3,"file":"cliConstants.d.ts","sourceRoot":"","sources":["../src/cliConstants.ts"],"names":[],"mappings":"AAqBA,eAAO,MAAM,qBAAqB,cAAc,CAAC;AACjD,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,wBAAwB,UAAiC,CAAC;AAOvE,eAAO,MAAM,mBAAmB,iBAAiB,CAAC;AAUlD,eAAO,MAAM,gBAAgB,UAM5B,CAAC;AAIF,eAAO,MAAM,8BAA8B,KAAK,CAAC;AAIjD,eAAO,MAAM,yBAAyB,mBAAmB,CAAC;AAI1D,eAAO,MAAM,4BAA4B,QAAkB,CAAC;AAK5D,eAAO,MAAM,+BAA+B,EAAoB,aAAa,CAAC"}
@@ -12,7 +12,7 @@
12
12
  // The rule for this file: nothing lands here unless the CLI reads it, and it
13
13
  // imports nothing.
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.CREDENTIAL_PROVIDER_CUSTOM_CODE = exports.CUSTOM_CODE_MAX_BUNDLE_BYTES = exports.CUSTOM_CODE_SDK_SPECIFIER = exports.CLI_TOKEN_REFRESH_SKEW_SECONDS = exports.CLI_OAUTH_SCOPES = exports.CLI_OAUTH_REDIRECT_PORTS = exports.CLI_OAUTH_REDIRECT_PATH = exports.CLI_OAUTH_CLIENT_NAME = void 0;
15
+ exports.CREDENTIAL_PROVIDER_CUSTOM_CODE = exports.CUSTOM_CODE_MAX_BUNDLE_BYTES = exports.CUSTOM_CODE_SDK_SPECIFIER = exports.CLI_TOKEN_REFRESH_SKEW_SECONDS = exports.CLI_OAUTH_SCOPES = exports.CONTROL_PLANE_SCOPE = exports.CLI_OAUTH_REDIRECT_PORTS = exports.CLI_OAUTH_REDIRECT_PATH = exports.CLI_OAUTH_CLIENT_NAME = void 0;
16
16
  // How `ganju login` identifies itself, and where it listens for the redirect.
17
17
  //
18
18
  // A fixed port would fail whenever something else already held it, so the CLI
@@ -24,13 +24,26 @@ exports.CREDENTIAL_PROVIDER_CUSTOM_CODE = exports.CUSTOM_CODE_MAX_BUNDLE_BYTES =
24
24
  exports.CLI_OAUTH_CLIENT_NAME = 'Ganju CLI';
25
25
  exports.CLI_OAUTH_REDIRECT_PATH = '/callback';
26
26
  exports.CLI_OAUTH_REDIRECT_PORTS = [8976, 8977, 8978, 8979, 8980];
27
+ // What the API requires before a bearer token may act on the control plane —
28
+ // publish code, read and rotate secrets, change billing. Lives here because the
29
+ // CLI is the client that asks for it; the API's own copy is the re-export in
30
+ // `constants.ts`, so the string the CLI requests and the string the middleware
31
+ // demands cannot drift apart.
32
+ exports.CONTROL_PLANE_SCOPE = 'ganju:manage';
27
33
  // `offline_access` is what mints the refresh token; without it a CLI session
28
34
  // would end an hour after login.
35
+ //
36
+ // An MCP client reads the discovery document to decide what to ask for, and
37
+ // that document does not list `ganju:manage` — so a token minted for someone's
38
+ // MCP server can reach that server and nothing else, while this one can deploy.
39
+ // The consent screen names the scope, which is the point: deploying code as
40
+ // someone is worth showing them.
29
41
  exports.CLI_OAUTH_SCOPES = [
30
42
  'openid',
31
43
  'profile',
32
44
  'email',
33
- 'offline_access'
45
+ 'offline_access',
46
+ exports.CONTROL_PLANE_SCOPE
34
47
  ];
35
48
  // Refresh this far before the access token actually expires, so a long command
36
49
  // can't have its token die mid-request.
@@ -539,6 +539,7 @@ export declare const constants: {
539
539
  OUTPUT_SCHEMA_NOT_OBJECT_MESSAGE: string;
540
540
  CUSTOM_CODE_BINDING_TOKEN: string;
541
541
  CUSTOM_CODE_BINDING_BROKER: string;
542
+ CUSTOM_CODE_BINDING_VERSION: string;
542
543
  CUSTOM_CODE_BROKER_ORIGIN: string;
543
544
  CUSTOM_CODE_BROKER_PATH_CONNECTION: string;
544
545
  CUSTOM_CODE_BROKER_PATH_SECRET: string;
@@ -559,6 +560,8 @@ export declare const constants: {
559
560
  CUSTOM_CODE_BROKER_SERVICE_ENV: string;
560
561
  CUSTOM_CODE_COMPATIBILITY_DATE: string;
561
562
  CUSTOM_CODE_SCRIPT_CPU_MS: number;
563
+ CUSTOM_CODE_SMOKE_TIMEOUT_MS: number;
564
+ CUSTOM_CODE_SMOKE_INTERVAL_MS: number;
562
565
  CUSTOM_CODE_MAX_LOGS: number;
563
566
  CUSTOM_CODE_MAX_LOG_LENGTH: number;
564
567
  CUSTOM_CODE_SEND_FILE_TARGET_GMAIL: "gmail";
@@ -605,6 +608,7 @@ export declare const constants: {
605
608
  OAUTH_SCOPES_SUPPORTED: string[];
606
609
  MCP_SCOPE_READ: string;
607
610
  ARTIFACT_SCOPE_PREFIX: string;
611
+ CONTROL_PLANE_SCOPE: string;
608
612
  CLI_OAUTH_CLIENT_NAME: string;
609
613
  CLI_OAUTH_REDIRECT_PATH: string;
610
614
  CLI_OAUTH_REDIRECT_PORTS: number[];
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"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"}
package/dist/constants.js CHANGED
@@ -1228,6 +1228,15 @@ const CUSTOM_CODE_COMPATIBILITY_DATE = '2025-11-17';
1228
1228
  // tighter than our own workers' 30s — this is the technical cap that bounds
1229
1229
  // what one adversarial call can cost us, so an infinite loop in a customer's
1230
1230
  // tool is billed as five seconds rather than as whatever it wanted.
1231
+ // How long publish waits for the edition it just uploaded to be the one the
1232
+ // dispatcher answers with, and how often it asks.
1233
+ //
1234
+ // Bounded rather than open-ended because this runs inside the publish request:
1235
+ // past this, publishing would be a request nobody waits out. Exceeding it is
1236
+ // reported as "try again" rather than published, which is the safe direction —
1237
+ // the alternative is advertising tools backed by a script that is not there yet.
1238
+ const CUSTOM_CODE_SMOKE_TIMEOUT_MS = 20_000;
1239
+ const CUSTOM_CODE_SMOKE_INTERVAL_MS = 1_000;
1231
1240
  const CUSTOM_CODE_SCRIPT_CPU_MS = 5_000;
1232
1241
  // The ctx.log() caps also live in ./sdkConstants — the buffer that enforces them
1233
1242
  // runs inside the isolate.
@@ -1375,6 +1384,20 @@ const OAUTH_SCOPES_SUPPORTED = ['openid', 'profile', 'email', 'offline_access'];
1375
1384
  // TODO: Net: mcp:read is a cosmetic claim on bot tokens; artifact: is a code path that can't fire. Neither affects security today. They become real only if you build the per-server confinement feature (which would make artifact:<slug> issued + enforced). This is more for OIDC.
1376
1385
  const MCP_SCOPE_READ = 'mcp:read';
1377
1386
  const ARTIFACT_SCOPE_PREFIX = 'artifact:';
1387
+ // `CONTROL_PLANE_SCOPE` (defined in ./cliConstants, re-exported below) is what
1388
+ // a bearer token needs before it may act as the user on the control plane —
1389
+ // publish code, read and rotate secrets, change billing.
1390
+ //
1391
+ // Access tokens are minted for MCP clients too: a customer who connects Claude
1392
+ // Desktop to one of their MCP servers hands it a token for their own account,
1393
+ // and `/oauth2/userinfo` will happily confirm that it is theirs. Without a scope
1394
+ // that separates the two, "this token belongs to the user" would be the same
1395
+ // sentence as "this token may deploy code as the user", and connecting an MCP
1396
+ // client would silently be an act of full delegation.
1397
+ //
1398
+ // Deliberately outside OAUTH_SCOPES_SUPPORTED: it is allowlisted on the provider
1399
+ // so the CLI can request it, and left out of discovery, which is what an MCP
1400
+ // client reads to decide what to ask for.
1378
1401
  // The CLI signs in as a public OAuth client through a loopback redirect
1379
1402
  // (RFC 8252) — the flow `wrangler`, `gh` and `vercel` all use. It registers
1380
1403
  // itself through RFC 7591 dynamic registration on first login rather than
@@ -2136,6 +2159,7 @@ exports.constants = {
2136
2159
  OUTPUT_SCHEMA_NOT_OBJECT_MESSAGE,
2137
2160
  CUSTOM_CODE_BINDING_TOKEN: sdkConstants_1.CUSTOM_CODE_BINDING_TOKEN,
2138
2161
  CUSTOM_CODE_BINDING_BROKER: sdkConstants_1.CUSTOM_CODE_BINDING_BROKER,
2162
+ CUSTOM_CODE_BINDING_VERSION: sdkConstants_1.CUSTOM_CODE_BINDING_VERSION,
2139
2163
  CUSTOM_CODE_BROKER_ORIGIN: sdkConstants_1.CUSTOM_CODE_BROKER_ORIGIN,
2140
2164
  CUSTOM_CODE_BROKER_PATH_CONNECTION: sdkConstants_1.CUSTOM_CODE_BROKER_PATH_CONNECTION,
2141
2165
  CUSTOM_CODE_BROKER_PATH_SECRET: sdkConstants_1.CUSTOM_CODE_BROKER_PATH_SECRET,
@@ -2156,6 +2180,8 @@ exports.constants = {
2156
2180
  CUSTOM_CODE_BROKER_SERVICE_ENV,
2157
2181
  CUSTOM_CODE_COMPATIBILITY_DATE,
2158
2182
  CUSTOM_CODE_SCRIPT_CPU_MS,
2183
+ CUSTOM_CODE_SMOKE_TIMEOUT_MS,
2184
+ CUSTOM_CODE_SMOKE_INTERVAL_MS,
2159
2185
  CUSTOM_CODE_MAX_LOGS: sdkConstants_1.CUSTOM_CODE_MAX_LOGS,
2160
2186
  CUSTOM_CODE_MAX_LOG_LENGTH: sdkConstants_1.CUSTOM_CODE_MAX_LOG_LENGTH,
2161
2187
  CUSTOM_CODE_SEND_FILE_TARGET_GMAIL,
@@ -2202,6 +2228,7 @@ exports.constants = {
2202
2228
  OAUTH_SCOPES_SUPPORTED,
2203
2229
  MCP_SCOPE_READ,
2204
2230
  ARTIFACT_SCOPE_PREFIX,
2231
+ CONTROL_PLANE_SCOPE: cliConstants_1.CONTROL_PLANE_SCOPE,
2205
2232
  CLI_OAUTH_CLIENT_NAME: cliConstants_1.CLI_OAUTH_CLIENT_NAME,
2206
2233
  CLI_OAUTH_REDIRECT_PATH: cliConstants_1.CLI_OAUTH_REDIRECT_PATH,
2207
2234
  CLI_OAUTH_REDIRECT_PORTS: cliConstants_1.CLI_OAUTH_REDIRECT_PORTS,
package/dist/index.d.ts CHANGED
@@ -2226,6 +2226,7 @@ export declare const utils: {
2226
2226
  OUTPUT_SCHEMA_NOT_OBJECT_MESSAGE: string;
2227
2227
  CUSTOM_CODE_BINDING_TOKEN: string;
2228
2228
  CUSTOM_CODE_BINDING_BROKER: string;
2229
+ CUSTOM_CODE_BINDING_VERSION: string;
2229
2230
  CUSTOM_CODE_BROKER_ORIGIN: string;
2230
2231
  CUSTOM_CODE_BROKER_PATH_CONNECTION: string;
2231
2232
  CUSTOM_CODE_BROKER_PATH_SECRET: string;
@@ -2246,6 +2247,8 @@ export declare const utils: {
2246
2247
  CUSTOM_CODE_BROKER_SERVICE_ENV: string;
2247
2248
  CUSTOM_CODE_COMPATIBILITY_DATE: string;
2248
2249
  CUSTOM_CODE_SCRIPT_CPU_MS: number;
2250
+ CUSTOM_CODE_SMOKE_TIMEOUT_MS: number;
2251
+ CUSTOM_CODE_SMOKE_INTERVAL_MS: number;
2249
2252
  CUSTOM_CODE_MAX_LOGS: number;
2250
2253
  CUSTOM_CODE_MAX_LOG_LENGTH: number;
2251
2254
  CUSTOM_CODE_SEND_FILE_TARGET_GMAIL: "gmail";
@@ -2292,6 +2295,7 @@ export declare const utils: {
2292
2295
  OAUTH_SCOPES_SUPPORTED: string[];
2293
2296
  MCP_SCOPE_READ: string;
2294
2297
  ARTIFACT_SCOPE_PREFIX: string;
2298
+ CONTROL_PLANE_SCOPE: string;
2295
2299
  CLI_OAUTH_CLIENT_NAME: string;
2296
2300
  CLI_OAUTH_REDIRECT_PATH: string;
2297
2301
  CLI_OAUTH_REDIRECT_PORTS: number[];
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAlGhB,CAAC;;;;;;;;;;;;;;;;;;;;;;;kBAjHkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA0DF,CAAC;oBAEd,CAAC;;;;aA0BkB,CAAC;mBAA8B,CAAC;WACvC,CAAC;gBACf,CAAC;gBAA4B,CAAA;;;mBAmBK,CAAC;oBACtC,CAAC;;;;;;;;;;;;;;;kBA1DmB,CAAC;;;;;;;sBAqCR,CAAC;;;;;;;;;CAuOf,CAAC;AAEF,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,OAAO,EACP,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,kBAAkB,EAClB,mBAAmB,EACnB,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACX,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACzB,MAAM,UAAU,CAAC;AAElB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAyCvD,OAAO,KAAK,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EAClC,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACpB,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC/B,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,gCAAgC,EACjC,MAAM,eAAe,CAAC;AACvB,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EAClC,MAAM,gBAAgB,CAAC;AAKxB,OAAO,EACL,UAAU,EAGX,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAQ9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAW3D,OAAO,KAAK,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC/E,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACxB,MAAM,cAAc,CAAC;AAgBtB,OAAO,KAAK,EACV,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,OAAO,EACR,MAAM,eAAe,CAAC;AAiBvB,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAI1E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAErD,OAAO,KAAK,EACV,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACxB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAM1E,OAAO,KAAK,EACV,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EACnB,MAAM,mBAAmB,CAAC;AAS3B,OAAO,KAAK,EAAE,MAAM,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC1E,OAAO,EAEL,wBAAwB,EAIzB,MAAM,SAAS,CAAC;AACjB,OAAO,KAAK,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAoB,MAAM,kBAAkB,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,eAAO,MAAM,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAlGhB,CAAC;;;;;;;;;;;;;;;;;;;;;;;kBAjHkB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mBA0DF,CAAC;oBAEd,CAAC;;;;aA0BkB,CAAC;mBAA8B,CAAC;WACvC,CAAC;gBACf,CAAC;gBAA4B,CAAA;;;mBAmBK,CAAC;oBACtC,CAAC;;;;;;;;;;;;;;;kBA1DmB,CAAC;;;;;;;sBAqCR,CAAC;;;;;;;;;CAuOf,CAAC;AAEF,YAAY,EACV,iBAAiB,EACjB,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,qBAAqB,EACrB,YAAY,EACZ,OAAO,EACP,mBAAmB,EACnB,UAAU,EACV,eAAe,EACf,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,8BAA8B,EAC9B,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,kBAAkB,EAClB,mBAAmB,EACnB,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,EACpB,iCAAiC,EACjC,SAAS,EACT,SAAS,EACT,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,MAAM,EACN,kBAAkB,EAClB,YAAY,EACZ,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,kBAAkB,EAClB,sBAAsB,EACtB,0BAA0B,EAC1B,wBAAwB,EACxB,iBAAiB,EACjB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACX,CAAC"}
@@ -9,6 +9,7 @@ export declare const CUSTOM_CODE_BROKER_PATH_RESOURCES_LIST = "/resources/list";
9
9
  export declare const CUSTOM_CODE_BROKER_PATH_RESOURCES_CREATE = "/resources/create";
10
10
  export declare const CUSTOM_CODE_BROKER_PATH_RESOURCES_DELETE = "/resources/delete";
11
11
  export declare const CUSTOM_CODE_BROKER_PATH_SEND_FILE = "/send-file";
12
+ export declare const CUSTOM_CODE_BINDING_VERSION = "GANJU_SCRIPT_VERSION";
12
13
  export declare const CUSTOM_CODE_HEALTH_TOOL = "__ganju_health";
13
14
  export declare const CUSTOM_CODE_MAX_LOGS = 50;
14
15
  export declare const CUSTOM_CODE_MAX_LOG_LENGTH = 2000;
@@ -1 +1 @@
1
- {"version":3,"file":"sdkConstants.d.ts","sourceRoot":"","sources":["../src/sdkConstants.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAC5D,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AAKzD,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AACzE,eAAO,MAAM,kCAAkC,gBAAgB,CAAC;AAChE,eAAO,MAAM,8BAA8B,YAAY,CAAC;AACxD,eAAO,MAAM,wCAAwC,sBAAsB,CAAC;AAC5E,eAAO,MAAM,sCAAsC,oBAAoB,CAAC;AACxE,eAAO,MAAM,sCAAsC,oBAAoB,CAAC;AACxE,eAAO,MAAM,wCAAwC,sBAAsB,CAAC;AAC5E,eAAO,MAAM,wCAAwC,sBAAsB,CAAC;AAC5E,eAAO,MAAM,iCAAiC,eAAe,CAAC;AAO9D,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAKxD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,0BAA0B,OAAQ,CAAC"}
1
+ {"version":3,"file":"sdkConstants.d.ts","sourceRoot":"","sources":["../src/sdkConstants.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,yBAAyB,qBAAqB,CAAC;AAC5D,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AAKzD,eAAO,MAAM,yBAAyB,kCAAkC,CAAC;AACzE,eAAO,MAAM,kCAAkC,gBAAgB,CAAC;AAChE,eAAO,MAAM,8BAA8B,YAAY,CAAC;AACxD,eAAO,MAAM,wCAAwC,sBAAsB,CAAC;AAC5E,eAAO,MAAM,sCAAsC,oBAAoB,CAAC;AACxE,eAAO,MAAM,sCAAsC,oBAAoB,CAAC;AACxE,eAAO,MAAM,wCAAwC,sBAAsB,CAAC;AAC5E,eAAO,MAAM,wCAAwC,sBAAsB,CAAC;AAC5E,eAAO,MAAM,iCAAiC,eAAe,CAAC;AAY9D,eAAO,MAAM,2BAA2B,yBAAyB,CAAC;AAOlE,eAAO,MAAM,uBAAuB,mBAAmB,CAAC;AAKxD,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,0BAA0B,OAAQ,CAAC"}
@@ -11,7 +11,7 @@
11
11
  // The rule for this file: nothing lands here unless the SDK reads it at runtime,
12
12
  // and it imports nothing.
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.CUSTOM_CODE_MAX_LOG_LENGTH = exports.CUSTOM_CODE_MAX_LOGS = exports.CUSTOM_CODE_HEALTH_TOOL = exports.CUSTOM_CODE_BROKER_PATH_SEND_FILE = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_DELETE = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_CREATE = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_LIST = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_READ = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_SEARCH = exports.CUSTOM_CODE_BROKER_PATH_SECRET = exports.CUSTOM_CODE_BROKER_PATH_CONNECTION = exports.CUSTOM_CODE_BROKER_ORIGIN = exports.CUSTOM_CODE_BINDING_BROKER = exports.CUSTOM_CODE_BINDING_TOKEN = void 0;
14
+ exports.CUSTOM_CODE_MAX_LOG_LENGTH = exports.CUSTOM_CODE_MAX_LOGS = exports.CUSTOM_CODE_HEALTH_TOOL = exports.CUSTOM_CODE_BINDING_VERSION = exports.CUSTOM_CODE_BROKER_PATH_SEND_FILE = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_DELETE = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_CREATE = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_LIST = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_READ = exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_SEARCH = exports.CUSTOM_CODE_BROKER_PATH_SECRET = exports.CUSTOM_CODE_BROKER_PATH_CONNECTION = exports.CUSTOM_CODE_BROKER_ORIGIN = exports.CUSTOM_CODE_BINDING_BROKER = exports.CUSTOM_CODE_BINDING_TOKEN = void 0;
15
15
  // Bindings injected into every user script at upload time. The token is a
16
16
  // secret_text binding rotated on each publish; the broker is a service binding.
17
17
  // Names are part of the SDK's contract with the script, so they can't be
@@ -30,6 +30,17 @@ exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_LIST = '/resources/list';
30
30
  exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_CREATE = '/resources/create';
31
31
  exports.CUSTOM_CODE_BROKER_PATH_RESOURCES_DELETE = '/resources/delete';
32
32
  exports.CUSTOM_CODE_BROKER_PATH_SEND_FILE = '/send-file';
33
+ // Injected at upload time and echoed back by the health probe below. Uploading a
34
+ // script into the dispatch namespace is not read-your-writes: dispatching to the
35
+ // name immediately afterwards can still reach the previous edition. Tool names
36
+ // alone cannot tell the two apart when a deploy does not rename anything, so the
37
+ // script carries the digest of the bytes it was uploaded from and the publish
38
+ // pipeline waits until the edition answering is the one it just wrote.
39
+ //
40
+ // The bytes rather than the version id: a draft is re-uploaded in place, so its
41
+ // id is the same string across every edit and could never separate this upload
42
+ // from the one before it.
43
+ exports.CUSTOM_CODE_BINDING_VERSION = 'GANJU_SCRIPT_VERSION';
33
44
  // The reserved tool name the publish pipeline calls against a freshly uploaded
34
45
  // script to ask which tools it actually exports — which is what turns "the
35
46
  // manifest declares lookup-order but the code exports lookupOrder" from a
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ganju/utils",
3
- "version": "0.0.1",
3
+ "version": "0.0.3",
4
4
  "description": "Shared constants, schemas and helpers for Ganju",
5
5
  "license": "Apache-2.0",
6
6
  "author": "MontoyaAndres <andresmontoyafcb@gmail.com>",
@@ -23,13 +23,27 @@ export const CLI_OAUTH_CLIENT_NAME = 'Ganju CLI';
23
23
  export const CLI_OAUTH_REDIRECT_PATH = '/callback';
24
24
  export const CLI_OAUTH_REDIRECT_PORTS = [8976, 8977, 8978, 8979, 8980];
25
25
 
26
+ // What the API requires before a bearer token may act on the control plane —
27
+ // publish code, read and rotate secrets, change billing. Lives here because the
28
+ // CLI is the client that asks for it; the API's own copy is the re-export in
29
+ // `constants.ts`, so the string the CLI requests and the string the middleware
30
+ // demands cannot drift apart.
31
+ export const CONTROL_PLANE_SCOPE = 'ganju:manage';
32
+
26
33
  // `offline_access` is what mints the refresh token; without it a CLI session
27
34
  // would end an hour after login.
35
+ //
36
+ // An MCP client reads the discovery document to decide what to ask for, and
37
+ // that document does not list `ganju:manage` — so a token minted for someone's
38
+ // MCP server can reach that server and nothing else, while this one can deploy.
39
+ // The consent screen names the scope, which is the point: deploying code as
40
+ // someone is worth showing them.
28
41
  export const CLI_OAUTH_SCOPES = [
29
42
  'openid',
30
43
  'profile',
31
44
  'email',
32
- 'offline_access'
45
+ 'offline_access',
46
+ CONTROL_PLANE_SCOPE
33
47
  ];
34
48
 
35
49
  // Refresh this far before the access token actually expires, so a long command
package/src/constants.ts CHANGED
@@ -3,6 +3,7 @@ import {
3
3
  CLI_OAUTH_REDIRECT_PATH,
4
4
  CLI_OAUTH_REDIRECT_PORTS,
5
5
  CLI_OAUTH_SCOPES,
6
+ CONTROL_PLANE_SCOPE,
6
7
  CLI_TOKEN_REFRESH_SKEW_SECONDS,
7
8
  CUSTOM_CODE_SDK_SPECIFIER,
8
9
  CUSTOM_CODE_MAX_BUNDLE_BYTES,
@@ -11,6 +12,7 @@ import {
11
12
  import {
12
13
  CUSTOM_CODE_BINDING_TOKEN,
13
14
  CUSTOM_CODE_BINDING_BROKER,
15
+ CUSTOM_CODE_BINDING_VERSION,
14
16
  CUSTOM_CODE_BROKER_ORIGIN,
15
17
  CUSTOM_CODE_BROKER_PATH_CONNECTION,
16
18
  CUSTOM_CODE_BROKER_PATH_SECRET,
@@ -1451,6 +1453,16 @@ const CUSTOM_CODE_COMPATIBILITY_DATE = '2025-11-17';
1451
1453
  // tighter than our own workers' 30s — this is the technical cap that bounds
1452
1454
  // what one adversarial call can cost us, so an infinite loop in a customer's
1453
1455
  // tool is billed as five seconds rather than as whatever it wanted.
1456
+ // How long publish waits for the edition it just uploaded to be the one the
1457
+ // dispatcher answers with, and how often it asks.
1458
+ //
1459
+ // Bounded rather than open-ended because this runs inside the publish request:
1460
+ // past this, publishing would be a request nobody waits out. Exceeding it is
1461
+ // reported as "try again" rather than published, which is the safe direction —
1462
+ // the alternative is advertising tools backed by a script that is not there yet.
1463
+ const CUSTOM_CODE_SMOKE_TIMEOUT_MS = 20_000;
1464
+ const CUSTOM_CODE_SMOKE_INTERVAL_MS = 1_000;
1465
+
1454
1466
  const CUSTOM_CODE_SCRIPT_CPU_MS = 5_000;
1455
1467
 
1456
1468
  // The ctx.log() caps also live in ./sdkConstants — the buffer that enforces them
@@ -1623,6 +1635,21 @@ const OAUTH_SCOPES_SUPPORTED = ['openid', 'profile', 'email', 'offline_access'];
1623
1635
  const MCP_SCOPE_READ = 'mcp:read';
1624
1636
  const ARTIFACT_SCOPE_PREFIX = 'artifact:';
1625
1637
 
1638
+ // `CONTROL_PLANE_SCOPE` (defined in ./cliConstants, re-exported below) is what
1639
+ // a bearer token needs before it may act as the user on the control plane —
1640
+ // publish code, read and rotate secrets, change billing.
1641
+ //
1642
+ // Access tokens are minted for MCP clients too: a customer who connects Claude
1643
+ // Desktop to one of their MCP servers hands it a token for their own account,
1644
+ // and `/oauth2/userinfo` will happily confirm that it is theirs. Without a scope
1645
+ // that separates the two, "this token belongs to the user" would be the same
1646
+ // sentence as "this token may deploy code as the user", and connecting an MCP
1647
+ // client would silently be an act of full delegation.
1648
+ //
1649
+ // Deliberately outside OAUTH_SCOPES_SUPPORTED: it is allowlisted on the provider
1650
+ // so the CLI can request it, and left out of discovery, which is what an MCP
1651
+ // client reads to decide what to ask for.
1652
+
1626
1653
  // The CLI signs in as a public OAuth client through a loopback redirect
1627
1654
  // (RFC 8252) — the flow `wrangler`, `gh` and `vercel` all use. It registers
1628
1655
  // itself through RFC 7591 dynamic registration on first login rather than
@@ -2458,6 +2485,7 @@ export const constants = {
2458
2485
  OUTPUT_SCHEMA_NOT_OBJECT_MESSAGE,
2459
2486
  CUSTOM_CODE_BINDING_TOKEN,
2460
2487
  CUSTOM_CODE_BINDING_BROKER,
2488
+ CUSTOM_CODE_BINDING_VERSION,
2461
2489
  CUSTOM_CODE_BROKER_ORIGIN,
2462
2490
  CUSTOM_CODE_BROKER_PATH_CONNECTION,
2463
2491
  CUSTOM_CODE_BROKER_PATH_SECRET,
@@ -2478,6 +2506,8 @@ export const constants = {
2478
2506
  CUSTOM_CODE_BROKER_SERVICE_ENV,
2479
2507
  CUSTOM_CODE_COMPATIBILITY_DATE,
2480
2508
  CUSTOM_CODE_SCRIPT_CPU_MS,
2509
+ CUSTOM_CODE_SMOKE_TIMEOUT_MS,
2510
+ CUSTOM_CODE_SMOKE_INTERVAL_MS,
2481
2511
  CUSTOM_CODE_MAX_LOGS,
2482
2512
  CUSTOM_CODE_MAX_LOG_LENGTH,
2483
2513
  CUSTOM_CODE_SEND_FILE_TARGET_GMAIL,
@@ -2524,6 +2554,7 @@ export const constants = {
2524
2554
  OAUTH_SCOPES_SUPPORTED,
2525
2555
  MCP_SCOPE_READ,
2526
2556
  ARTIFACT_SCOPE_PREFIX,
2557
+ CONTROL_PLANE_SCOPE,
2527
2558
  CLI_OAUTH_CLIENT_NAME,
2528
2559
  CLI_OAUTH_REDIRECT_PATH,
2529
2560
  CLI_OAUTH_REDIRECT_PORTS,
@@ -30,6 +30,18 @@ export const CUSTOM_CODE_BROKER_PATH_RESOURCES_CREATE = '/resources/create';
30
30
  export const CUSTOM_CODE_BROKER_PATH_RESOURCES_DELETE = '/resources/delete';
31
31
  export const CUSTOM_CODE_BROKER_PATH_SEND_FILE = '/send-file';
32
32
 
33
+ // Injected at upload time and echoed back by the health probe below. Uploading a
34
+ // script into the dispatch namespace is not read-your-writes: dispatching to the
35
+ // name immediately afterwards can still reach the previous edition. Tool names
36
+ // alone cannot tell the two apart when a deploy does not rename anything, so the
37
+ // script carries the digest of the bytes it was uploaded from and the publish
38
+ // pipeline waits until the edition answering is the one it just wrote.
39
+ //
40
+ // The bytes rather than the version id: a draft is re-uploaded in place, so its
41
+ // id is the same string across every edit and could never separate this upload
42
+ // from the one before it.
43
+ export const CUSTOM_CODE_BINDING_VERSION = 'GANJU_SCRIPT_VERSION';
44
+
33
45
  // The reserved tool name the publish pipeline calls against a freshly uploaded
34
46
  // script to ask which tools it actually exports — which is what turns "the
35
47
  // manifest declares lookup-order but the code exports lookupOrder" from a