@cursor/july 0.1.53 → 0.1.54

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/AGENTS.md CHANGED
@@ -16,6 +16,16 @@ HTTP/2 client corrupts local harness
16
16
  tool-result streams (`NGHTTP2_FRAME_SIZE_ERROR`), which makes every
17
17
  built-in read/grep fail and sends models into retry loops.
18
18
 
19
+ ## Bump `@cursor/july` with every source change
20
+
21
+ Any PR that changes this package's **source** (`src/`, `playground/`,
22
+ CLI, shipped `skills/` / `templates/` — runtime behavior that goes out
23
+ in `@cursor/july`) **must bump** `version` in `package.json` in the
24
+ **same PR**. On 0.x, bump the patch (`0.1.N` → `0.1.N+1`). Do not
25
+ publish from the PR; merging the bump is what lets the `july-release`
26
+ pipeline cut. Docs-only, tests-only, and edits to this file do not
27
+ need a bump.
28
+
19
29
  ## Skills
20
30
 
21
31
  Before scaffolding, wiring channels, writing evals, or deploying, **read the
@@ -306,6 +316,8 @@ Fixtures still work for offline replay: `POST` a saved payload with an
306
316
 
307
317
  ## Do not
308
318
 
319
+ - Land source changes without bumping `version` in `package.json` in the
320
+ same PR (see **Bump `@cursor/july` with every source change** above).
309
321
  - Proactively add or update documentation (`docs/`, READMEs, this file) as
310
322
  part of a code change. Docs are written intentionally, on explicit request
311
323
  only — never as a side effect of a feature or fix. If a change makes docs
@@ -9,9 +9,10 @@
9
9
  */
10
10
  import type { SlackManifestOptions } from "./types.js";
11
11
  /**
12
- * Where Slack points users who open a Cursor-provisioned app's settings
13
- * page. Manifest builders know neither the team slug nor the deployment
14
- * id, so this is the dashboard tab root rather than a per-agent deep link.
12
+ * Dashboard tab root: Slack's app-settings banner, and the only OAuth
13
+ * redirect URI we register. AAA request-approval (`oauth_authorize_url`)
14
+ * 400s with redirect_uri mismatch unless a URI is registered. This is
15
+ * not an install callback. `apps.managedInstall` still installs.
15
16
  */
16
17
  export declare const SLACK_EXTERNAL_APP_MANAGEMENT_URL = "https://cursor.com/dashboard/deployed-agents";
