andesine 0.1.0 → 0.5.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.
Files changed (96) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +93 -8
  3. package/dist/cli.js +4590 -616
  4. package/dist/cli.js.map +1 -1
  5. package/dist/config.schema.json +20 -3
  6. package/dist/templates/extension/.env.example +5 -0
  7. package/dist/templates/extension/LICENSE +21 -0
  8. package/dist/templates/extension/README.md +33 -0
  9. package/dist/templates/extension/andesine.config.ts +79 -0
  10. package/dist/templates/extension/andesine.keys.json +4 -0
  11. package/dist/templates/extension/gitignore +4 -0
  12. package/dist/templates/extension/package.template.json +27 -0
  13. package/dist/templates/extension/src/backend/server.ts +85 -0
  14. package/dist/templates/extension/src/frontend/about-section.tsx +47 -0
  15. package/dist/templates/extension/src/frontend/bookmarks-panel.tsx +67 -0
  16. package/dist/templates/extension/src/frontend/hello-panel.tsx +61 -0
  17. package/dist/templates/extension/src/frontend/index.tsx +6 -0
  18. package/dist/templates/extension/src/frontend/note-view.tsx +54 -0
  19. package/dist/templates/extension/src/frontend/shout-action.tsx +57 -0
  20. package/dist/templates/extension/tsconfig.json +16 -0
  21. package/dist/templates/pages/.env.example +5 -0
  22. package/dist/templates/pages/AGENTS.md +79 -0
  23. package/dist/templates/pages/LICENSE +21 -0
  24. package/dist/templates/pages/README.md +72 -0
  25. package/dist/templates/pages/andesine.config.ts +39 -0
  26. package/dist/templates/pages/astro.config.ts +23 -0
  27. package/dist/templates/pages/gitignore +13 -0
  28. package/dist/templates/pages/package.template.json +45 -0
  29. package/dist/templates/pages/src/api/openapi.yaml +246 -0
  30. package/dist/templates/pages/src/assets/andesine.svg +1 -0
  31. package/dist/templates/pages/src/assets/andesine.ts +6 -0
  32. package/dist/templates/pages/src/assets/favicon.svg +13 -0
  33. package/dist/templates/pages/src/assets/social-dots.svg +14 -0
  34. package/dist/templates/pages/src/components/content/callout.astro +26 -0
  35. package/dist/templates/pages/src/components/content/card-grid.astro +1 -0
  36. package/dist/templates/pages/src/components/content/card.astro +31 -0
  37. package/dist/templates/pages/src/components/content/code-block.astro +34 -0
  38. package/dist/templates/pages/src/components/content/code-group.astro +13 -0
  39. package/dist/templates/pages/src/components/content/copy-button.tsx +53 -0
  40. package/dist/templates/pages/src/components/content/disclosure.astro +26 -0
  41. package/dist/templates/pages/src/components/content/figure.astro +10 -0
  42. package/dist/templates/pages/src/components/content/file-tree.astro +47 -0
  43. package/dist/templates/pages/src/components/content/index.ts +30 -0
  44. package/dist/templates/pages/src/components/content/steps.astro +16 -0
  45. package/dist/templates/pages/src/components/content/tab.astro +7 -0
  46. package/dist/templates/pages/src/components/content/tabs.astro +15 -0
  47. package/dist/templates/pages/src/components/content/tabs.tsx +99 -0
  48. package/dist/templates/pages/src/components/effects/page-scroll-shadow.tsx +27 -0
  49. package/dist/templates/pages/src/components/effects/page-scrollbar.tsx +35 -0
  50. package/dist/templates/pages/src/components/layout/call-to-action.tsx +28 -0
  51. package/dist/templates/pages/src/components/layout/footer.astro +44 -0
  52. package/dist/templates/pages/src/components/layout/group-label.tsx +34 -0
  53. package/dist/templates/pages/src/components/layout/header.astro +53 -0
  54. package/dist/templates/pages/src/components/layout/mobile-navigation.tsx +51 -0
  55. package/dist/templates/pages/src/components/layout/navigation-links.tsx +57 -0
  56. package/dist/templates/pages/src/components/layout/navigation-tree.tsx +138 -0
  57. package/dist/templates/pages/src/components/layout/outline.tsx +162 -0
  58. package/dist/templates/pages/src/components/layout/page-actions.tsx +87 -0
  59. package/dist/templates/pages/src/components/layout/powered-by.tsx +29 -0
  60. package/dist/templates/pages/src/components/layout/section-tabs.tsx +83 -0
  61. package/dist/templates/pages/src/components/layout/sidebar.tsx +65 -0
  62. package/dist/templates/pages/src/components/primitives/button.tsx +121 -0
  63. package/dist/templates/pages/src/components/primitives/card.tsx +25 -0
  64. package/dist/templates/pages/src/components/primitives/dialog.tsx +47 -0
  65. package/dist/templates/pages/src/components/primitives/input.tsx +22 -0
  66. package/dist/templates/pages/src/components/primitives/logo.tsx +41 -0
  67. package/dist/templates/pages/src/components/primitives/menu.tsx +121 -0
  68. package/dist/templates/pages/src/components/primitives/scroll-area.tsx +103 -0
  69. package/dist/templates/pages/src/components/primitives/shortcut.tsx +60 -0
  70. package/dist/templates/pages/src/components/primitives/tooltip.tsx +39 -0
  71. package/dist/templates/pages/src/components/reference/facts.astro +27 -0
  72. package/dist/templates/pages/src/components/reference/fields.astro +102 -0
  73. package/dist/templates/pages/src/components/reference/method-badge.astro +18 -0
  74. package/dist/templates/pages/src/components/reference/methods.ts +17 -0
  75. package/dist/templates/pages/src/components/reference/operation.astro +252 -0
  76. package/dist/templates/pages/src/components/reference/styles.ts +14 -0
  77. package/dist/templates/pages/src/components/search/highlighted-text.tsx +22 -0
  78. package/dist/templates/pages/src/components/search/search-answer.tsx +123 -0
  79. package/dist/templates/pages/src/components/search/search-palette.tsx +174 -0
  80. package/dist/templates/pages/src/components/search/search-results.tsx +229 -0
  81. package/dist/templates/pages/src/components/social/card.ts +77 -0
  82. package/dist/templates/pages/src/content/docs/customization/index.mdx +11 -0
  83. package/dist/templates/pages/src/content/docs/customization/styles.mdx +18 -0
  84. package/dist/templates/pages/src/content/docs/getting-started/api-reference.mdx +100 -0
  85. package/dist/templates/pages/src/content/docs/getting-started/components.mdx +156 -0
  86. package/dist/templates/pages/src/content/docs/getting-started/configuration.mdx +194 -0
  87. package/dist/templates/pages/src/content/docs/getting-started/deployment.mdx +142 -0
  88. package/dist/templates/pages/src/content/docs/getting-started/index.mdx +22 -0
  89. package/dist/templates/pages/src/content/docs/getting-started/writing-pages.mdx +35 -0
  90. package/dist/templates/pages/src/content/docs/index.mdx +21 -0
  91. package/dist/templates/pages/src/content.config.ts +1 -0
  92. package/dist/templates/pages/src/layouts/page.astro +195 -0
  93. package/dist/templates/pages/src/styles/global.css +95 -0
  94. package/dist/templates/pages/tsconfig.json +10 -0
  95. package/dist/templates/pages/uno.config.ts +168 -0
  96. package/package.json +18 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,44 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0
