streamby-core 0.37.0 → 0.39.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 (50) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/LICENSE +661 -661
  3. package/README.md +573 -512
  4. package/dist/adapters/database/connectionManager.js +124 -124
  5. package/dist/adapters/database/sql.js +1 -1
  6. package/dist/adapters/storage/s3.d.ts +3 -2
  7. package/dist/adapters/storage/s3.js +18 -5
  8. package/dist/mcp/server.js +12 -0
  9. package/dist/mcp/tools.d.ts +2 -0
  10. package/dist/mcp/tools.js +107 -14
  11. package/dist/mcp/workflowNodes.d.ts +24 -0
  12. package/dist/mcp/workflowNodes.js +48 -0
  13. package/dist/middleware/createRouter.js +2 -0
  14. package/dist/middleware/routes/apiConnection.d.ts +3 -0
  15. package/dist/middleware/routes/apiConnection.js +100 -0
  16. package/dist/middleware/routes/credential.d.ts +3 -0
  17. package/dist/middleware/routes/credential.js +80 -0
  18. package/dist/middleware/routes/deliverable.d.ts +3 -0
  19. package/dist/middleware/routes/deliverable.js +131 -0
  20. package/dist/middleware/routes/export.js +18 -0
  21. package/dist/middleware/routes/production.js +60 -67
  22. package/dist/middleware/routes/project.js +39 -11
  23. package/dist/middleware/routes/storage.js +115 -24
  24. package/dist/models/Model.js +9 -9
  25. package/dist/services/apiConnection.d.ts +18 -0
  26. package/dist/services/apiConnection.js +65 -0
  27. package/dist/services/apiTokenPermissions.js +7 -3
  28. package/dist/services/assetVersions.d.ts +48 -0
  29. package/dist/services/assetVersions.js +84 -0
  30. package/dist/services/credential.d.ts +8 -0
  31. package/dist/services/credential.js +70 -0
  32. package/dist/services/deliverables.d.ts +26 -0
  33. package/dist/services/deliverables.js +55 -0
  34. package/dist/services/mediaProcessor.js +3 -1
  35. package/dist/services/pipeline.d.ts +2 -0
  36. package/dist/services/pipeline.js +292 -0
  37. package/dist/services/production.d.ts +2 -0
  38. package/dist/services/production.js +13 -0
  39. package/dist/services/productionFields.d.ts +16 -0
  40. package/dist/services/productionFields.js +80 -0
  41. package/dist/services/signedUrls.d.ts +6 -0
  42. package/dist/services/signedUrls.js +9 -0
  43. package/dist/types/index.d.ts +7 -2
  44. package/dist/utils/crypto.d.ts +3 -0
  45. package/dist/utils/crypto.js +32 -0
  46. package/dist/utils/nosqlDb.d.ts +2 -0
  47. package/dist/utils/nosqlDb.js +11 -0
  48. package/dist/utils/sanitize.d.ts +1 -0
  49. package/dist/utils/sanitize.js +14 -0
  50. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,80 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.39.0