17
18
  export interface SlackAppManifest {
@@ -41,6 +42,7 @@ export interface SlackAppManifest {
41
42
  scopes: {
42
43
  bot: string[];
43
44
  };
45
+ redirect_urls?: string[];
44
46
  };
45
47
  settings: {
46
48
  event_subscriptions: {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,iDACE,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,OAAO,CAAC;SACxB,CAAC;QACF,cAAc,CAAC,EAAE;YACf,qBAAqB,EAAE,MAAM,CAAC;YAC9B,iBAAiB,EAAE,KAAK,CAAC;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAC9D,CAAC;QACF,QAAQ,CAAC,EAAE;YACT,gBAAgB,EAAE,OAAO,CAAC;YAC1B,oBAAoB,EAAE,OAAO,CAAC;YAC9B,8BAA8B,EAAE,OAAO,CAAC;SACzC,CAAC;KACH,CAAC;IACF,YAAY,EAAE;QACZ,MAAM,EAAE;YACN,GAAG,EAAE,MAAM,EAAE,CAAC;SACf,CAAC;KACH,CAAC;IACF,QAAQ,EAAE;QACR,mBAAmB,EAAE;YACnB,UAAU,EAAE,MAAM,EAAE,CAAC;SACtB,CAAC;QACF,aAAa,EAAE;YACb,UAAU,EAAE,OAAO,CAAC;SACrB,CAAC;QACF,kBAAkB,EAAE,OAAO,CAAC;QAC5B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,sBAAsB,EAAE,OAAO,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC;QACxB,oBAAoB,CAAC,EAAE;YACrB,8BAA8B,EAAE,OAAO,CAAC;YACxC,2BAA2B,EAAE,MAAM,CAAC;SACrC,CAAC;KACH,CAAC;CACH;AAwDD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,GAC5B,gBAAgB,CA+ElB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,GACzC;IACD,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAKA;AAED,kDAAkD;AAClD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE;IAAE,GAAG,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,EACvD,GAAG,GAAE,KAAK,GAAG,MAAM,GAAG,MAAe,GACpC,aAAa,CAAC;IACf,IAAI,EAAE,mBAAmB,GAAG,oBAAoB,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAkBD"}
1
+ {"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/channels/slack/manifest.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAEvD;;;;;GAKG;AACH,eAAO,MAAM,iCAAiC,iDACE,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,mBAAmB,EAAE;QACnB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;IACF,QAAQ,EAAE;QACR,QAAQ,EAAE;YACR,YAAY,EAAE,MAAM,CAAC;YACrB,aAAa,EAAE,OAAO,CAAC;SACxB,CAAC;QACF,cAAc,CAAC,EAAE;YACf,qBAAqB,EAAE,MAAM,CAAC;YAC9B,iBAAiB,EAAE,KAAK,CAAC;gBAAE,KAAK,EAAE,MAAM,CAAC;gBAAC,OAAO,EAAE,MAAM,CAAA;aAAE,CAAC,CAAC;SAC9D,CAAC;QACF,QAAQ,CAAC,EAAE;YACT,gBAAgB,EAAE,OAAO,CAAC;YAC1B,oBAAoB,EAAE,OAAO,CAAC;YAC9B,8BAA8B,EAAE,OAAO,CAAC;SACzC,CAAC;KACH,CAAC;IACF,YAAY,EAAE;QACZ,MAAM,EAAE;YACN,GAAG,EAAE,MAAM,EAAE,CAAC;SACf,CAAC;QACF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,QAAQ,EAAE;QACR,mBAAmB,EAAE;YACnB,UAAU,EAAE,MAAM,EAAE,CAAC;SACtB,CAAC;QACF,aAAa,EAAE;YACb,UAAU,EAAE,OAAO,CAAC;SACrB,CAAC;QACF,kBAAkB,EAAE,OAAO,CAAC;QAC5B,mBAAmB,EAAE,OAAO,CAAC;QAC7B,sBAAsB,EAAE,OAAO,CAAC;QAChC,cAAc,EAAE,OAAO,CAAC;QACxB,oBAAoB,CAAC,EAAE;YACrB,8BAA8B,EAAE,OAAO,CAAC;YACxC,2BAA2B,EAAE,MAAM,CAAC;SACrC,CAAC;KACH,CAAC;CACH;AAwDD;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,oBAAoB,GAC5B,gBAAgB,CAmFlB;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,IAAI,CAAC,oBAAoB,EAAE,KAAK,CAAC,GACzC;IACD,GAAG,EAAE,gBAAgB,CAAC;IACtB,IAAI,EAAE,gBAAgB,CAAC;CACxB,CAKA;AAED,kDAAkD;AAClD,wBAAgB,wBAAwB,CACtC,IAAI,EAAE;IAAE,GAAG,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,EACvD,GAAG,GAAE,KAAK,GAAG,MAAM,GAAG,MAAe,GACpC,aAAa,CAAC;IACf,IAAI,EAAE,mBAAmB,GAAG,oBAAoB,CAAC;IACjD,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC,CAkBD"}
@@ -8,9 +8,10 @@
8
8
  * backend cannot import this published package); keep the twins in lockstep.
9
9
  */
10
10
  /**
11
- * Where Slack points users who open a Cursor-provisioned app's settings
12
- * page. Manifest builders know neither the team slug nor the deployment
13
- * id, so this is the dashboard tab root rather than a per-agent deep link.
11
+ * Dashboard tab root: Slack's app-settings banner, and the only OAuth
12
+ * redirect URI we register. AAA request-approval (`oauth_authorize_url`)
13
+ * 400s with redirect_uri mismatch unless a URI is registered. This is
14
+ * not an install callback. `apps.managedInstall` still installs.
14
15
  */
15
16
  export const SLACK_EXTERNAL_APP_MANAGEMENT_URL = "https://cursor.com/dashboard/deployed-agents";
16
17
  const BOT_SCOPES = [
@@ -108,6 +109,9 @@ export function buildSlackManifest(options) {
108
109
  scopes: {
109
110
  bot: botScopes,
110
111
  },
112
+ redirect_urls: options.managedByCursor === false
113
+ ? undefined
114
+ : [SLACK_EXTERNAL_APP_MANAGEMENT_URL],
111
115
  },
112
116
  settings: Object.assign({ event_subscriptions: {
113
117
  bot_events: botEvents,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cursor/july",
3
- "version": "0.1.53",
3
+ "version": "0.1.54",
4
4
  "description": "(early alpha) Filesystem-first framework for defining Cursor agents as markdown and TypeScript and serving them over channels with the Cursor SDK.",
5
5
  "license": "SEE LICENSE IN LICENSE.md",
6
6
  "repository": {
@@ -11,9 +11,10 @@
11
11
  import type { SlackManifestOptions } from "./types.js";
12
12
 
13
13
  /**
14
- * Where Slack points users who open a Cursor-provisioned app's settings
15
- * page. Manifest builders know neither the team slug nor the deployment
16
- * id, so this is the dashboard tab root rather than a per-agent deep link.
14
+ * Dashboard tab root: Slack's app-settings banner, and the only OAuth
15
+ * redirect URI we register. AAA request-approval (`oauth_authorize_url`)
16
+ * 400s with redirect_uri mismatch unless a URI is registered. This is
17
+ * not an install callback. `apps.managedInstall` still installs.
17
18
  */
18
19
  export const SLACK_EXTERNAL_APP_MANAGEMENT_URL =
19
20
  "https://cursor.com/dashboard/deployed-agents";
@@ -42,6 +43,7 @@ export interface SlackAppManifest {
42
43
  scopes: {
43
44
  bot: string[];
44
45
  };
46
+ redirect_urls?: string[];
45
47
  };
46
48
  settings: {
47
49
  event_subscriptions: {
@@ -174,6 +176,10 @@ export function buildSlackManifest(
174
176
  scopes: {
175
177
  bot: botScopes,
176
178
  },
179
+ redirect_urls:
180
+ options.managedByCursor === false
181
+ ? undefined
182
+ : [SLACK_EXTERNAL_APP_MANAGEMENT_URL],
177
183
  },
178
184
  settings: {
179
185
  event_subscriptions: {