4
+
5
+ - Accept the `extensions` role permission (manage workspace extensions) in role commands.
6
+ - Add `andesine extensions init [directory]`, which creates an extension with a backend
7
+ from the template of the same release and generates its first backend key.
8
+ - Add `andesine extensions build`: manifest validation with the registry rules, the
9
+ frontend bundle with the generated `startExtension` call, view and icon CSS, and
10
+ `dist/extension.json` with the artifact digests and sizes.
11
+ - Add `andesine extensions keys generate`, `check`, and `revoke`. Private keys stay in
12
+ `.andesine/keys` and are never uploaded.
13
+ - Leave extension-only API operations (which need extension JWTs) out of the generated
14
+ command bindings.
15
+ - Add `andesine extensions dev`, which runs an extension on a local instance for the
16
+ signed-in member: it uploads each build with a development key, reloads it on changes,
17
+ writes the key and the instance URL to the backend's `.env`, and stops it on exit
18
+ (`--remove` uninstalls it; `--backend <url>` points it at a local backend). It refuses hosts
19
+ that are not local.
20
+ - Add `andesine extensions test-event <webhook> <type>` for sample events to the
21
+ development extension's webhooks.
22
+ - Add `andesine extensions registry check` and `registry build` for extension registry CI:
23
+ validation with the instance rules, new versions without overwriting published ones, and
24
+ the registry index.
25
+
26
+ ## 0.4.0
27
+
28
+ - Add `andesine pages init [directory]`, which creates an Andesine Pages site from
29
+ the template of the same release in a new or empty directory (default `docs`).
30
+ - Depend on `@andesine/sdk` 0.4.0. Align the version with the other Andesine
31
+ packages.
32
+
33
+ ## 0.3.0
34
+
35
+ - Add generated webhook commands for management (including bulk enable/disable and
36
+ delete), delivery history, signed tests, and single or bulk replay.
37
+
38
+ ## 0.2.0
39
+
40
+ - Add slug-path API flags, collection selection, and generated type bindings.
41
+
3
42
  ## 0.1.0
