@octonodes/cli 0.2.26 → 0.2.40

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 (65) hide show
  1. package/README.md +40 -8
  2. package/dist/apps/build.d.ts +30 -30
  3. package/dist/apps/build.d.ts.map +1 -1
  4. package/dist/apps/build.js +7 -6
  5. package/dist/apps/build.js.map +1 -1
  6. package/dist/apps/cloudflared.js.map +1 -1
  7. package/dist/apps/constants.d.ts +5 -1
  8. package/dist/apps/constants.d.ts.map +1 -1
  9. package/dist/apps/constants.js +7 -2
  10. package/dist/apps/constants.js.map +1 -1
  11. package/dist/apps/create.d.ts +1 -1
  12. package/dist/apps/create.d.ts.map +1 -1
  13. package/dist/apps/create.js +22 -33
  14. package/dist/apps/create.js.map +1 -1
  15. package/dist/apps/dev.d.ts +8 -8
  16. package/dist/apps/dev.js.map +1 -1
  17. package/dist/apps/development.js.map +1 -1
  18. package/dist/apps/index.d.ts.map +1 -1
  19. package/dist/apps/index.js +2 -1
  20. package/dist/apps/index.js.map +1 -1
  21. package/dist/apps/publish.js.map +1 -1
  22. package/dist/apps/server.d.ts +1 -1
  23. package/dist/apps/server.js.map +1 -1
  24. package/dist/apps/source.d.ts +116 -116
  25. package/dist/apps/source.d.ts.map +1 -1
  26. package/dist/apps/source.js +1 -1
  27. package/dist/apps/source.js.map +1 -1
  28. package/dist/apps/tunnel-lease.js.map +1 -1
  29. package/dist/apps/tunnel.d.ts +1 -1
  30. package/dist/apps/tunnel.js.map +1 -1
  31. package/dist/apps/welcome.d.ts +2 -2
  32. package/dist/apps/welcome.d.ts.map +1 -1
  33. package/dist/apps/welcome.js +529 -13
  34. package/dist/apps/welcome.js.map +1 -1
  35. package/dist/auth.d.ts +6 -0
  36. package/dist/auth.d.ts.map +1 -1
  37. package/dist/auth.js +42 -12
  38. package/dist/auth.js.map +1 -1
  39. package/dist/connect.js.map +1 -1
  40. package/dist/index.js +11 -2
  41. package/dist/index.js.map +1 -1
  42. package/dist/plugins/app.js.map +1 -1
  43. package/dist/plugins/artifact.d.ts.map +1 -1
  44. package/dist/plugins/artifact.js.map +1 -1
  45. package/dist/plugins/build.d.ts.map +1 -1
  46. package/dist/plugins/build.js +9 -8
  47. package/dist/plugins/build.js.map +1 -1
  48. package/dist/plugins/constants.js.map +1 -1
  49. package/dist/plugins/create.d.ts.map +1 -1
  50. package/dist/plugins/create.js +4 -3
  51. package/dist/plugins/create.js.map +1 -1
  52. package/dist/plugins/deploy.js.map +1 -1
  53. package/dist/plugins/index.js.map +1 -1
  54. package/dist/plugins/library.d.ts.map +1 -1
  55. package/dist/plugins/library.js +2 -1
  56. package/dist/plugins/library.js.map +1 -1
  57. package/dist/plugins/publish.d.ts +116 -116
  58. package/dist/plugins/publish.d.ts.map +1 -1
  59. package/dist/plugins/publish.js.map +1 -1
  60. package/dist/plugins/release.d.ts +11 -11
  61. package/dist/plugins/release.js.map +1 -1
  62. package/dist/terminal.d.ts.map +1 -1
  63. package/dist/terminal.js.map +1 -1
  64. package/package.json +10 -5
  65. package/runtime/plugin-lifecycle.cjs +17097 -14595
package/README.md CHANGED
@@ -17,7 +17,7 @@ An npm release does not automatically make those channels available.
17
17
 
18
18
  ### Prerequisites
19
19
 
