@fusebase/fusebase-gate-sdk 2.3.34-sdk.4 → 2.3.34-sdk.8
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.
|
@@ -19,6 +19,18 @@ export interface CreateAppMagicLinkRequestContract {
|
|
|
19
19
|
* When false, the user must already exist or the call rejects with NotFound.
|
|
20
20
|
*/
|
|
21
21
|
addToAccessPrincipals?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Optional link lifetime in seconds. Omit for the 24h (86400) default.
|
|
24
|
+
* A provided value is clamped server-side to the 3600 (1h)..604800 (7d)
|
|
25
|
+
* range rather than rejected, so a slightly out-of-range value still yields
|
|
26
|
+
* a usable link.
|
|
27
|
+
* `0` or a negative value is NOT "no expiry" and does NOT expire the link
|
|
28
|
+
* immediately — it clamps UP to the 3600 (1h) minimum, so 1h is the
|
|
29
|
+
* shortest lifetime you can create.
|
|
30
|
+
* Whole seconds: a fractional value is floored server-side.
|
|
31
|
+
* @TJS-type integer
|
|
32
|
+
*/
|
|
33
|
+
ttlSeconds?: number;
|
|
22
34
|
/**
|
|
23
35
|
* Opaque app payload (not interpreted by the platform) stored on the link and
|
|
24
36
|
* echoed back byte-for-byte at activation. Use it to bind the link to an
|
|
@@ -51,7 +63,8 @@ export interface CreateAppMagicLinkResponseContract {
|
|
|
51
63
|
*/
|
|
52
64
|
magicLinkUrl: string;
|
|
53
65
|
/**
|
|
54
|
-
* Unix timestamp (seconds) when the link expires (createdAt +
|
|
66
|
+
* Unix timestamp (seconds) when the link expires (createdAt + ttlSeconds,
|
|
67
|
+
* defaulting to 24h when ttlSeconds is omitted).
|
|
55
68
|
*/
|
|
56
69
|
expiresAt: number;
|
|
57
70
|
}
|
|
@@ -228,6 +241,17 @@ export interface BulkAppMagicLinkInvitationContract {
|
|
|
228
241
|
* When false, the user must already exist or the invite fails with NotFound.
|
|
229
242
|
*/
|
|
230
243
|
addToAccessPrincipals?: boolean;
|
|
244
|
+
/**
|
|
245
|
+
* Optional link lifetime in seconds. Omit for the 24h (86400) default.
|
|
246
|
+
* A provided value is clamped server-side to the 3600 (1h)..604800 (7d)
|
|
247
|
+
* range rather than rejected.
|
|
248
|
+
* `0` or a negative value is NOT "no expiry" and does NOT expire the link
|
|
249
|
+
* immediately — it clamps UP to the 3600 (1h) minimum, so 1h is the
|
|
250
|
+
* shortest lifetime you can create.
|
|
251
|
+
* Whole seconds: a fractional value is floored server-side.
|
|
252
|
+
* @TJS-type integer
|
|
253
|
+
*/
|
|
254
|
+
ttlSeconds?: number;
|
|
231
255
|
/**
|
|
232
256
|
* Opaque app payload (not interpreted by the platform) stored on the link and
|
|
233
257
|
* echoed back byte-for-byte at activation.
|
package/package.json
CHANGED
package/release-notes/latest.md
CHANGED
|
@@ -1,82 +1,9 @@
|
|
|
1
|
-
# Release Notes 2.3.34-sdk.
|
|
1
|
+
# Release Notes 2.3.34-sdk.8
|
|
2
2
|
|
|
3
3
|
- Current ref: `HEAD`
|
|
4
|
-
- Previous tag: `v2.3.
|
|
5
|
-
- Generated at: 2026-07-
|
|
4
|
+
- Previous tag: `v2.3.34-sdk.8`
|
|
5
|
+
- Generated at: 2026-07-23T10:56:17.288Z
|
|
6
6
|
|
|
7
7
|
## Included Drafts
|
|
8
8
|
|
|
9
|
-
-
|
|
10
|
-
- `docs/release-notes/2026-07-13-getme-no-health-read.md` - getMe no longer requires health.read
|
|
11
|
-
|
|
12
|
-
## Summary
|
|
13
|
-
|
|
14
|
-
### Markdown (v3) notes CRUD
|
|
15
|
-
|
|
16
|
-
Add Gate contracts, controllers, and MCP-visible operations for v3 markdown notes: create, read, replace, and append markdown stored as the source of truth in note-service (no editor-service involved). Part of Notes v3 Iteration 1 (NIM-42034, NIM-42042).
|
|
17
|
-
|
|
18
|
-
### getMe no longer requires health.read
|
|
19
|
-
|
|
20
|
-
`GET /me` (`getMe`) no longer declares a required Gate permission. Any authenticated **user** or **token** subject may call it with a valid session, without `health.read` in the grant.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
## API / SDK Changes
|
|
24
|
-
|
|
25
|
-
### Markdown (v3) notes CRUD
|
|
26
|
-
|
|
27
|
-
- Added `createWorkspaceMarkdownNote` (`POST /:orgId/workspaces/:workspaceId/markdown-notes`).
|
|
28
|
-
- Added `getWorkspaceMarkdownNote` (`GET .../markdown-notes/:noteId`) returning the markdown source of truth plus `revision`.
|
|
29
|
-
- Added `updateWorkspaceMarkdownNoteContent` (`PUT .../markdown-notes/:noteId/content`) replacing the full markdown document with a required optimistic `revision` lock.
|
|
30
|
-
- Added `appendWorkspaceMarkdownNoteContent` (`POST .../markdown-notes/:noteId/content/append`) with an optional `revision` lock.
|
|
31
|
-
- Stale-revision writes return HTTP 409 with `data.errorCode = markdown_note_revision_conflict` and `data.currentRevision`.
|
|
32
|
-
- Regenerated SDK/OpenAPI artifacts include the new Notes API methods and contracts.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
## Consumer Impact
|
|
36
|
-
|
|
37
|
-
### Markdown (v3) notes CRUD
|
|
38
|
-
|
|
39
|
-
AI/MCP callers can manage markdown-native (v3) notes end-to-end without HTML conversion. Classic (v2) notes are untouched and keep using the existing notes operations. The operations depend on the note-service markdown API (NIM-42040/NIM-42041); until note-service ships it, calls fail upstream.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
## Verification
|
|
43
|
-
|
|
44
|
-
### Markdown (v3) notes CRUD
|
|
45
|
-
|
|
46
|
-
- `npm run build`
|
|
47
|
-
- `npm run build:sdk`
|
|
48
|
-
- `npm run mcp:skills:generate`
|
|
49
|
-
- `npm run mcp:skills:validate`
|
|
50
|
-
- `npm test` (unit suites for the new controller, client, and contracts)
|
|
51
|
-
|
|
52
|
-
### getMe no longer requires health.read
|
|
53
|
-
|
|
54
|
-
- `npm run test:unit -- tests/unit/authz-op-registry-bridge.test.ts`
|
|
55
|
-
- `npm run build`
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
## Follow-ups
|
|
59
|
-
|
|
60
|
-
### Markdown (v3) notes CRUD
|
|
61
|
-
|
|
62
|
-
- Switch the plain-HTTP note-service markdown client to the generated `@internal/note-service` SDK once note-service publishes the markdown endpoints.
|
|
63
|
-
- Add e2e-sdk/mcp-e2e coverage once the note-service contract is live (fake-note-service markdown routes should mirror the real service).
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
## Consumer impact
|
|
67
|
-
|
|
68
|
-
### getMe no longer requires health.read
|
|
69
|
-
|
|
70
|
-
- **Apps without `health.read` in the published grant** can call `getMe` again (service tokens, visitor browser tokens).
|
|
71
|
-
- **Apps that already include `health.read`** are unchanged.
|
|
72
|
-
- Do **not** remove `health.read` from grants solely because of this change — other ops may still require it.
|
|
73
|
-
- Continue using `FBS_ORG_ID` / `getMyOrgAccess` for org resolution; do not rely on `getMe().auth.scopes` for visitor sessions.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
## Why
|
|
77
|
-
|
|
78
|
-
### getMe no longer requires health.read
|
|
79
|
-
|
|
80
|
-
- `getMe` is the primary identity introspection op for Fusebase Apps.
|
|
81
|
-
- Requiring `health.read` caused production lockouts when app grants omitted it after `fusebase analyze gate` / `--sync-gate-permissions` (see issue `041-benchmarking-app`, escalation `2026-07-13-platform-gate-2.3.29-auth-breaking-changes.md`).
|
|
82
|
-
- `resolveOperationPermissions` now reports `required_permission: null` for `getMe`, aligned with `getHealth`.
|
|
9
|
+
- None
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
# Release Notes 2.3.34-sdk.4
|
|
2
|
-
|
|
3
|
-
- Current ref: `HEAD`
|
|
4
|
-
- Previous tag: `v2.3.28-sdk.3`
|
|
5
|
-
- Generated at: 2026-07-23T05:48:58.238Z
|
|
6
|
-
|
|
7
|
-
## Included Drafts
|
|
8
|
-
|
|
9
|
-
- `docs/release-notes/2026-07-02-markdown-notes-crud.md` - Markdown (v3) notes CRUD
|
|
10
|
-
- `docs/release-notes/2026-07-13-getme-no-health-read.md` - getMe no longer requires health.read
|
|
11
|
-
|
|
12
|
-
## Summary
|
|
13
|
-
|
|
14
|
-
### Markdown (v3) notes CRUD
|
|
15
|
-
|
|
16
|
-
Add Gate contracts, controllers, and MCP-visible operations for v3 markdown notes: create, read, replace, and append markdown stored as the source of truth in note-service (no editor-service involved). Part of Notes v3 Iteration 1 (NIM-42034, NIM-42042).
|
|
17
|
-
|
|
18
|
-
### getMe no longer requires health.read
|
|
19
|
-
|
|
20
|
-
`GET /me` (`getMe`) no longer declares a required Gate permission. Any authenticated **user** or **token** subject may call it with a valid session, without `health.read` in the grant.
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
## API / SDK Changes
|
|
24
|
-
|
|
25
|
-
### Markdown (v3) notes CRUD
|
|
26
|
-
|
|
27
|
-
- Added `createWorkspaceMarkdownNote` (`POST /:orgId/workspaces/:workspaceId/markdown-notes`).
|
|
28
|
-
- Added `getWorkspaceMarkdownNote` (`GET .../markdown-notes/:noteId`) returning the markdown source of truth plus `revision`.
|
|
29
|
-
- Added `updateWorkspaceMarkdownNoteContent` (`PUT .../markdown-notes/:noteId/content`) replacing the full markdown document with a required optimistic `revision` lock.
|
|
30
|
-
- Added `appendWorkspaceMarkdownNoteContent` (`POST .../markdown-notes/:noteId/content/append`) with an optional `revision` lock.
|
|
31
|
-
- Stale-revision writes return HTTP 409 with `data.errorCode = markdown_note_revision_conflict` and `data.currentRevision`.
|
|
32
|
-
- Regenerated SDK/OpenAPI artifacts include the new Notes API methods and contracts.
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
## Consumer Impact
|
|
36
|
-
|
|
37
|
-
### Markdown (v3) notes CRUD
|
|
38
|
-
|
|
39
|
-
AI/MCP callers can manage markdown-native (v3) notes end-to-end without HTML conversion. Classic (v2) notes are untouched and keep using the existing notes operations. The operations depend on the note-service markdown API (NIM-42040/NIM-42041); until note-service ships it, calls fail upstream.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
## Verification
|
|
43
|
-
|
|
44
|
-
### Markdown (v3) notes CRUD
|
|
45
|
-
|
|
46
|
-
- `npm run build`
|
|
47
|
-
- `npm run build:sdk`
|
|
48
|
-
- `npm run mcp:skills:generate`
|
|
49
|
-
- `npm run mcp:skills:validate`
|
|
50
|
-
- `npm test` (unit suites for the new controller, client, and contracts)
|
|
51
|
-
|
|
52
|
-
### getMe no longer requires health.read
|
|
53
|
-
|
|
54
|
-
- `npm run test:unit -- tests/unit/authz-op-registry-bridge.test.ts`
|
|
55
|
-
- `npm run build`
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
## Follow-ups
|
|
59
|
-
|
|
60
|
-
### Markdown (v3) notes CRUD
|
|
61
|
-
|
|
62
|
-
- Switch the plain-HTTP note-service markdown client to the generated `@internal/note-service` SDK once note-service publishes the markdown endpoints.
|
|
63
|
-
- Add e2e-sdk/mcp-e2e coverage once the note-service contract is live (fake-note-service markdown routes should mirror the real service).
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
## Consumer impact
|
|
67
|
-
|
|
68
|
-
### getMe no longer requires health.read
|
|
69
|
-
|
|
70
|
-
- **Apps without `health.read` in the published grant** can call `getMe` again (service tokens, visitor browser tokens).
|
|
71
|
-
- **Apps that already include `health.read`** are unchanged.
|
|
72
|
-
- Do **not** remove `health.read` from grants solely because of this change — other ops may still require it.
|
|
73
|
-
- Continue using `FBS_ORG_ID` / `getMyOrgAccess` for org resolution; do not rely on `getMe().auth.scopes` for visitor sessions.
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
## Why
|
|
77
|
-
|
|
78
|
-
### getMe no longer requires health.read
|
|
79
|
-
|
|
80
|
-
- `getMe` is the primary identity introspection op for Fusebase Apps.
|
|
81
|
-
- Requiring `health.read` caused production lockouts when app grants omitted it after `fusebase analyze gate` / `--sync-gate-permissions` (see issue `041-benchmarking-app`, escalation `2026-07-13-platform-gate-2.3.29-auth-breaking-changes.md`).
|
|
82
|
-
- `resolveOperationPermissions` now reports `required_permission: null` for `getMe`, aligned with `getHealth`.
|