4
43
 
5
44
  - Add `types generate`, read-only `--check`, foreground `--watch`, atomic output
package/README.md CHANGED
@@ -21,6 +21,83 @@ andesine --help
21
21
  andesine --version
22
22
  ```
23
23
 
24
+ ## Documentation sites
25
+
26
+ ```sh
27
+ npx andesine pages init docs
28
+ ```
29
+
30
+ Creates an Andesine Pages site in a new or empty directory (default `docs`) from the
31
+ template of this CLI release, with `@andesine/pages` and `@andesine/ui` pinned to the
32
+ same version. Then run `npm install` and `npm run dev` in the directory. The command
33
+ needs no credentials.
34
+
35
+ ## Extensions
36
+
37
+ ```sh
38
+ npx andesine extensions init hello --name acme/hello
39
+ npx andesine extensions build
40
+ npx andesine extensions keys generate
41
+ npx andesine extensions keys check --registry https://registry.example.com/index.json
42
+ npx andesine extensions keys revoke key-2026-10-07
43
+ ```
44
+
45
+ `extensions init` creates an extension with a Solid frontend and a Node backend in a new or
46
+ empty directory (default `extension`), and generates its first backend key.
47
+
48
+ `extensions build` loads `andesine.config.ts`, validates the manifest with the same rules
49
+ as the extension registry, bundles the frontend into one script with a generated
50
+ `startExtension` call for the manifest's view entries, and generates the CSS of the views
51
+ and of the manifest icons. It writes `dist/frontend.js`, `dist/styles.css`,
52
+ `dist/icons.css`, and `dist/extension.json` (the manifest and the SHA-256 digest and size
53
+ of each file). Builds are deterministic.
54
+
55
+ `extensions keys generate` creates an Ed25519 key pair. The public key goes to
56
+ `andesine.keys.json`, which the manifest imports; the private key goes to
57
+ `.andesine/keys/<kid>.json` (mode 0600) and is never uploaded. `keys check` compares the
58
+ private key in `ANDESINE_EXTENSION_KEY` or `--key` with the manifest keys and, with
59
+ `--registry`, with the keys of the registry entry. `keys revoke` moves a key ID to
60
+ `revokedKeys`. Extension commands use `--root <directory>` (default: current directory);
61
+ only `dev` and `test-event` need credentials.
62
+
63
+ ### Local development
64
+
65
+ ```sh
66
+ npx andesine --base-url http://localhost:3333 --workspace ws_... extensions dev
67
+ npx andesine extensions test-event content entry.created
68
+ npx andesine extensions dev --remove
69
+ ```
70
+
71
+ `extensions dev` runs the extension on a local instance for the signed-in member only. It
72
+ needs `andesine auth login` against that instance (API keys cannot develop extensions), a
73
+ selected workspace, and `EXTENSIONS_DEVELOPMENT_ENABLED=true` on the local backend; it refuses
74
+ other hosts than `localhost`, `127.0.0.1`, `[::1]`, `*.localhost`, `*.local`, and `*.test`.
75
+ It creates a development key pair in `.andesine/keys/development.json`, uploads only its
76
+ public key with each build, and writes the private key and the instance URL to the backend's
77
+ environment file (`--env-file`, default `.env`). `--backend <url>` uses a local backend URL
78
+ in place of the manifest's, so the manifest can keep its HTTPS deployment URL. Each change rebuilds and reloads the
79
+ extension; a failed build waits for the next change. A build that asks for more permissions
80
+ waits for approval in Settings → Extensions. Ctrl+C stops the extension and keeps its
81
+ configuration and storage. `extensions test-event <webhook> <type>` sends a sample event to a
82
+ webhook and reports the first attempt; `extensions dev --remove` uninstalls the development
83
+ extension and deletes its state.
84
+
85
+ ### Registry
86
+
87
+ ```sh
88
+ npx andesine extensions registry check --published <site checkout>
89
+ npx andesine extensions registry build --published <site checkout> --site-url https://extensions.andesine.app
90
+ ```
91
+
92
+ For the CI of an extension registry repository (projects under `extensions/<scope>/<name>`,
93
+ each with `andesine.registry.json` for the publisher, and `registry/revocations.json`).
94
+ `registry check` validates every project with the instance rules: manifests, keys (published
95
+ keys never change, revoked keys stay revoked), version order, published versions that cannot
96
+ change and must rebuild to the same styles, revocations, and no removed extensions.
97
+ `registry build` runs the check, writes each new version's files and `version.json` next to the
98
+ published ones without overwriting them, and writes `index.json` last. Dependencies of each
99
+ project must be installed.
100
+
24
101
  ## Project configuration
25
102
 
26
103
  Run `andesine init` for guided setup. It uses Clack prompts and progress indicators
@@ -45,9 +122,10 @@ changed by flags. `--snapshot snp_…` selects a fixed snapshot instead of a cha
45
122
  Use `--include-entry-ids`, `--include-entry-paths`, and `--include-tree` to opt into
46
123
  additional types, or their `--no-…` forms to remove existing selections.
47
124
 
48
- The collection picker offers IDs for rename stability or paths for readability.
125
+ The collection picker offers IDs for rename stability, name paths, and slug paths.
49
126
  `--collection` accepts one or more IDs or decoded paths, including collection-ID
50
- anchors. The API validates them against the selected source. `--all-collections`
127
+ anchors. Use `--collection-slug-path /docs` for derived URL paths; it can be
128
+ combined with `--collection`. The API validates them against the selected source. `--all-collections`
51
129
  clears an existing selection. Empty collection selections mean all accessible
52
130
  collections, including collections added later.
53
131
 
@@ -103,7 +181,8 @@ rejected. Trailing slashes are removed.
103
181
  The default type source is the `published` channel. Use
104
182
  `{ "kind": "published", "snapshotID": "snp_example" }` for a fixed snapshot, or
105
183
  `{ "kind": "current" }` for current schemas. Channel and snapshot are exclusive.
106
- Collection selectors are IDs or paths, resolved by the API in the generation
184
+ Collection selectors are IDs, name paths, or `{ "collectionSlugPath": "/docs" }`
185
+ objects, resolved by the API in the generation
107
186
  step. An omitted or empty collection list selects all accessible collections.
108
187
  Entry IDs, entry paths, and tree types are off by default.
109
188
 
@@ -218,12 +297,14 @@ andesine api --help
218
297
  andesine api content get-tree --help
219
298
  andesine api entries create --schema
220
299
  andesine api content get-tree --channel published
221
- andesine api content get --path /Docs/Introduction --channel published --full
300
+ andesine api content get --slug-path /docs/introduction --channel published --full
222
301
  andesine api content list-entries --channel published --paginate
223
302
  andesine api search published --input @search.json --semantic false
224
303
  andesine api search ask-published-stream --input @question.json --format text
225
304
  andesine api assets upload --asset-id ast_example --file ./image.png
226
305
  andesine api type-metadata get-published --collections '["/Tutorials"]'
306
+ andesine api webhooks list
307
+ andesine api webhooks send-test --help
227
308
  ```