20
- For npm-based installation, install [Node.js 24](https://nodejs.org/en/download)
20
+ For npm-based installation, install [Node.js 20.19+, 22.12+, or newer](https://nodejs.org/en/download)
21
21
  and your chosen package manager. Check the runtime before installing:
22
22
 
23
23
  ```sh
@@ -25,10 +25,10 @@ node --version
25
25
  npm --version
26
26
  ```
27
27
 
28
- Node should report `v24.x.x`. Homebrew will install `node@24` as a dependency;
28
+ Node should report `v20.19.0` or newer in Node 20, or `v22.12.0` or newer. Homebrew will install `node@24` as a dependency;
29
29
  the planned portable, MSI, DEB, RPM, Scoop, Chocolatey, Arch and Snap packages
30
30
  include their own Node 24 runtime. App and plugin projects still need a separate
31
- Node 24 development toolchain and a package manager to install project dependencies.
31
+ supported Node development toolchain and a package manager to install project dependencies.
32
32
 
33
33
  ### npm, pnpm, Yarn and Bun
34
34
 
@@ -51,7 +51,7 @@ If pnpm reports no global bin directory, run [pnpm setup](https://pnpm.io/cli/se
51
51
  and open a new terminal. For [Yarn Classic](https://classic.yarnpkg.com/en/docs/cli/global),
52
52
  ensure the directory from `yarn global bin` is on PATH. Bun's global binaries
53
53
  normally live in `~/.bun/bin`; see [Bun installation](https://bun.com/docs/installation).
54
- Keep Node 24 on PATH even when using Bun as the package manager.
54
+ Keep a supported Node version on PATH even when using Bun as the package manager.
55
55
 
56
56
  ### Homebrew — macOS and Linux
57
57
 
@@ -248,7 +248,7 @@ for signed APT/DNF repository setup.
248
248
 
249
249
  ## Create an app
250
250
 
251
- Use Node 24 and a CLI release containing `octonodes app`. The default scaffold
251
+ Use Node 20.19+, 22.12+, or newer and a CLI release containing `octonodes app`. The default scaffold
252
252
  is a full Vite app with one hosted page and a backend. Contributions are optional.
253
253
  Use `--template extension` for a navbar launcher and panel inside Octonode.
254
254
  Run `octonodes app targets` to list supported view/action/launcher targets; add a
@@ -294,7 +294,7 @@ until their administrator approves an update.
294
294
 
295
295
  Full apps include a connected backend. Set `web.applicationUrl` in `octonode.app.json` to a permanent HTTPS
296
296
  origin, add only necessary `web.requestedActions`, and run `npm test`. The CLI
297
- publishes release metadata; deploy `dist/web/<app-id>` to a Node 24
297
+ publishes release metadata; deploy `dist/web/<app-id>` to a supported Node
298
298
  host yourself, set `OCTONODE_APP_ID` and `OCTONODE_API_URL`, and run
299
299
  `node start.cjs`. Keep prior content-hashed assets for pinned installations.
300
300
  The [Playbook app guide](https://playbook.octonodes.com/docs/apps) covers the
@@ -307,6 +307,7 @@ octonodes app create my-app # Vite
307
307
  octonodes app create my-vite-app --platform vite
308
308
  octonodes app create my-next-app --platform next
309
309
  octonodes app create my-plain-app --platform plain
310
+ octonodes app create coding-app --project-access write
310
311
  ```
311
312
 
312
313
  Vite and Next.js create a full app with a real framework page in `src/web/App.tsx`,
@@ -314,7 +315,13 @@ verified workspace content, a Projects route registered in Studio, and the verif
314
315
  builds Vite or a Next.js static export into the same verified web artifact and
315
316
  serves it through the development tunnel. Next.js server features are outside
316
317
  this static export; add backend routes in `src/server.ts`.
317
- Plain uses `src/welcome.html`, `src/hosted.ts`, and the same backend without Vite or Next.js.
318
+ All full-app platforms start with the animated **Workspace overview** page, an
319
+ **Explore projects** link, responsive light/dark styling, and reduced-motion support.
320
+ Vite and Next.js emit native React JSX; plain emits `src/welcome.html` and
321
+ `src/hosted.ts` with the same design and verified backend. The overview is part of
322
+ the generated app, so customize these source files after creation. Studio’s
323
+ Storybook fixture is a separate preview and is not shipped with the CLI.
324
+ Extension-only starters have no hosted page.
318
325
 
319
326
  Generated workspaces include `installConfig.hoistingLimits: workspaces` for Yarn 4.
320
327
  The hosted SDK keeps normal browser history and mirrors embedded routes into Studio’s
@@ -367,6 +374,8 @@ rebuild first. Artifact publication accepts `--org` and `--team`; the optional
367
374
 
368
375
  ## Sign in
369
376
 
377
+ Login uses `https://octonodes.com` by default; `--base-url` or `OCTONODE_URL` can select another Studio deployment.
378
+
370
379
  The default login opens GitHub authentication in your browser and signs in as the same user as
371
380
  Octonode Studio:
372
381
 
@@ -378,6 +387,17 @@ If the browser cannot open, visit the URL printed by the command. The CLI receiv
378
387
  temporary loopback callback, stores the refreshable session in `~/.octonode/session.json`, and
379
388
  refreshes expired access tokens automatically.
380
389
 
390
+ Login prints your personal workspace. Run `octonodes whoami` to retrieve the
391
+ verified auth `userId`, email, linked providers and `workspace` again. Use its
392
+ `workspace` value for `app dev --workspace` and its `userId` for backend owner
393
+ checks. The general `identity api get` endpoint can return a `workspace:user:`
394
+ prefixed resource identity; that is not the auth UUID. `whoami` refuses API token
395
+ overrides so a saved user's ID cannot be mistaken for the active token's account.
396
+
397
+ The app descriptor ID identifies the app source. Studio development previews
398
+ receive a temporary app ID; backends must verify against `OCTONODE_APP_ID`, which
399
+ the CLI supplies for each preview. Configure the registered app ID for production.
400
+
381
401
  For terminal-only login, request an email code:
382
402
 
383
403
  ```sh
@@ -467,7 +487,7 @@ the [Octonode community](https://community.octonodes.com/community).
467
487
  | Variable | Purpose |
468
488
  | --- | --- |
469
489
  | `OCTONODE_TOKEN` | Overrides every saved login. |
470
- | `OCTONODE_URL` | Overrides `https://api.octonode.dev`. |
490
+ | `OCTONODE_URL` | Overrides `https://octonodes.com`. |
471
491
  | `OCTONODE_CONFIG_DIR` | Overrides the default `~/.octonode` directory. |
472
492
 
473
493
  Use `--base-url <url>` to override the API URL for one login or API command:
@@ -498,3 +518,15 @@ out of shell history, logs, and source control.
498
518
 
499
519
  Use [`@octonodes/sdk`](https://www.npmjs.com/package/@octonodes/sdk) for typed application code and
500
520
  direct access to the same API operations.
521
+
522
+ Published 0.2.38 requires `OCTONODE_URL=https://octonodes.com` (or
523
+ `--base-url https://octonodes.com`) for generated API commands; its control-plane
524
+ default returns 404 for `/api/*`. This candidate corrects that default.
525
+
526
+ Project-file scopes are opt-in. `--project-access read` requests `projects:read`
527
+ for discovery and `read:project` for source files. `--project-access write` also
528
+ requests `write:project`. For full apps these are stored in
529
+ `web.requestedActions`; extension apps use `requestedActions`. Studio requires
530
+ explicit consent for selected projects. The scopes do not grant table data,
531
+ workflow execution, or arbitrary commands, and the creation flag does not start
532
+ an execution sandbox. A supporting engine release must be deployed first.
@@ -1,80 +1,80 @@
1
1
  import { PluginManifest } from "@octonodes/sdk/plugins";
2
2
  export declare function buildAppProject(directory: string, applicationUrl?: string): Promise<import("../plugins/types").PluginBuild | {
3
+ webDirectory: string;
3
4
  manifest: PluginManifest;
4
5
  directory: string;
5
- webDirectory: string;
6
6
  }>;
7
7
  export declare function verifyWebBuild(directory: string): {
8
8
  apiVersion: "1";
9
9
  hosting: "self-hosted";
10
10
  applicationUrl: string;
11
- icon?: "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "function" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
12
- iconUrl?: string | undefined;
13
- privacyUrl?: string | undefined;
14
- supportUrl?: string | undefined;
15
11
  redirectUrls: string[];
16
- webhookUrl?: string | undefined;
17
- requestedActions: ("data:read" | "data:write" | "projects:read" | "workflows:run")[];
12
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run" | "read:project" | "write:project")[];
18
13
  extensions: {
19
14
  id: string;
20
- target: "app.page" | "workspace.block";
21
15
  url: string;
16
+ target: "app.page" | "workspace.block";
22
17
  sha256: string;
23
18
  }[];
24
- } | {
25
- apiVersion: "2";
26
- hosting: "extension-only";
27
- icon?: "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "function" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
19
+ icon?: "function" | "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
28
20
  iconUrl?: string | undefined;
21
+ privacyUrl?: string | undefined;
22
+ supportUrl?: string | undefined;
23
+ webhookUrl?: string | undefined;
24
+ } | {
29
25
  settings: {
30
- id: string;
31
26
  label: string;
27
+ id: string;
32
28
  defaultValue: string;
33
29
  }[];
34
- privacyUrl?: string | undefined;
35
- supportUrl?: string | undefined;
36
- requestedActions: ("data:read" | "data:write" | "projects:read" | "workflows:run")[];
30
+ apiVersion: "2";
31
+ hosting: "extension-only";
32
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run" | "read:project" | "write:project")[];
37
33
  extensions: {
38
34
  id: string;
39
- target: "app.page" | "workspace.block";
40
35
  path: string;
36
+ target: "app.page" | "workspace.block";
41
37
  sha256: string;
42
38
  }[];
43
- } | {
44
- hosting: "extension-only";
45
- icon?: "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "function" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
39
+ icon?: "function" | "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
46
40
  iconUrl?: string | undefined;
41
+ privacyUrl?: string | undefined;
42
+ supportUrl?: string | undefined;
43
+ } | {
47
44
  settings: {
48
- id: string;
49
45
  label: string;
46
+ id: string;
50
47
  defaultValue: string;
51
48
  }[];
52
- privacyUrl?: string | undefined;
53
- supportUrl?: string | undefined;
54
49
  apiVersion: "3";
55
- requestedActions: ("data:read" | "data:write" | "projects:read" | "workflows:run")[];
50
+ hosting: "extension-only";
51
+ requestedActions: ("projects:read" | "data:read" | "data:write" | "workflows:run" | "read:project" | "write:project")[];
56
52
  extensions: {
57
53
  id: string;
58
- target: "app.page" | "app.settings.section" | "document.action" | "document.block.action" | "document.panel" | "document.review.action" | "document.selection-action" | "document.slash-command" | "document.tab" | "editor.action" | "editor.panel" | "editor.selection-action" | "execution.action" | "execution.details.block" | "file.action" | "git.diff.action" | "git.diff.panel" | "node.action" | "node.inspector.block" | "node.inspector.tab" | "node.view" | "project.action" | "project.overview.block" | "project.settings.section" | "project.tab" | "shell.dock" | "shell.panel" | "table.action" | "table.view" | "task.action" | "task.card.badge" | "task.details.block" | "task.details.tab" | "task.space.action" | "task.space.view" | "workflow.action" | "workflow.canvas.action" | "workflow.edge.action" | "workflow.inspector.block" | "workflow.selection-action" | "workflow.tab" | "workspace.block";
59
- title: string;
60
- icon?: "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "function" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
61
54
  path: string;
55
+ target: "app.page" | "workspace.block" | "shell.panel" | "shell.dock" | "project.tab" | "project.overview.block" | "workflow.tab" | "workflow.inspector.block" | "node.view" | "node.inspector.tab" | "node.inspector.block" | "task.space.view" | "task.details.tab" | "task.details.block" | "task.card.badge" | "document.tab" | "document.panel" | "editor.panel" | "git.diff.panel" | "table.view" | "execution.details.block" | "app.settings.section" | "project.settings.section" | "project.action" | "file.action" | "editor.action" | "editor.selection-action" | "workflow.action" | "workflow.canvas.action" | "workflow.selection-action" | "workflow.edge.action" | "node.action" | "task.space.action" | "task.action" | "document.action" | "document.selection-action" | "document.block.action" | "document.slash-command" | "document.review.action" | "git.diff.action" | "table.action" | "execution.action";
56
+ title: string;
62
57
  sha256: string;
58
+ icon?: "function" | "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
63
59
  when?: {
64
60
  hasProject?: boolean | undefined;
65
61
  hasSelection?: boolean | undefined;
66
62
  readOnly?: boolean | undefined;
67
63
  nodeKind?: string | undefined;
68
- documentFormat?: "html" | "latex" | "markdown" | undefined;
64
+ documentFormat?: "markdown" | "html" | "latex" | undefined;
69
65
  } | undefined;
70
66
  }[];
71
67
  launchers: {
72
68
  id: string;
73
- target: "shell.command" | "shell.navbar.action" | "shell.navigation.item";
69
+ target: "shell.navbar.action" | "shell.navigation.item" | "shell.command";
74
70
  title: string;
75
- icon?: "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "function" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
76
71
  opens: string;
72
+ icon?: "function" | "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
77
73
  }[];
78
74
  locales: Record<string, Record<string, string>>;
75
+ icon?: "function" | "arrow-up-down" | "binary" | "bomb" | "boxes" | "braces" | "calculator" | "calendar" | "camera" | "clock" | "code" | "copy-x" | "database" | "dices" | "filter" | "flag" | "flask" | "git-branch" | "git-merge" | "group" | "hook" | "list-filter" | "merge" | "octagon-x" | "package" | "package-x" | "pencil" | "play" | "regex" | "repeat" | "replace" | "ruler" | "scan-eye" | "scissors" | "search" | "server-cog" | "settings" | "sigma" | "split" | "terminal" | "test-tube" | "text-cursor-input" | "ticket" | "truck" | "type" | "typescript" | "ungroup" | "variable" | "wand" | "wave" | "webhook" | "workflow" | "x" | undefined;
76
+ iconUrl?: string | undefined;
77
+ privacyUrl?: string | undefined;
78
+ supportUrl?: string | undefined;
79
79
  };
80
80
  //# sourceMappingURL=build.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/apps/build.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKxD,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;;;;GA4K/E;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAa/C"}
1
+ {"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../src/apps/build.ts"],"names":[],"mappings":"AAkBA,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAKxD,wBAAsB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM;;;;GA4K/E;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YAwBgq8F,CAAC;YAA6oB,CAAC;sBAA8B,CAAC;wBAAmD,CAAC;oBAA+C,CAAC;oBAA+C,CAAC;0BAAoD,CAAC;;;;;;;;YAA+R,CAAC;;;;;;;EAXt2+F"}
@@ -2,13 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.buildAppProject = buildAppProject;
4
4
  exports.verifyWebBuild = verifyWebBuild;
5
+ const plugins_1 = require("@octonodes/sdk/plugins");
5
6
  const node_fs_1 = require("node:fs");
6
7
  const node_path_1 = require("node:path");
7
8
  const node_child_process_1 = require("node:child_process");
8
9
  const node_util_1 = require("node:util");
9
10
  const esbuild_1 = require("esbuild");
10
- const plugins_1 = require("@octonodes/sdk/plugins");
11
11
  const plugins_2 = require("@octonodes/sdk/plugins");
12
+ const plugins_3 = require("@octonodes/sdk/plugins");
12
13
  const app_1 = require("../plugins/app");
13
14
  const artifact_1 = require("../plugins/artifact");
14
15
  const source_1 = require("./source");
@@ -32,7 +33,7 @@ async function buildAppProject(directory, applicationUrl) {
32
33
  const result = await (0, esbuild_1.build)({
33
34
  absWorkingDir: root,
34
35
  stdin: {
35
- contents: `import extension from ${JSON.stringify(entry)}; import { startExtension } from "@octonodes/ui-extensions/react"; import { startAction } from "@octonodes/ui-extensions"; if (extension.target !== ${JSON.stringify(extension.target)}) throw new Error("Extension target mismatch"); if ((extension.kind === "action") !== ${JSON.stringify(plugins_1.APP_ACTION_TARGETS.includes(extension.target))}) throw new Error("Extension kind mismatch"); ${source.apiVersion === "octonode.app/v2" ? 'extension.kind === "action" ? startAction(extension) : startExtension(extension);' : 'startExtension(extension);'}`,
36
+ contents: `import extension from ${JSON.stringify(entry)}; import { startExtension } from "@octonodes/ui-extensions/react"; import { startAction } from "@octonodes/ui-extensions"; if (extension.target !== ${JSON.stringify(extension.target)}) throw new Error("Extension target mismatch"); if ((extension.kind === "action") !== ${JSON.stringify(plugins_2.APP_ACTION_TARGETS.includes(extension.target))}) throw new Error("Extension kind mismatch"); ${source.apiVersion === "octonode.app/v2" ? 'extension.kind === "action" ? startAction(extension) : startExtension(extension);' : 'startExtension(extension);'}`,
36
37
  resolveDir: root,
37
38
  loader: "ts",
38
39
  },
@@ -69,7 +70,7 @@ async function buildAppProject(directory, applicationUrl) {
69
70
  const normalized = new URL(origin);
70
71
  if (normalized.origin !== origin.replace(/\/$/, ""))
71
72
  throw new Error("App URL must be an HTTPS origin");
72
- const manifest = plugins_2.PluginManifest.parse({
73
+ const manifest = plugins_3.PluginManifest.parse({
73
74
  id: source.id,
74
75
  name: source.name,
75
76
  version: source.version,
@@ -96,7 +97,7 @@ async function buildAppProject(directory, applicationUrl) {
96
97
  platform: "node",
97
98
  preserveSymlinks: true,
98
99
  format: "cjs",
99
- target: "node24",
100
+ target: plugins_1.NODE_BUILD_TARGET,
100
101
  outfile: (0, node_path_1.join)(stage, "server.cjs"),
101
102
  logLevel: "silent",
102
103
  metafile: true,
@@ -154,7 +155,7 @@ process.once("SIGINT",()=>host.close());process.once("SIGTERM",()=>host.close())
154
155
  bundle: true,
155
156
  platform: "node",
156
157
  format: "cjs",
157
- target: "node24",
158
+ target: plugins_1.NODE_BUILD_TARGET,
158
159
  outfile: (0, node_path_1.join)(stage, "start.cjs"),
159
160
  logLevel: "silent",
160
161
  });
@@ -204,7 +205,7 @@ function verifyWebBuild(directory) {
204
205
  for (const file of actual)
205
206
  if (record.files[file] !== (0, artifact_1.fileHash)((0, node_path_1.join)(directory, file)))
206
207
  throw new Error("Web build changed; rebuild first");
207
- const manifest = plugins_2.PluginManifest.parse({ id: record.id, name: "web", version: "1.0.0", app: record.app });
208
+ const manifest = plugins_3.PluginManifest.parse({ id: record.id, name: "web", version: "1.0.0", app: record.app });
208
209
  return manifest.app;
209
210
  }
210
211
  function assertSourceInputs(root, inputs) {
@@ -1 +1 @@
1
- {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/apps/build.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build.js","sourceRoot":"","sources":["../../src/apps/build.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cloudflared.js","sourceRoot":"","sources":["../../src/apps/cloudflared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cloudflared.js","sourceRoot":"","sources":["../../src/apps/cloudflared.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,10 @@
1
+ export declare const PROJECT_ACCESS_ACTIONS: {
2
+ readonly read: readonly ["projects:read", "read:project"];
3
+ readonly write: readonly ["projects:read", "read:project", "write:project"];
4
+ };
1
5
  export declare const APP_STUDIO_URL = "https://octonodes.com";
2
6
  export declare const APP_SOURCE = "octonode.app.json";
3
- export declare const APP_HELP = "Usage:\n octonodes app create <name> [--template extension|full] [--platform plain|vite|next]\n octonodes app targets\n octonodes app extension add <id> --target <target> [--cwd <directory>]\n octonodes app dev [directory] [--use-localhost | --tunnel-url <https-origin>] [--port <port>] [--no-open] [--workspace kind:id]\n octonodes app build [directory] [--app-url <https-origin>]\n octonodes app serve [directory] [--port <port>]\n octonodes app publish [directory] --workspace kind:id [--app-id <id> --revision <n>]\n octonodes app validate <artifact-directory>\n\nCreate defaults to a full Vite app (--platform vite). Use --platform plain for HTML or\n--platform next for Next.js. Use --template extension for an in-app panel and navbar launcher.\nExtension templates use octonode.app/v2; app targets lists the supported view/action/launcher targets.\nBuild compiles declared browser entries and generates\nrelease hashes in dist/apps/<id>. Existing projects are never overwritten. No login is needed.\napp dev opens a public Quick Tunnel automatically.\napp dev automatically downloads and caches its tunnel helper. No Cloudflare account or install is needed. --workspace opens an expiring Studio preview after login.\napp publish creates an immutable release; full apps must deploy their backend separately.\nInstallation requires Studio consent.\n";
7
+ export declare const APP_HELP = "Usage:\n octonodes app create <name> [--template extension|full] [--platform plain|vite|next] [--project-access read|write]\n octonodes app targets\n octonodes app extension add <id> --target <target> [--cwd <directory>]\n octonodes app dev [directory] [--use-localhost | --tunnel-url <https-origin>] [--port <port>] [--no-open] [--workspace kind:id]\n octonodes app build [directory] [--app-url <https-origin>]\n octonodes app serve [directory] [--port <port>]\n octonodes app publish [directory] --workspace kind:id [--app-id <id> --revision <n>]\n octonodes app validate <artifact-directory>\n\nCreate defaults to a full Vite app (--platform vite). Use --platform plain for HTML or\n--platform next for Next.js. Use --template extension for an in-app panel and navbar launcher.\n--project-access declares explicit project-file permissions; it does not start a sandbox.\nExtension templates use octonode.app/v2; app targets lists the supported view/action/launcher targets.\nBuild compiles declared browser entries and generates\nrelease hashes in dist/apps/<id>. Existing projects are never overwritten. No login is needed.\napp dev opens a public Quick Tunnel automatically.\napp dev automatically downloads and caches its tunnel helper. No Cloudflare account or install is needed. --workspace opens an expiring Studio preview after login.\napp publish creates an immutable release; full apps must deploy their backend separately.\nInstallation requires Studio consent.\n";
4
8
  export declare const CLOUDFLARED_VERSION = "2026.9.3";
5
9
  export declare const CLOUDFLARED_ASSETS: Record<string, import("./types").CloudflaredAsset>;
6
10
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/apps/constants.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,0BAA0B,CAAC;AACtD,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAC9C,eAAO,MAAM,QAAQ,u1CAmBpB,CAAC;AAGF,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,SAAS,EAAE,gBAAgB,CAuBjF,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/apps/constants.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,sBAAsB;;;CAGsB,CAAC;AAG1D,eAAO,MAAM,cAAc,0BAA0B,CAAC;AACtD,eAAO,MAAM,UAAU,sBAAsB,CAAC;AAC9C,eAAO,MAAM,QAAQ,g9CAoBpB,CAAC;AAGF,eAAO,MAAM,mBAAmB,aAAa,CAAC;AAC9C,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,SAAS,EAAE,gBAAgB,CAuBjF,CAAC"}
@@ -1,11 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.CLOUDFLARED_ASSETS = exports.CLOUDFLARED_VERSION = exports.APP_HELP = exports.APP_SOURCE = exports.APP_STUDIO_URL = void 0;
3
+ exports.CLOUDFLARED_ASSETS = exports.CLOUDFLARED_VERSION = exports.APP_HELP = exports.APP_SOURCE = exports.APP_STUDIO_URL = exports.PROJECT_ACCESS_ACTIONS = void 0;
4
+ exports.PROJECT_ACCESS_ACTIONS = {
5
+ read: ["projects:read", "read:project"],
6
+ write: ["projects:read", "read:project", "write:project"],
7
+ };
4
8
  // App installation and preview routes are served by the Studio gateway.
5
9
  exports.APP_STUDIO_URL = "https://octonodes.com";
6
10
  exports.APP_SOURCE = "octonode.app.json";
7
11
  exports.APP_HELP = `Usage:
8
- octonodes app create <name> [--template extension|full] [--platform plain|vite|next]
12
+ octonodes app create <name> [--template extension|full] [--platform plain|vite|next] [--project-access read|write]
9
13
  octonodes app targets
10
14
  octonodes app extension add <id> --target <target> [--cwd <directory>]
11
15
  octonodes app dev [directory] [--use-localhost | --tunnel-url <https-origin>] [--port <port>] [--no-open] [--workspace kind:id]
@@ -16,6 +20,7 @@ exports.APP_HELP = `Usage:
16
20
 
17
21
  Create defaults to a full Vite app (--platform vite). Use --platform plain for HTML or
18
22
  --platform next for Next.js. Use --template extension for an in-app panel and navbar launcher.
23
+ --project-access declares explicit project-file permissions; it does not start a sandbox.
19
24
  Extension templates use octonode.app/v2; app targets lists the supported view/action/launcher targets.
20
25
  Build compiles declared browser entries and generates
21
26
  release hashes in dist/apps/<id>. Existing projects are never overwritten. No login is needed.
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/apps/constants.ts"],"names":[],"mappings":";;;AAAA,wEAAwE;AAC3D,QAAA,cAAc,GAAG,uBAAuB,CAAC;AACzC,QAAA,UAAU,GAAG,mBAAmB,CAAC;AACjC,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;CAmBvB,CAAC;AAEF,2FAA2F;AAC9E,QAAA,mBAAmB,GAAG,UAAU,CAAC;AACjC,QAAA,kBAAkB,GAAuD;IACpF,YAAY,EAAE;QACZ,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,kEAAkE;QAC1E,YAAY,EAAE,kEAAkE;KACjF;IACD,cAAc,EAAE;QACd,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,kEAAkE;QAC1E,YAAY,EAAE,kEAAkE;KACjF;IACD,WAAW,EAAE;QACX,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,kEAAkE;KAC3E;IACD,aAAa,EAAE;QACb,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,kEAAkE;KAC3E;IACD,WAAW,EAAE;QACX,IAAI,EAAE,+BAA+B;QACrC,MAAM,EAAE,kEAAkE;KAC3E;CACF,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/apps/constants.ts"],"names":[],"mappings":";;;AAEa,QAAA,sBAAsB,GAAG;IACpC,IAAI,EAAE,CAAC,eAAe,EAAE,cAAc,CAAC;IACvC,KAAK,EAAE,CAAC,eAAe,EAAE,cAAc,EAAE,eAAe,CAAC;CACF,CAAC;AAE1D,wEAAwE;AAC3D,QAAA,cAAc,GAAG,uBAAuB,CAAC;AACzC,QAAA,UAAU,GAAG,mBAAmB,CAAC;AACjC,QAAA,QAAQ,GAAG;;;;;;;;;;;;;;;;;;;;CAoBvB,CAAC;AAEF,2FAA2F;AAC9E,QAAA,mBAAmB,GAAG,UAAU,CAAC;AACjC,QAAA,kBAAkB,GAAuD;IACpF,YAAY,EAAE;QACZ,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,kEAAkE;QAC1E,YAAY,EAAE,kEAAkE;KACjF;IACD,cAAc,EAAE;QACd,IAAI,EAAE,8BAA8B;QACpC,MAAM,EAAE,kEAAkE;QAC1E,YAAY,EAAE,kEAAkE;KACjF;IACD,WAAW,EAAE;QACX,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,kEAAkE;KAC3E;IACD,aAAa,EAAE;QACb,IAAI,EAAE,yBAAyB;QAC/B,MAAM,EAAE,kEAAkE;KAC3E;IACD,WAAW,EAAE;QACX,IAAI,EAAE,+BAA+B;QACrC,MAAM,EAAE,kEAAkE;KAC3E;CACF,CAAC"}
@@ -1,4 +1,4 @@
1
- export declare function createApp(name: string, version: string, template?: string, platform?: string | undefined): string;
1
+ export declare function createApp(name: string, version: string, template?: string, platform?: string | undefined, projectAccess?: string): string;
2
2
  export declare function addAppExtension(directory: string, id: string, target: string): {
3
3
  id: string;
4
4
  target: string;
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/apps/create.ts"],"names":[],"mappings":"AAsBA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAS,EAAE,QAAQ,GAAE,MAAM,GAAG,SAAoD,GAAG,MAAM,CAmP3J;AACD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;EA+B5E"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../src/apps/create.ts"],"names":[],"mappings":"AAuBA,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,SAAS,EAAE,QAAQ,GAAE,MAAM,GAAG,SAAoD,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAuOnL;AACD,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;EA+B5E"}
@@ -2,16 +2,17 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createApp = createApp;
4
4
  exports.addAppExtension = addAppExtension;
5
+ const plugins_1 = require("@octonodes/sdk/plugins");
5
6
  const node_fs_1 = require("node:fs");
6
7
  const node_crypto_1 = require("node:crypto");
7
8
  const node_path_1 = require("node:path");
8
9
  const constants_1 = require("./constants");
9
10
  const source_1 = require("./source");
10
11
  const welcome_1 = require("./welcome");
11
- const plugins_1 = require("@octonodes/sdk/plugins");
12
+ const plugins_2 = require("@octonodes/sdk/plugins");
12
13
  const json = (value) => JSON.stringify(value, null, 2) + "\n";
13
14
  function extensionCode(target) {
14
- if (plugins_1.APP_ACTION_TARGETS.includes(target))
15
+ if (plugins_2.APP_ACTION_TARGETS.includes(target))
15
16
  return `import {defineAction} from "@octonodes/ui-extensions";\nexport default defineAction(${JSON.stringify(target)}, async api => { await api.ui.openAssistant("Explain this selection and suggest improvements."); });\n`;
16
17
  if (target === "node.view")
17
18
  return `import {defineExtension,Section,useExtension} from "@octonodes/ui-extensions/react";\nexport default defineExtension("node.view",function Nodes(){const api=useExtension("node.view");return <>{api.context.nodes?.map(node=><Section key={node.id} title={node.id}>{node.label || node.id}</Section>)}</>;});\n`;
@@ -26,7 +27,7 @@ export default defineExtension(${JSON.stringify(target)}, function Notice() {
26
27
  });
27
28
  `;
28
29
  }
29
- function createApp(name, version, template = "full", platform = template === "full" ? "vite" : undefined) {
30
+ function createApp(name, version, template = "full", platform = template === "full" ? "vite" : undefined, projectAccess) {
30
31
  if (!/^[a-z0-9][a-z0-9-]*$/.test(name))
31
32
  throw new Error("App name must be lowercase alphanumeric/dash");
32
33
  if (!["extension", "full"].includes(template))
@@ -35,6 +36,9 @@ function createApp(name, version, template = "full", platform = template === "fu
35
36
  throw new Error("Choose --platform plain, vite or next");
36
37
  if (platform && template !== "full")
37
38
  throw new Error("--platform requires --template full");
39
+ if (projectAccess !== undefined && projectAccess !== "read" && projectAccess !== "write")
40
+ throw new Error("Choose --project-access read or write");
41
+ const requestedActions = projectAccess ? [...constants_1.PROJECT_ACCESS_ACTIONS[projectAccess]] : undefined;
38
42
  const framework = platform === "vite" || platform === "next";
39
43
  const appId = (0, node_crypto_1.randomUUID)();
40
44
  const root = (0, node_path_1.resolve)(name);
@@ -47,9 +51,9 @@ function createApp(name, version, template = "full", platform = template === "fu
47
51
  id: appId,
48
52
  name,
49
53
  version: "0.1.0",
50
- ...(template === "full" ? { web: { entry: "src/server.ts", ...(platform ? { platform } : {}) } } : {}),
54
+ ...(template === "full" ? { web: { entry: "src/server.ts", ...(platform ? { platform } : {}), ...(requestedActions ? { requestedActions } : {}) } } : {}),
51
55
  ...(template === "extension"
52
- ? { settings: [{ id: "message", label: "Message", defaultValue: "Welcome to the workspace" }] }
56
+ ? { settings: [{ id: "message", label: "Message", defaultValue: "Welcome to the workspace" }], ...(requestedActions ? { requestedActions } : {}) }
53
57
  : {}),
54
58
  extensions: template === "extension" ? [{ id: "assistant", target: "shell.panel", title: "Workspace assistant", entry: "src/extensions/assistant.tsx" }] : [],
55
59
  ...(template === "extension" ? { launchers: [{ id: "open-assistant", target: "shell.navbar.action", title: "Workspace assistant", icon: "terminal", opens: "assistant" }] } : {}),
@@ -60,23 +64,7 @@ function createApp(name, version, template = "full", platform = template === "fu
60
64
  if (!framework)
61
65
  (0, node_fs_1.writeFileSync)((0, node_path_1.join)(root, "src/welcome.html"), (0, welcome_1.welcomeHtml)(name));
62
66
  if (!framework)
63
- (0, node_fs_1.writeFileSync)((0, node_path_1.join)(root, "src/hosted.ts"), `import { connectHostedApp } from "@octonodes/ui-extensions/app";
64
- const app = connectHostedApp();
65
- const output = document.getElementById("message")!;
66
- let token: string | undefined;
67
- const update = () => {
68
- const current = app.getSnapshot();
69
- if (current.status === "expired") output.textContent = "Session expired. Reopen the app from Studio.";
70
- if (current.status !== "ready" || current.token === token) return;
71
- token = current.token;
72
- app.fetch("/api/context").then(async response => {
73
- if (!response.ok) throw Error("Could not load context (" + response.status + ").");
74
- const data = await response.json(); output.textContent = "Connected to " + data.workspace.kind + ":" + data.workspace.id;
75
- }).catch(error => { output.textContent = error.message; });
76
- };
77
- output.textContent = "Open this app from Studio to connect your workspace.";
78
- app.subscribe(update); update();
79
- `);
67
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(root, "src/hosted.ts"), (0, welcome_1.welcomeHosted)());
80
68
  (0, node_fs_1.writeFileSync)((0, node_path_1.join)(root, "src/server.ts"), `// Export a Fetch API handler. app dev and app serve adapt it to Node HTTP.
81
69
  import { connectAppServer, AppRequestError } from "@octonodes/ui-extensions/app/server";
82
70
  ${framework ? "" : 'import { readFileSync } from "node:fs";\nimport { join } from "node:path";'}
@@ -122,7 +110,7 @@ export default async function handle(request: Request): Promise<Response> {
122
110
  }
123
111
  else {
124
112
  (0, node_fs_1.mkdirSync)((0, node_path_1.join)(root, "app"));
125
- (0, node_fs_1.writeFileSync)((0, node_path_1.join)(root, "app/page.tsx"), 'import App from "../src/web/App";\nexport default App;\n');
113
+ (0, node_fs_1.writeFileSync)((0, node_path_1.join)(root, "app/page.tsx"), 'import App from "../src/web/App";\nexport default function Page() { return <App />; }\n');
126
114
  (0, node_fs_1.writeFileSync)((0, node_path_1.join)(root, "app/layout.tsx"), `import "../src/web/welcome.css";\nexport const metadata = { title: "${name} · Octonode" };\nexport default function Layout({ children }: { children: React.ReactNode }) { return <html lang="en"><body>{children}</body></html>; }\n`);
127
115
  (0, node_fs_1.writeFileSync)((0, node_path_1.join)(root, "next.config.mjs"), 'export default { output: "export" };\n');
128
116
  }
@@ -132,7 +120,7 @@ export default async function handle(request: Request): Promise<Response> {
132
120
  name,
133
121
  private: true,
134
122
  type: "module",
135
- engines: { node: ">=24" },
123
+ engines: { node: plugins_1.NODE_ENGINE_RANGE },
136
124
  installConfig: { hoistingLimits: "workspaces" },
137
125
  scripts: {
138
126
  dev: "octonodes app dev",
@@ -146,7 +134,7 @@ export default async function handle(request: Request): Promise<Response> {
146
134
  typescript: "5.9.3",
147
135
  "@types/react": "^19.0.0",
148
136
  ...(platform === "vite" ? { "@types/react-dom": "^19.0.0" } : {}),
149
- "@types/node": "^24.0.0",
137
+ "@types/node": "^20.19.0",
150
138
  ...(platform === "vite" ? { vite: "8.3.1" } : {}),
151
139
  ...(platform === "next" ? { next: "16.3.6" } : {}),
152
140
  },
@@ -186,11 +174,11 @@ An Octonode app created by \`octonodes app create\`. ${template === "full" ? "It
186
174
  ## Work locally
187
175
 
188
176
  ${template === "full" ? `Yarn workspaces use the generated \`installConfig.hoistingLimits: workspaces\`. Keep it
189
- and run \`yarn install\` at the workspace root. Full React apps verify the
190
- workspace session before showing content and register Overview (\`/\`) and
191
- Projects (\`/projects\`) routes in Studio’s sidebar. The top navbar is optional: render
192
- \`<App showNavbar />\` in \`src/web/main.tsx\` to enable it for Vite, or render
193
- \`<App showNavbar />\` from \`app/page.tsx\` for Next.js. Sidebar registration is always enabled.` : `The extension starter has no hosted page or backend. Its declared navbar launcher
177
+ and run \`yarn install\` at the workspace root. Full apps verify the
178
+ workspace session before showing content. The animated workspace overview is the default
179
+ landing page, with responsive light/dark styling and reduced-motion support. Full apps register Overview (\`/\`) and
180
+ Projects (\`/projects\`) routes in Studio’s sidebar. Sidebar registration is always enabled.
181
+ ${framework ? "The top navbar is optional: render `<App showNavbar />` in `src/web/main.tsx` for Vite or from `app/page.tsx` for Next.js." : "The plain page lives in `src/welcome.html`, with session verification and route handling in `src/hosted.ts`."}` : `The extension starter has no hosted page or backend. Its declared navbar launcher
194
182
  opens a sandboxed panel inside Octonode. Use \`octonodes app targets\` to discover
195
183
  supported contextual contributions.`}
196
184
 
@@ -204,13 +192,14 @@ The CLI opens a live HTTPS preview and downloads a verified tunnel helper on fir
204
192
  use. Development opens a public Quick Tunnel automatically. No Cloudflare account or separate installation is needed. Use
205
193
  \`octonodes app dev --use-localhost\` for offline UI work.
206
194
  Edit \`octonode.app.json\` and the generated source files. ${framework ? `The ${platform === "next" ? "Next.js" : "Vite"} welcome page lives in \`src/web/App.tsx\`. ` : ""}The descriptor owns
207
- app identity, version, extension targets and entry files. Do not edit \`dist/\`.
195
+ app identity, version, extension targets and entry files. Optional \`--project-access read|write\` declares project-file scopes for selected projects; write requests both read and write access. These scopes require fresh Studio consent and a supporting platform release. The flag does not provision a sandbox or expose project files. Do not edit \`dist/\`.
208
196
  ${template === "extension" ? "Add a page with `octonodes app extension add overview --target app.page`." : "Add a contribution with `octonodes app extension add notice --target workspace.block`."}
209
197
 
210
198
  ## Preview and publish in Octonode
211
199
 
212
200
  \`\`\`sh
213
201
  octonodes login
202
+ octonodes whoami
214
203
  octonodes app dev --workspace user:<your-user-id>
215
204
  npm test
216
205
  octonodes app validate dist/apps/${appId}
@@ -239,7 +228,7 @@ ${framework ? `The ${platform === "next" ? "Next.js" : "Vite"} page is a native
239
228
 
240
229
  Publishing registers metadata but does not deploy the backend. After the first
241
230
  publish returns the app ID, copy the entire \`dist/web/${appId}\` directory
242
- to a Node 24 host. Configure HTTPS, \`PORT\`, \`OCTONODE_APP_ID\` and
231
+ to a Node 20.19+, 22.12+, or newer supported host. Configure HTTPS, \`PORT\`, \`OCTONODE_APP_ID\` and
243
232
  \`OCTONODE_API_URL\`, then run \`node start.cjs\` from that directory.
244
233
  Check the public page and every hashed \`/extensions/<hash>.js\` asset
245
234
  before inviting installation. Restore the previous web artifact before clean
@@ -266,7 +255,7 @@ function addAppExtension(directory, id, target) {
266
255
  throw new Error("Extension ID must be lowercase alphanumeric/dash");
267
256
  const root = (0, node_path_1.resolve)(directory);
268
257
  const source = (0, source_1.readAppSource)(root);
269
- if (!plugins_1.APP_VIEW_TARGETS.includes(target) && !plugins_1.APP_ACTION_TARGETS.includes(target))
258
+ if (!plugins_2.APP_VIEW_TARGETS.includes(target) && !plugins_2.APP_ACTION_TARGETS.includes(target))
270
259
  throw new Error("Unsupported extension target");
271
260
  if (source.apiVersion === "octonode.app/v1" && target !== "workspace.block" && target !== "app.page")
272
261
  throw new Error("Upgrade the descriptor to octonode.app/v2 to add contextual targets");