4
+
5
+ ### Added
6
+
7
+ - **Every resource of a project has its own list**, so a client fetches the one it shows instead
8
+ of the whole project (which still carries them all). New: `GET /projects/:id/exports` (what
9
+ each export is, as the project lists them: not its schema nor its credentials),
10
+ `GET /projects/:id/integrations` and `GET /projects/:id/origins`. They answer `{ data }`, as
11
+ the existing lists do (`connections`, `connections/db`, `connections/storage`, `members`,
12
+ `pipelines`, `workflow`), and are for the project's members. With an API token, the exports
13
+ need `exports:read` and the other two `project:read`.
14
+
15
+ ## 0.38.0
16
+
17
+ ### Added
18
+
19
+ - **Uploading and downloading files from the MCP server**, so an agent can bring files from and
20
+ to the tools it works with (Blender's or Godot's own MCP, a script). The file never goes
21
+ through the conversation: the tools give signed URLs, and the tool that has the file uploads
22
+ or downloads it directly. See the README for an example with Blender.
23
+ - `request_asset_upload` (`assets:write`): a new asset, or a new version of one, and the URL
24
+ to upload its file to.
25
+ - `get_asset_download_url` (`assets:read`): a URL to download an asset's file, its latest
26
+ version or an earlier one. `list_asset_versions` lists them.
27
+ - **Asset versions are kept, and an asset's URL doesn't change when it's replaced.** A new
28
+ version (`replace-url`, from the UI too) is still uploaded to the asset's own key, so a site
29
+ that links to the asset shows the new one. Before that, the current version is copied to a
30
+ key of its own, `<key>.v<n>.<ext>`, and recorded in `asset_versions` (an asset's first
31
+ version is recorded on upload; an older asset gets it when it's first replaced). If it can't
32
+ be copied, nothing is replaced and no upload URL is given. The `replace-url` routes answer
33
+ the new version's `versionId` and `version`. Deleting an asset deletes every key of it.
34
+ - New `StorageAdapter.copyFile`, implemented by the S3 adapter. With an adapter without it,
35
+ asking for a new version answers 501.
36
+ - StreamBy doesn't set `Cache-Control` on uploads, so a browser or a CDN may serve a replaced
37
+ asset's earlier version for a while: set it where the files are served (see the README).
38
+ - `GET /projects/:projectId/assets/:fileId/download-url` (`?versionId=` for an earlier version):
39
+ a signed URL that downloads the file with its name, wherever it's stored.
40
+ - **Deliverables**: an asset, or one of its versions, delivered for a production shot or for an
41
+ export, kept in the NoSQL database's `deliverables` collection. `GET`, `POST` and
42
+ `DELETE /projects/:projectId/deliverables` list (by `shotId` or `exportId`), mark and remove
43
+ them; `list_deliverables`, `mark_deliverable` and `remove_deliverable` in the MCP server.
44
+ Deleting a shot, a sequence, an export or an asset removes its deliverables.
45
+ - **`mcp.signedUrlTtl`**: how long the signed URLs given to an API token work, also when it
46
+ lists files. Default: 15 minutes to upload, 5 to download. A session's are as before.
47
+ - `StorageAdapter.getPresignedUploadUrl` and `getPresignedGetUrl` take how long the URL works
48
+ (and `getPresignedGetUrl` the name to download it with).
49
+
50
+ - `GET /projects/:id` answers `hasProductionData`: whether the project has production
51
+ sequences, so a client can show them even without a production node in its workflow.
52
+
53
+ ### Changed
54
+
55
+ - **Production data is checked before it's saved.** Sequences, shots and tasks need a name
56
+ that isn't blank; a status must be `todo`, `in_progress`, `review` or `done`, and a task's
57
+ priority `low`, `medium` or `high`; a shot's `assignedTo` must list active members of the
58
+ project, and a task's be one of them (or null); a due date must be a date. Otherwise they
59
+ answer 400. A shot is made only in a sequence of the project, and a task only in a shot of
60
+ it (404 otherwise).
61
+ - The MCP tools for shots take `assignedTo` as a list of user ids, as the API does, and their
62
+ statuses and priorities are listed in their schema.
63
+ - **The MCP tools take the path a user does.** `create_sequence`, `create_shot` and
64
+ `create_task` first add a production node (a Shot node) to the project's workflow when it
65
+ has none, as dropping one on the canvas does, and make nothing if it can't be added. So they
66
+ need `workflow:write` as well as `production:write`. Each tool's description says where its
67
+ result shows in the UI.
68
+
69
+ ### Fixed
70
+
71
+ - **Deleting production data leaves nothing behind.** Deleting a sequence deletes its shots'
72
+ tasks too (they were left), and deleting a project deletes its sequences, shots, tasks and
73
+ deliverables. Deleting a sequence that doesn't exist answers 404.
74
+ - **Only editors and admins upload a new version of an asset.** The `replace-url` routes let
75
+ any member of the project, a viewer included, replace an asset's file.
76
+ - The ingest job no longer records a second version of the file an upload already recorded.
77
+
3
78
  ## 0.37.0
4
79
 
5
80
  ### ⚠️ Breaking changes