228
309
 
229
310
  Pass simple values as flags, or supply an API input object through `--input @file`
@@ -278,7 +359,7 @@ type without warnings. These API commands return metadata only; use
278
359
  andesine types generate
279
360
  andesine types generate --check
280
361
  andesine types generate --watch
281
- andesine types generate --source current --collection /Tutorials
362
+ andesine types generate --source current --collection-slug-path /tutorials
282
363
  andesine types generate --snapshot snp_example --include-entry-paths
283
364
  andesine init --generate
284
365
  ```
@@ -333,6 +414,10 @@ allowed block kinds. Custom element names and properties remain general because
333
414
  schemas do not define them. Defaults are not treated as value constraints.
334
415
  Empty and schema-free collections use general content types without warnings.
335
416
 
417
+ `--include-entry-paths` emits both name-path and slug-path bindings, plus named
418
+ `EntryPath` and `EntrySlugPath` unions. Collection and tree bindings include slug
419
+ paths automatically.
420
+
336
421
  Entry ID bindings, entry path bindings, and ordered tree types are separate
337
422
  opt-ins. Tree exports include their entry identities. Published trees narrow
338
423
  `content.getTree()`; current trees describe the metadata's child-ID lists only.
@@ -354,9 +439,9 @@ values, content bodies, or timestamps.
354
439
  ## Development
355
440
 
356
441
  ```sh
357
- pnpm --filter ./packages/public/cli typecheck
358
- pnpm --filter ./packages/public/cli generate:api
359
- pnpm --filter ./packages/public/cli build
442
+ pnpm exec turbo run typecheck --filter=andesine
443
+ pnpm api:generate
444
+ pnpm build --filter=andesine
360
445
  node packages/public/cli/dist/cli.js --help
361
446
  ```
362
447