@beeuni/sdk 0.2.0 → 0.3.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.
- package/README.md +19 -10
- package/dist/beeuni.esm.min.js +37 -35
- package/dist/beeuni.global.js +37 -35
- package/dist/browser/cache/idb-sync-cache.js +15 -5
- package/dist/browser/session-sync/server-transcript-mirror.d.ts +7 -1
- package/dist/browser/session-sync/server-transcript-mirror.js +30 -24
- package/dist/browser/session-sync/session-sync-registry.d.ts +3 -1
- package/dist/browser/session-sync/session-sync-registry.js +48 -3
- package/dist/browser/stores/sync-store/keep-unchanged.d.ts +4 -0
- package/dist/browser/stores/sync-store/keep-unchanged.js +34 -0
- package/dist/browser/stores/sync-store.d.ts +1 -0
- package/dist/browser/stores/sync-store.js +72 -16
- package/dist/core/attachments/prompt-attachments.d.ts +4 -0
- package/dist/core/attachments/prompt-attachments.js +34 -0
- package/dist/core/capture/rules.d.ts +17 -0
- package/dist/core/capture/rules.js +27 -0
- package/dist/core/client/beeuni.d.ts +92 -5
- package/dist/core/client/beeuni.js +2 -0
- package/dist/core/client/capture.d.ts +105 -0
- package/dist/core/client/capture.js +48 -0
- package/dist/core/client/facade-identity.d.ts +1 -0
- package/dist/core/client/facade-identity.js +1 -0
- package/dist/core/client/project-access-resources.d.ts +3 -1
- package/dist/core/client/project-access-resources.js +1 -1
- package/dist/core/client/project-operations-admin.d.ts +4 -4
- package/dist/core/client/project-operations-review.d.ts +2 -3
- package/dist/core/client/project-operations-review.js +1 -0
- package/dist/core/client/project-operations-workspace.d.ts +4 -4
- package/dist/core/client/project-operations-workspace.js +1 -1
- package/dist/core/client/project-operations.d.ts +5 -4
- package/dist/core/client/session-context.d.ts +2 -0
- package/dist/core/client/session-handle.d.ts +13 -0
- package/dist/core/client/session-lifecycle-resources.d.ts +11 -0
- package/dist/core/client/session-lifecycle-resources.js +4 -0
- package/dist/core/client/session-lifecycle-security.d.ts +2 -0
- package/dist/core/client/session-lifecycle-security.js +1 -0
- package/dist/core/client/session-readiness.d.ts +2 -0
- package/dist/core/client/session-readiness.js +20 -1
- package/dist/core/http/api-client.d.ts +1 -0
- package/dist/core/http/api-client.js +1 -0
- package/dist/core/http/config.d.ts +2 -0
- package/dist/core/http/response-error.js +26 -11
- package/dist/core/http/transport.js +6 -1
- package/dist/core/models/composer-model.d.ts +14 -0
- package/dist/core/models/composer-model.js +21 -1
- package/dist/core/rest/platform-client/capture.d.ts +363 -0
- package/dist/core/rest/platform-client/capture.js +116 -0
- package/dist/core/rest/platform-client/index.d.ts +1 -0
- package/dist/core/rest/platform-client/index.js +1 -0
- package/dist/core/rest/platform-client/lifecycle.js +18 -12
- package/dist/core/rest/platform-client/shared.d.ts +5 -0
- package/dist/core/rest/platform-client/shared.js +18 -0
- package/dist/core/rest/projects-client/account-secret-resources.d.ts +2 -1
- package/dist/core/rest/projects-client/accounts.d.ts +34 -0
- package/dist/core/rest/projects-client/accounts.js +10 -0
- package/dist/core/rest/projects-client/admin-providers.d.ts +0 -61
- package/dist/core/rest/projects-client/admin-providers.js +0 -6
- package/dist/core/rest/projects-client/agent-config.d.ts +3 -0
- package/dist/core/rest/projects-client/apps-fleet.d.ts +5 -1
- package/dist/core/rest/projects-client/apps-fleet.js +2 -2
- package/dist/core/rest/projects-client/apps.d.ts +3 -0
- package/dist/core/rest/projects-client/change-requests.d.ts +2 -0
- package/dist/core/rest/projects-client/change-requests.js +2 -0
- package/dist/core/rest/projects-client/connectors.d.ts +7 -0
- package/dist/core/rest/projects-client/connectors.js +3 -0
- package/dist/core/rest/projects-client/files.d.ts +3 -0
- package/dist/core/rest/projects-client/files.js +4 -0
- package/dist/core/rest/projects-client/gateway.d.ts +5 -0
- package/dist/core/rest/projects-client/iam-actions.d.ts +76 -0
- package/dist/core/rest/projects-client/iam-actions.js +101 -0
- package/dist/core/rest/projects-client/iam.d.ts +1 -0
- package/dist/core/rest/projects-client/iam.js +1 -0
- package/dist/core/rest/projects-client/notifications.d.ts +1 -1
- package/dist/core/rest/projects-client/notifications.js +4 -0
- package/dist/core/rest/projects-client/projects.d.ts +3 -2
- package/dist/core/rest/projects-client/projects.js +2 -3
- package/dist/core/rest/projects-client/review-items.d.ts +2 -0
- package/dist/core/rest/projects-client/review-items.js +4 -0
- package/dist/core/rest/projects-client/review.d.ts +17 -3
- package/dist/core/rest/projects-client/review.js +11 -0
- package/dist/core/rest/projects-client/secrets.d.ts +3 -0
- package/dist/core/rest/projects-client/session-attachments.js +14 -1
- package/dist/core/rest/projects-client/sessions.d.ts +29 -2
- package/dist/core/rest/projects-client/sessions.js +34 -4
- package/dist/core/runtime/runtime-rest-client.js +1 -1
- package/dist/core/runtime/runtime-types.d.ts +1 -0
- package/dist/core/session/open-bundle.d.ts +4 -4
- package/dist/core/session/open-bundle.js +29 -46
- package/dist/core/session/turn-end-watch.d.ts +47 -0
- package/dist/core/session/turn-end-watch.js +141 -0
- package/dist/core/session-log/index.d.ts +4 -0
- package/dist/core/session-log/index.js +3 -0
- package/dist/core/session-log/tool-call.d.ts +7 -2
- package/dist/core/session-log/tool-call.js +25 -6
- package/dist/core/session-log/turns/blocks.d.ts +60 -0
- package/dist/core/session-log/turns/blocks.js +124 -0
- package/dist/core/session-log/turns/history.d.ts +32 -0
- package/dist/core/session-log/turns/history.js +99 -0
- package/dist/core/session-log/turns/index.d.ts +4 -0
- package/dist/core/session-log/turns/index.js +4 -0
- package/dist/core/session-log/turns/metrics.d.ts +21 -0
- package/dist/core/session-log/turns/metrics.js +29 -0
- package/dist/core/session-log/turns/turn.d.ts +55 -0
- package/dist/core/session-log/turns/turn.js +279 -0
- package/dist/core/session-log/turns/v1-parts.d.ts +8 -0
- package/dist/core/session-log/turns/v1-parts.js +43 -0
- package/dist/core/session-log/v1-view.d.ts +5 -2
- package/dist/core/session-log/v1-view.js +86 -22
- package/dist/core/session-log/v1.js +10 -3
- package/dist/core/session-sync/saved-transcript.d.ts +15 -1
- package/dist/core/session-sync/saved-transcript.js +55 -0
- package/dist/core/session-sync/session-sync-controller.js +3 -0
- package/dist/core/stream/event-stream.js +3 -3
- package/dist/core/turns/classify.js +4 -2
- package/dist/core/turns/edit-blocks.d.ts +1 -0
- package/dist/core/turns/edit-blocks.js +15 -0
- package/dist/core/turns/segments/burst-summary.d.ts +1 -0
- package/dist/core/turns/segments/burst-summary.js +24 -0
- package/dist/core/turns/segments/group-steps.d.ts +4 -3
- package/dist/core/turns/segments/group-steps.js +9 -6
- package/dist/core/turns/segments/narration.d.ts +5 -4
- package/dist/core/turns/segments/narration.js +12 -3
- package/dist/core/turns/segments/session-activity-groups.d.ts +2 -1
- package/dist/core/turns/segments/session-activity-groups.js +3 -1
- package/dist/core/turns/segments/step-label.d.ts +2 -1
- package/dist/core/turns/segments/step-label.js +3 -1
- package/dist/core/turns/segments/working-turn.d.ts +4 -2
- package/dist/core/turns/segments/working-turn.js +9 -8
- package/dist/core/turns/tool-kind.d.ts +1 -1
- package/dist/core/turns/tool-kind.js +3 -2
- package/dist/core/turns/tool-registry.js +1 -0
- package/dist/core/turns/tools/tool-meta.d.ts +1 -1
- package/dist/core/turns/tools/tool-meta.js +3 -2
- package/dist/core/turns/view-model.js +1 -13
- package/dist/genui/catalog.d.ts +28 -0
- package/dist/genui/catalog.js +396 -0
- package/dist/genui/expansion.d.ts +3 -0
- package/dist/genui/expansion.js +295 -0
- package/dist/genui/fence-entry.d.ts +2 -0
- package/dist/genui/fence-entry.js +1 -0
- package/dist/genui/fence.d.ts +21 -0
- package/dist/genui/fence.js +138 -0
- package/dist/genui/index.d.ts +6 -0
- package/dist/genui/index.js +6 -0
- package/dist/genui/markdown.d.ts +12 -0
- package/dist/genui/markdown.js +104 -0
- package/dist/genui/parse.d.ts +6 -0
- package/dist/genui/parse.js +75 -0
- package/dist/genui/prompt.d.ts +2 -0
- package/dist/genui/prompt.js +206 -0
- package/dist/genui/react/default-components.d.ts +2 -0
- package/dist/genui/react/default-components.js +72 -0
- package/dist/genui/react/default-components.test.d.ts +1 -0
- package/dist/genui/react/default-components.test.js +94 -0
- package/dist/genui/react/genui-block-disabled.test.d.ts +1 -0
- package/dist/genui/react/genui-block-disabled.test.js +50 -0
- package/dist/genui/react/genui-block.d.ts +28 -0
- package/dist/genui/react/genui-block.js +91 -0
- package/dist/genui/react/genui-block.test.d.ts +1 -0
- package/dist/genui/react/genui-block.test.js +205 -0
- package/dist/genui/react/index.d.ts +2 -0
- package/dist/genui/react/index.js +2 -0
- package/dist/genui/share.d.ts +5 -0
- package/dist/genui/share.js +30 -0
- package/dist/genui/test-fixtures.d.ts +2 -0
- package/dist/genui/test-fixtures.js +16 -0
- package/dist/genui/types.d.ts +29 -0
- package/dist/genui/types.js +1 -0
- package/dist/genui/urls.d.ts +1 -0
- package/dist/genui/urls.js +18 -0
- package/dist/genui/validate.d.ts +9 -0
- package/dist/genui/validate.js +116 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.js +2 -2
- package/dist/internal/connector-catalog.d.ts +1 -0
- package/dist/platform/ui.d.ts +8 -2
- package/dist/platform/ui.js +19 -4
- package/dist/react/chat/use-chat-turns.d.ts +1 -1
- package/dist/react/human-presence.d.ts +9 -0
- package/dist/react/human-presence.js +12 -0
- package/dist/react/index.d.ts +4 -0
- package/dist/react/index.js +4 -0
- package/dist/react/opencode.d.ts +1 -1
- package/dist/react/opencode.js +1 -1
- package/dist/react/query-contracts.d.ts +6 -0
- package/dist/react/query-contracts.js +6 -0
- package/dist/react/query-keys.d.ts +17 -1
- package/dist/react/query-keys.js +24 -1
- package/dist/react/reset-identity-state.js +2 -0
- package/dist/react/session-cache-write.d.ts +1 -0
- package/dist/react/session-cache-write.js +20 -0
- package/dist/react/session-transcript-subscription.js +1 -1
- package/dist/react/sign-in-with-beeuni.d.ts +5 -5
- package/dist/react/turn-end-handoff.d.ts +13 -0
- package/dist/react/turn-end-handoff.js +101 -0
- package/dist/react/use-admin-providers.d.ts +0 -3
- package/dist/react/use-admin-providers.js +1 -11
- package/dist/react/use-capture.d.ts +47 -0
- package/dist/react/use-capture.js +173 -0
- package/dist/react/use-feature-flag.js +1 -0
- package/dist/react/use-opencode-events/handle-interaction-event.js +8 -3
- package/dist/react/use-opencode-events/handle-session-event.js +13 -8
- package/dist/react/use-opencode-events/handler-context.d.ts +1 -0
- package/dist/react/use-opencode-events/helpers.d.ts +1 -0
- package/dist/react/use-opencode-events/helpers.js +11 -1
- package/dist/react/use-opencode-local.d.ts +5 -1
- package/dist/react/use-opencode-local.js +15 -2
- package/dist/react/use-opencode-sessions/commands.d.ts +11 -1
- package/dist/react/use-opencode-sessions/commands.js +21 -1
- package/dist/react/use-opencode-sessions/permissions.js +28 -1
- package/dist/react/use-project-sessions.d.ts +1 -1
- package/dist/react/use-project-sessions.js +6 -5
- package/dist/react/use-prompt-attachments.js +1 -0
- package/dist/react/use-review-summary.d.ts +13 -0
- package/dist/react/use-review-summary.js +32 -0
- package/dist/react/use-runtime-reconnect.js +2 -2
- package/dist/react/use-session-list-state.d.ts +6 -0
- package/dist/react/use-session-list-state.js +33 -0
- package/dist/react/use-session-log.d.ts +3 -2
- package/dist/react/use-session-log.js +26 -17
- package/dist/react/use-session-messages.d.ts +2 -1
- package/dist/react/use-session-messages.js +15 -14
- package/dist/react/use-session-stream.js +12 -1
- package/dist/react/use-session-sync.d.ts +2 -2
- package/dist/react/use-session-sync.js +10 -8
- package/dist/react/use-session-transcript-history.js +2 -12
- package/dist/react/use-session-working.d.ts +2 -0
- package/dist/react/use-session-working.js +10 -0
- package/dist/react/use-session.d.ts +6 -0
- package/dist/react/use-session.js +87 -7
- package/package.json +49 -3
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { backendApi } from '../../http/api-client.js';
|
|
2
|
+
import { unwrap } from '../projects-client/shared.js';
|
|
3
|
+
export * from '../../capture/rules.js';
|
|
4
|
+
export function captureHealthBucket(device) {
|
|
5
|
+
const { state, idle } = device.health;
|
|
6
|
+
if (state === 'healthy')
|
|
7
|
+
return idle ? 'idle' : 'recording';
|
|
8
|
+
return state;
|
|
9
|
+
}
|
|
10
|
+
const base = (accountId) => `/accounts/${accountId}/capture`;
|
|
11
|
+
function captureQuery(params) {
|
|
12
|
+
const search = new URLSearchParams();
|
|
13
|
+
for (const [key, value] of Object.entries(params)) {
|
|
14
|
+
if (value !== undefined && value !== '')
|
|
15
|
+
search.set(key, String(value));
|
|
16
|
+
}
|
|
17
|
+
const query = search.toString();
|
|
18
|
+
return query ? `?${query}` : '';
|
|
19
|
+
}
|
|
20
|
+
const searchParams = (query) => captureQuery({
|
|
21
|
+
q: query.q,
|
|
22
|
+
kinds: query.kinds?.join(','),
|
|
23
|
+
app: query.app,
|
|
24
|
+
limit: query.limit,
|
|
25
|
+
from: query.from,
|
|
26
|
+
to: query.to,
|
|
27
|
+
user_id: query.userId,
|
|
28
|
+
device_id: query.deviceId,
|
|
29
|
+
scope: query.scope,
|
|
30
|
+
});
|
|
31
|
+
const windowParams = (query = {}) => ({
|
|
32
|
+
day: query.day,
|
|
33
|
+
from: query.from,
|
|
34
|
+
to: query.to,
|
|
35
|
+
user_id: query.userId,
|
|
36
|
+
device_id: query.deviceId,
|
|
37
|
+
display_id: query.displayId,
|
|
38
|
+
});
|
|
39
|
+
export async function listCaptureDevices(accountId, opts = {}) {
|
|
40
|
+
return unwrap(await backendApi.get(`${base(accountId)}/devices${captureQuery({ user_id: opts.userId, scope: opts.scope })}`));
|
|
41
|
+
}
|
|
42
|
+
export async function revokeCaptureDevice(accountId, deviceId) {
|
|
43
|
+
return unwrap(await backendApi.delete(`${base(accountId)}/devices/${deviceId}`));
|
|
44
|
+
}
|
|
45
|
+
export async function linkCaptureDevice(accountId, deviceId, userId) {
|
|
46
|
+
return unwrap(await backendApi.put(`${base(accountId)}/devices/${deviceId}/link`, { user_id: userId }));
|
|
47
|
+
}
|
|
48
|
+
export async function listCaptureEnrollmentTokens(accountId) {
|
|
49
|
+
return unwrap(await backendApi.get(`${base(accountId)}/enrollment-tokens`));
|
|
50
|
+
}
|
|
51
|
+
export async function createCaptureEnrollmentToken(accountId, input) {
|
|
52
|
+
return unwrap(await backendApi.post(`${base(accountId)}/enrollment-tokens`, input));
|
|
53
|
+
}
|
|
54
|
+
export async function revokeCaptureEnrollmentToken(accountId, tokenId) {
|
|
55
|
+
return unwrap(await backendApi.delete(`${base(accountId)}/enrollment-tokens/${tokenId}`));
|
|
56
|
+
}
|
|
57
|
+
export async function listCaptureEnrollments(accountId, opts = {}) {
|
|
58
|
+
return unwrap(await backendApi.get(`${base(accountId)}/enrollments${captureQuery({ status: opts.status })}`));
|
|
59
|
+
}
|
|
60
|
+
export async function approveCaptureEnrollment(accountId, enrollmentId, userId) {
|
|
61
|
+
return unwrap(await backendApi.post(`${base(accountId)}/enrollments/${enrollmentId}/approve`, userId ? { user_id: userId } : {}));
|
|
62
|
+
}
|
|
63
|
+
export async function denyCaptureEnrollment(accountId, enrollmentId) {
|
|
64
|
+
return unwrap(await backendApi.post(`${base(accountId)}/enrollments/${enrollmentId}/deny`, {}));
|
|
65
|
+
}
|
|
66
|
+
export async function getCapturePolicy(accountId) {
|
|
67
|
+
return unwrap(await backendApi.get(`${base(accountId)}/policy`));
|
|
68
|
+
}
|
|
69
|
+
export async function setCapturePolicy(accountId, policy) {
|
|
70
|
+
return unwrap(await backendApi.put(`${base(accountId)}/policy`, { policy }));
|
|
71
|
+
}
|
|
72
|
+
export async function getCaptureTimeline(accountId, query = {}) {
|
|
73
|
+
return unwrap(await backendApi.get(`${base(accountId)}/timeline${captureQuery(windowParams(query))}`));
|
|
74
|
+
}
|
|
75
|
+
export async function getCaptureTimelineItems(accountId, query = {}) {
|
|
76
|
+
return unwrap(await backendApi.get(`${base(accountId)}/timeline/items${captureQuery(windowParams(query))}`));
|
|
77
|
+
}
|
|
78
|
+
export async function getCaptureDays(accountId, query = {}) {
|
|
79
|
+
return unwrap(await backendApi.get(`${base(accountId)}/days${captureQuery({ tz: query.tz, user_id: query.userId, device_id: query.deviceId })}`));
|
|
80
|
+
}
|
|
81
|
+
export async function searchCapture(accountId, query) {
|
|
82
|
+
return unwrap(await backendApi.get(`${base(accountId)}/search${searchParams(query)}`));
|
|
83
|
+
}
|
|
84
|
+
export async function getCaptureFrame(accountId, frameId, opts = {}) {
|
|
85
|
+
return unwrap(await backendApi.get(`${base(accountId)}/frames/${frameId}${captureQuery({ user_id: opts.userId })}`));
|
|
86
|
+
}
|
|
87
|
+
export async function getCaptureChunkMedia(accountId, chunkId, opts = {}) {
|
|
88
|
+
return unwrap(await backendApi.get(`${base(accountId)}/chunks/${chunkId}/media${captureQuery({ user_id: opts.userId })}`));
|
|
89
|
+
}
|
|
90
|
+
export async function getCaptureAssetUrl(accountId, deviceId, name) {
|
|
91
|
+
return unwrap(await backendApi.get(`${base(accountId)}/devices/${deviceId}/assets/${encodeURIComponent(name)}`));
|
|
92
|
+
}
|
|
93
|
+
export async function getCaptureDeviceGrant(userCode) {
|
|
94
|
+
return unwrap(await backendApi.get(`/capture/device/grants/${encodeURIComponent(userCode)}`));
|
|
95
|
+
}
|
|
96
|
+
export async function approveCaptureDeviceGrant(userCode, accountId) {
|
|
97
|
+
return unwrap(await backendApi.post(`/capture/device/grants/${encodeURIComponent(userCode)}/approve`, accountId ? { account_id: accountId } : {}));
|
|
98
|
+
}
|
|
99
|
+
export async function denyCaptureDeviceGrant(userCode) {
|
|
100
|
+
return unwrap(await backendApi.post(`/capture/device/grants/${encodeURIComponent(userCode)}/deny`, {}));
|
|
101
|
+
}
|
|
102
|
+
export async function getCaptureWorkspace(accountId) {
|
|
103
|
+
return unwrap(await backendApi.get(base(accountId)));
|
|
104
|
+
}
|
|
105
|
+
export async function setCaptureEnabled(accountId, enabled) {
|
|
106
|
+
return unwrap(await backendApi.patch(base(accountId), { enabled }));
|
|
107
|
+
}
|
|
108
|
+
export async function searchMyCapture(query) {
|
|
109
|
+
return unwrap(await backendApi.get(`/capture/me/search${searchParams(query)}`));
|
|
110
|
+
}
|
|
111
|
+
export async function getMyCaptureTimeline(query = {}) {
|
|
112
|
+
return unwrap(await backendApi.get(`/capture/me/timeline${captureQuery(windowParams(query))}`));
|
|
113
|
+
}
|
|
114
|
+
export async function getMyCaptureFrame(frameId) {
|
|
115
|
+
return unwrap(await backendApi.get(`/capture/me/frames/${frameId}`));
|
|
116
|
+
}
|
|
@@ -9,3 +9,4 @@ export { getLatestSandboxVersion, getFullChangelog, getAllVersions, type Changel
|
|
|
9
9
|
export { HostBoundaryError, listPublicMarketplaceItems, listPublicMarketplaces, getPublicMarketplaceItem, getPublicMarketplaceItemFile, checkAccessEmail, submitAccessRequest, recordPlatformLogout, getOAuthConsentRequest, submitOAuthConsent, getConnectorSetupLink, startConnectorSetupLink, finalizeConnectorSetupLink, getSecretSetupLink, submitSecretSetupLink, getPublicShareByToken, startSessionWithToken, submitDemoRequest, downloadAccountAudit, buildPublicTemplateUrl, getPublicTemplate, type HostRequestOptions, type PublicMarketplaceQuery, type OAuthConsentRequest, type ConnectorSetupLinkInfo, type ConnectorSetupLinkStart, type ConnectorSetupLinkFinalize, type FinalizeConnectorSetupLinkInput, type SecretSetupLinkInfo, type SecretWithheldReason, type SecretSetupLinkWithheld, type SecretSetupLinkSubmitResult, type AccountAuditExport, } from './host-boundary.js';
|
|
10
10
|
export * from './connector-setup.js';
|
|
11
11
|
export * from './client-policy.js';
|
|
12
|
+
export * from './capture.js';
|
|
@@ -9,3 +9,4 @@ export { getLatestSandboxVersion, getFullChangelog, getAllVersions, } from './up
|
|
|
9
9
|
export { HostBoundaryError, listPublicMarketplaceItems, listPublicMarketplaces, getPublicMarketplaceItem, getPublicMarketplaceItemFile, checkAccessEmail, submitAccessRequest, recordPlatformLogout, getOAuthConsentRequest, submitOAuthConsent, getConnectorSetupLink, startConnectorSetupLink, finalizeConnectorSetupLink, getSecretSetupLink, submitSecretSetupLink, getPublicShareByToken, startSessionWithToken, submitDemoRequest, downloadAccountAudit, buildPublicTemplateUrl, getPublicTemplate, } from './host-boundary.js';
|
|
10
10
|
export * from './connector-setup.js';
|
|
11
11
|
export * from './client-policy.js';
|
|
12
|
+
export * from './capture.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { createProjectSession, startProjectSession, listProjects, restartProjectSession, stopProjectSession, } from '../projects-client/index.js';
|
|
1
|
+
import { createProjectSession, getProject, startProjectSession, listProjects, restartProjectSession, stopProjectSession, } from '../projects-client/index.js';
|
|
2
2
|
import { backendApi } from '../../http/api-client.js';
|
|
3
|
-
import { findProjectSessionSandbox, listProjectSessionSandboxes, projectSessionToSandboxInfo, normalizeSandboxId, } from './shared.js';
|
|
3
|
+
import { findProjectSessionSandbox, getSessionById, listProjectSessionSandboxes, projectSessionToSandboxInfo, normalizeSandboxId, resolveProjectSessionId, } from './shared.js';
|
|
4
4
|
export async function getProviders() {
|
|
5
5
|
const response = await backendApi.get('/setup/sandbox-providers');
|
|
6
6
|
if (response.error)
|
|
@@ -34,12 +34,18 @@ export async function getSandboxById(sandboxId) {
|
|
|
34
34
|
const normalizedSandboxId = normalizeSandboxId(sandboxId);
|
|
35
35
|
if (!normalizedSandboxId)
|
|
36
36
|
return null;
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
try {
|
|
38
|
+
const session = await getSessionById(normalizedSandboxId);
|
|
39
|
+
if (!session)
|
|
40
|
+
return (await findProjectSessionSandbox(normalizedSandboxId))?.sandbox ?? null;
|
|
41
|
+
return projectSessionToSandboxInfo(await getProject(session.project_id), session, null);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
39
46
|
}
|
|
40
47
|
export async function renameSandbox(sandboxId, _name) {
|
|
41
|
-
|
|
42
|
-
if (!row)
|
|
48
|
+
if (!(await resolveProjectSessionId(sandboxId)))
|
|
43
49
|
throw new Error('Project session sandbox not found');
|
|
44
50
|
throw new Error('Renaming project-session sandboxes is not exposed by the current API');
|
|
45
51
|
}
|
|
@@ -59,18 +65,18 @@ export async function restartSandbox(sandboxId) {
|
|
|
59
65
|
if (!sandboxId) {
|
|
60
66
|
throw new Error('No sandbox selected for workload restart');
|
|
61
67
|
}
|
|
62
|
-
const
|
|
63
|
-
if (!
|
|
68
|
+
const target = await resolveProjectSessionId(sandboxId);
|
|
69
|
+
if (!target)
|
|
64
70
|
throw new Error('Project session sandbox not found');
|
|
65
|
-
await restartProjectSession(
|
|
71
|
+
await restartProjectSession(target.projectId, target.sessionId);
|
|
66
72
|
}
|
|
67
73
|
export async function stopSandbox(sandboxId) {
|
|
68
74
|
if (!sandboxId)
|
|
69
75
|
throw new Error('No sandbox selected to stop');
|
|
70
|
-
const
|
|
71
|
-
if (!
|
|
76
|
+
const target = await resolveProjectSessionId(sandboxId);
|
|
77
|
+
if (!target)
|
|
72
78
|
throw new Error('Project session sandbox not found');
|
|
73
|
-
await stopProjectSession(
|
|
79
|
+
await stopProjectSession(target.projectId, target.sessionId);
|
|
74
80
|
}
|
|
75
81
|
export async function cancelSandbox(sandboxId) {
|
|
76
82
|
throw new Error('Cancellation is not exposed for project-session sandboxes');
|
|
@@ -10,6 +10,11 @@ export declare function listProjectSessionSandboxes(): Promise<Array<{
|
|
|
10
10
|
runtime: ProjectSessionSandbox | null;
|
|
11
11
|
sandbox: SandboxInfo;
|
|
12
12
|
}>>;
|
|
13
|
+
export declare function getSessionById(sessionId: string): Promise<ProjectSession | null>;
|
|
14
|
+
export declare function resolveProjectSessionId(id: string): Promise<{
|
|
15
|
+
projectId: string;
|
|
16
|
+
sessionId: string;
|
|
17
|
+
} | null>;
|
|
13
18
|
export declare function findProjectSessionSandbox(sandboxId?: string): Promise<{
|
|
14
19
|
project: BeeuniProject;
|
|
15
20
|
session: ProjectSession;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { backendApi } from '../../http/api-client.js';
|
|
1
2
|
import { platformConfig } from '../../http/config.js';
|
|
2
3
|
import { safeEnv } from '../../http/env.js';
|
|
3
4
|
import { stripTrailingSlashes } from '../../../platform/strings.js';
|
|
@@ -88,6 +89,23 @@ export async function listProjectSessionSandboxes() {
|
|
|
88
89
|
return Date.parse(b.sandbox.updated_at) - Date.parse(a.sandbox.updated_at);
|
|
89
90
|
});
|
|
90
91
|
}
|
|
92
|
+
export async function getSessionById(sessionId) {
|
|
93
|
+
const response = await backendApi.get(`/sessions/${encodeURIComponent(sessionId)}`, {
|
|
94
|
+
showErrors: false,
|
|
95
|
+
});
|
|
96
|
+
if (response.success && response.data)
|
|
97
|
+
return response.data;
|
|
98
|
+
if (response.error?.status === 400 || response.error?.status === 404)
|
|
99
|
+
return null;
|
|
100
|
+
throw response.error ?? new Error('Session request failed');
|
|
101
|
+
}
|
|
102
|
+
export async function resolveProjectSessionId(id) {
|
|
103
|
+
const session = await getSessionById(id);
|
|
104
|
+
if (session)
|
|
105
|
+
return { projectId: session.project_id, sessionId: session.session_id };
|
|
106
|
+
const row = await findProjectSessionSandbox(id);
|
|
107
|
+
return row ? { projectId: row.project.project_id, sessionId: row.session.session_id } : null;
|
|
108
|
+
}
|
|
91
109
|
export async function findProjectSessionSandbox(sandboxId) {
|
|
92
110
|
const rows = await listProjectSessionSandboxes();
|
|
93
111
|
if (!sandboxId)
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { SecretConsumer, SecretDeliveryStrategy } from './secrets.js';
|
|
1
|
+
import type { SecretConsumer, SecretDeliveryStrategy, SecretValueStatus } from './secrets.js';
|
|
2
2
|
export interface AccountSecretResource {
|
|
3
3
|
secret_id: string;
|
|
4
4
|
account_id: string;
|
|
@@ -17,6 +17,7 @@ export interface AccountSecretResource {
|
|
|
17
17
|
updated_at: string;
|
|
18
18
|
granted_user_ids: string[];
|
|
19
19
|
can_use: boolean;
|
|
20
|
+
status?: SecretValueStatus;
|
|
20
21
|
}
|
|
21
22
|
export interface CreateAccountSecretResourceInput {
|
|
22
23
|
project_id?: string;
|
|
@@ -202,6 +202,40 @@ export declare function acceptAccountInvite(inviteId: string): Promise<{
|
|
|
202
202
|
role: string;
|
|
203
203
|
}>;
|
|
204
204
|
}>;
|
|
205
|
+
export type AccountInviteLanding = {
|
|
206
|
+
kind: 'project';
|
|
207
|
+
projectId: string;
|
|
208
|
+
accountId: string;
|
|
209
|
+
} | {
|
|
210
|
+
kind: 'account';
|
|
211
|
+
accountId: string;
|
|
212
|
+
};
|
|
213
|
+
export declare function accountInviteLanding(accepted: {
|
|
214
|
+
account_id: string;
|
|
215
|
+
bootstrap_grants_applied?: ReadonlyArray<{
|
|
216
|
+
project_id: string;
|
|
217
|
+
}>;
|
|
218
|
+
}, invite?: {
|
|
219
|
+
projects?: ReadonlyArray<{
|
|
220
|
+
project_id: string;
|
|
221
|
+
}>;
|
|
222
|
+
} | null): AccountInviteLanding;
|
|
223
|
+
export declare function acceptAccountInviteAndLand(inviteId: string, invite?: {
|
|
224
|
+
projects?: ReadonlyArray<{
|
|
225
|
+
project_id: string;
|
|
226
|
+
}>;
|
|
227
|
+
} | null): Promise<{
|
|
228
|
+
accepted: {
|
|
229
|
+
account_id: string;
|
|
230
|
+
account_role: AccountRole;
|
|
231
|
+
already_accepted?: boolean;
|
|
232
|
+
bootstrap_grants_applied?: Array<{
|
|
233
|
+
project_id: string;
|
|
234
|
+
role: string;
|
|
235
|
+
}>;
|
|
236
|
+
};
|
|
237
|
+
landing: AccountInviteLanding;
|
|
238
|
+
}>;
|
|
205
239
|
export declare function declineAccountInvite(inviteId: string): Promise<{
|
|
206
240
|
ok: boolean;
|
|
207
241
|
}>;
|
|
@@ -58,6 +58,16 @@ export async function describeAccountInvite(inviteId) {
|
|
|
58
58
|
export async function acceptAccountInvite(inviteId) {
|
|
59
59
|
return unwrap(await backendApi.post(`/account-invites/${inviteId}/accept`, {}));
|
|
60
60
|
}
|
|
61
|
+
export function accountInviteLanding(accepted, invite) {
|
|
62
|
+
const project = accepted.bootstrap_grants_applied?.[0] ?? invite?.projects?.[0];
|
|
63
|
+
return project
|
|
64
|
+
? { kind: 'project', projectId: project.project_id, accountId: accepted.account_id }
|
|
65
|
+
: { kind: 'account', accountId: accepted.account_id };
|
|
66
|
+
}
|
|
67
|
+
export async function acceptAccountInviteAndLand(inviteId, invite) {
|
|
68
|
+
const accepted = await acceptAccountInvite(inviteId);
|
|
69
|
+
return { accepted, landing: accountInviteLanding(accepted, invite) };
|
|
70
|
+
}
|
|
61
71
|
export async function declineAccountInvite(inviteId) {
|
|
62
72
|
return unwrap(await backendApi.post(`/account-invites/${inviteId}/decline`, {}));
|
|
63
73
|
}
|
|
@@ -68,64 +68,3 @@ export declare function getAdminProviderFallback(): Promise<{
|
|
|
68
68
|
enabled: boolean;
|
|
69
69
|
}>;
|
|
70
70
|
export declare function setAdminProviderFallback<T = unknown>(enabled: boolean): Promise<T>;
|
|
71
|
-
export type AdminBootMode = 'standard' | 'artifacts' | 'volume';
|
|
72
|
-
export interface AdminBootModeRule {
|
|
73
|
-
mode: AdminBootMode;
|
|
74
|
-
standardFallback: boolean;
|
|
75
|
-
}
|
|
76
|
-
export interface AdminVolumesPolicy {
|
|
77
|
-
enabled: boolean;
|
|
78
|
-
percent: number;
|
|
79
|
-
orgs: Record<string, boolean>;
|
|
80
|
-
}
|
|
81
|
-
export interface AdminBootModePolicy {
|
|
82
|
-
volumes: AdminVolumesPolicy;
|
|
83
|
-
killSwitch: boolean;
|
|
84
|
-
default: AdminBootModeRule;
|
|
85
|
-
orgs: Record<string, AdminBootModeRule>;
|
|
86
|
-
fallback: {
|
|
87
|
-
volumeAttempts: number;
|
|
88
|
-
artifactsAttempts: number;
|
|
89
|
-
};
|
|
90
|
-
artifacts: string | null;
|
|
91
|
-
}
|
|
92
|
-
export interface AdminBootModes {
|
|
93
|
-
stored: boolean;
|
|
94
|
-
policy: AdminBootModePolicy;
|
|
95
|
-
orgs: Array<{
|
|
96
|
-
accountId: string;
|
|
97
|
-
name: string | null;
|
|
98
|
-
volumes: boolean | null;
|
|
99
|
-
rule: AdminBootModeRule | null;
|
|
100
|
-
}>;
|
|
101
|
-
env: {
|
|
102
|
-
bootArtifacts: string | null;
|
|
103
|
-
volumeOff: boolean;
|
|
104
|
-
driveSync: boolean;
|
|
105
|
-
};
|
|
106
|
-
providers: {
|
|
107
|
-
allowed: string[];
|
|
108
|
-
default: string;
|
|
109
|
-
volumeProvider: string;
|
|
110
|
-
volumeProviderConfigured: boolean;
|
|
111
|
-
};
|
|
112
|
-
stats: {
|
|
113
|
-
since: string;
|
|
114
|
-
modes: {
|
|
115
|
-
mode: AdminBootMode;
|
|
116
|
-
requested: number;
|
|
117
|
-
booted: number;
|
|
118
|
-
}[];
|
|
119
|
-
fallbacks: {
|
|
120
|
-
from: AdminBootMode;
|
|
121
|
-
to: AdminBootMode;
|
|
122
|
-
reason: string;
|
|
123
|
-
count: number;
|
|
124
|
-
sample: string | null;
|
|
125
|
-
}[];
|
|
126
|
-
} | {
|
|
127
|
-
error: string;
|
|
128
|
-
};
|
|
129
|
-
}
|
|
130
|
-
export declare function getAdminBootModes(): Promise<AdminBootModes>;
|
|
131
|
-
export declare function setAdminBootModes(policy: AdminBootModePolicy): Promise<AdminBootModes>;
|
|
@@ -31,9 +31,3 @@ export function setAdminProviderFallback(enabled) {
|
|
|
31
31
|
.put('/admin/api/provider-fallback', { enabled })
|
|
32
32
|
.then((response) => unwrap(response));
|
|
33
33
|
}
|
|
34
|
-
export function getAdminBootModes() {
|
|
35
|
-
return backendApi.get('/admin/api/boot-modes').then((response) => unwrap(response));
|
|
36
|
-
}
|
|
37
|
-
export function setAdminBootModes(policy) {
|
|
38
|
-
return backendApi.put('/admin/api/boot-modes', policy).then((response) => unwrap(response));
|
|
39
|
-
}
|
|
@@ -26,6 +26,9 @@ export interface AgentConfigBlock {
|
|
|
26
26
|
connectors_personal?: string[];
|
|
27
27
|
secrets?: AgentGrantSetV2;
|
|
28
28
|
skills?: AgentGrantSetV2;
|
|
29
|
+
subagents?: AgentGrantSetV2;
|
|
30
|
+
commands?: AgentGrantSetV2;
|
|
31
|
+
extensions?: AgentGrantSetV2;
|
|
29
32
|
apps?: AgentGrantSetV2;
|
|
30
33
|
beeuni_permissions?: AgentGrantSetV2;
|
|
31
34
|
beeuni_cli?: AgentGrantSetV2;
|
|
@@ -27,6 +27,8 @@ export interface AppVolume {
|
|
|
27
27
|
process_group: string;
|
|
28
28
|
machine_id: string | null;
|
|
29
29
|
size_gb: number;
|
|
30
|
+
used_bytes?: number | null;
|
|
31
|
+
last_commit_at?: string | null;
|
|
30
32
|
status: 'creating' | 'ready' | 'destroying' | 'destroyed' | 'error';
|
|
31
33
|
attached: boolean;
|
|
32
34
|
snapshot_retention_days: number;
|
|
@@ -61,7 +63,9 @@ export declare const startAppMachine: (projectId: string, appId: string, machine
|
|
|
61
63
|
export declare const stopAppMachine: (projectId: string, appId: string, machineId: string) => Promise<AppMachine[]>;
|
|
62
64
|
export declare const restartAppMachine: (projectId: string, appId: string, machineId: string) => Promise<AppMachine[]>;
|
|
63
65
|
export declare function destroyAppMachine(projectId: string, appId: string, machineId: string): Promise<AppMachine[]>;
|
|
64
|
-
export declare function scaleApp(projectId: string, appId: string, count: Record<string, number
|
|
66
|
+
export declare function scaleApp(projectId: string, appId: string, count: Record<string, number>, options?: {
|
|
67
|
+
newVolumes?: boolean;
|
|
68
|
+
}): Promise<{
|
|
65
69
|
scale: Record<string, number>;
|
|
66
70
|
machines: AppMachine[];
|
|
67
71
|
}>;
|
|
@@ -13,8 +13,8 @@ export const restartAppMachine = (projectId, appId, machineId) => machineAction(
|
|
|
13
13
|
export async function destroyAppMachine(projectId, appId, machineId) {
|
|
14
14
|
return unwrap(await backendApi.delete(`${app(projectId, appId)}/machines/${machineId}`), 'Failed to destroy the machine').machines;
|
|
15
15
|
}
|
|
16
|
-
export async function scaleApp(projectId, appId, count) {
|
|
17
|
-
return unwrap(await backendApi.put(`${app(projectId, appId)}/scale`, { count }), 'Failed to scale the App');
|
|
16
|
+
export async function scaleApp(projectId, appId, count, options = {}) {
|
|
17
|
+
return unwrap(await backendApi.put(`${app(projectId, appId)}/scale`, { count, ...(options.newVolumes ? { new_volumes: true } : {}) }), 'Failed to scale the App');
|
|
18
18
|
}
|
|
19
19
|
export async function execInApp(projectId, appId, input) {
|
|
20
20
|
return unwrap(await backendApi.post(`${app(projectId, appId)}/exec`, input), 'Failed to run the command');
|
|
@@ -100,6 +100,7 @@ export interface App {
|
|
|
100
100
|
slug: string;
|
|
101
101
|
name: string;
|
|
102
102
|
url: string;
|
|
103
|
+
external_url?: string | null;
|
|
103
104
|
access_mode: AppAccessMode;
|
|
104
105
|
access_revision: number;
|
|
105
106
|
desired_state: AppDesiredState;
|
|
@@ -150,6 +151,7 @@ export interface CreateAppInput {
|
|
|
150
151
|
idle_timeout_seconds?: number;
|
|
151
152
|
always_on?: boolean;
|
|
152
153
|
uses?: string[];
|
|
154
|
+
external_url?: string;
|
|
153
155
|
}
|
|
154
156
|
export interface UpdateAppInput {
|
|
155
157
|
name?: string;
|
|
@@ -161,6 +163,7 @@ export interface UpdateAppInput {
|
|
|
161
163
|
uses?: string[];
|
|
162
164
|
labels?: string[];
|
|
163
165
|
display?: AppDisplay;
|
|
166
|
+
external_url?: string;
|
|
164
167
|
}
|
|
165
168
|
export type AppViewerTokenScope = 'off' | 'identity' | 'api';
|
|
166
169
|
export interface AppAccessConfig {
|
|
@@ -77,9 +77,11 @@ export interface ChangeRequestMergeResponse {
|
|
|
77
77
|
export interface ListChangeRequestsOptions {
|
|
78
78
|
originSessionId?: string;
|
|
79
79
|
limit?: number;
|
|
80
|
+
cursor?: string;
|
|
80
81
|
}
|
|
81
82
|
export declare function listChangeRequests(projectId: string, status?: ChangeRequestStatus | 'all', options?: ListChangeRequestsOptions): Promise<{
|
|
82
83
|
change_requests: ChangeRequest[];
|
|
84
|
+
next_cursor?: string | null;
|
|
83
85
|
}>;
|
|
84
86
|
export declare function getChangeRequest(projectId: string, crId: string): Promise<ChangeRequestDetailResponse>;
|
|
85
87
|
export declare function getChangeRequestDiff(projectId: string, crId: string): Promise<ChangeRequestDiffResponse>;
|
|
@@ -12,6 +12,8 @@ export async function listChangeRequests(projectId, status, options) {
|
|
|
12
12
|
params.set('origin_session_id', options.originSessionId);
|
|
13
13
|
if (options?.limit != null)
|
|
14
14
|
params.set('limit', String(options.limit));
|
|
15
|
+
if (options?.cursor)
|
|
16
|
+
params.set('cursor', options.cursor);
|
|
15
17
|
const query = params.toString() ? `?${params.toString()}` : '';
|
|
16
18
|
return unwrap(await backendApi.get(`/projects/${projectId}/change-requests${query}`, {
|
|
17
19
|
showErrors: false,
|
|
@@ -522,6 +522,11 @@ export declare function createConnector(projectId: string, draft: ConnectorDraft
|
|
|
522
522
|
authDiscovery?: ConnectorAuthDiscovery;
|
|
523
523
|
}>;
|
|
524
524
|
export declare function discoverConnectorAuth(projectId: string, draft: ConnectorDraftInput): Promise<ConnectorAuthDiscovery>;
|
|
525
|
+
export interface McpServerSignInCheck {
|
|
526
|
+
requires_sign_in: boolean;
|
|
527
|
+
one_click: boolean;
|
|
528
|
+
}
|
|
529
|
+
export declare function checkMcpServerSignIn(projectId: string, url: string): Promise<McpServerSignInCheck>;
|
|
525
530
|
export declare function deleteConnector(projectId: string, slug: string): Promise<{
|
|
526
531
|
ok: boolean;
|
|
527
532
|
}>;
|
|
@@ -534,6 +539,7 @@ export interface ConnectToolkit {
|
|
|
534
539
|
isNoAuth: boolean;
|
|
535
540
|
connected: boolean;
|
|
536
541
|
directId?: string | null;
|
|
542
|
+
directMcpUrl?: string | null;
|
|
537
543
|
}
|
|
538
544
|
export interface ConnectToolkitsPage {
|
|
539
545
|
provider: string;
|
|
@@ -657,6 +663,7 @@ export declare const getDiscoverIntegration: typeof getDiscoverConnector;
|
|
|
657
663
|
export declare function getConnectStatus(): Promise<ConnectorConnectStatus>;
|
|
658
664
|
export declare function setConnectorCredential(projectId: string, slug: string, credential: string | ConnectionCredentialInput): Promise<{
|
|
659
665
|
ok: boolean;
|
|
666
|
+
sync?: ConnectorSyncResult;
|
|
660
667
|
}>;
|
|
661
668
|
export declare function deleteConnectorCredential(projectId: string, slug: string): Promise<{
|
|
662
669
|
ok: boolean;
|
|
@@ -306,6 +306,9 @@ export async function createConnector(projectId, draft) {
|
|
|
306
306
|
export async function discoverConnectorAuth(projectId, draft) {
|
|
307
307
|
return unwrap(await backendApi.post(`/connectors/projects/${projectId}/connectors/auth-discovery`, draft));
|
|
308
308
|
}
|
|
309
|
+
export async function checkMcpServerSignIn(projectId, url) {
|
|
310
|
+
return unwrap(await backendApi.post(`/connectors/projects/${projectId}/connectors/mcp-sign-in-check`, { url }));
|
|
311
|
+
}
|
|
309
312
|
export async function deleteConnector(projectId, slug) {
|
|
310
313
|
return unwrap(await backendApi.delete(`/connectors/projects/${projectId}/connectors/${encodeURIComponent(slug)}`));
|
|
311
314
|
}
|
|
@@ -12,10 +12,13 @@ export interface ProjectDirectoryEntry {
|
|
|
12
12
|
export interface ProjectDirectoryListing {
|
|
13
13
|
entries: ProjectDirectoryEntry[];
|
|
14
14
|
truncated: boolean;
|
|
15
|
+
next_cursor?: string | null;
|
|
15
16
|
}
|
|
16
17
|
export declare function listProjectDirectory(projectId: string, options?: {
|
|
17
18
|
ref?: string;
|
|
18
19
|
path?: string;
|
|
20
|
+
cursor?: string;
|
|
21
|
+
limit?: number;
|
|
19
22
|
}): Promise<ProjectDirectoryListing>;
|
|
20
23
|
export interface ProjectFileSearchMatch {
|
|
21
24
|
path: string;
|
|
@@ -19,6 +19,10 @@ export async function listProjectDirectory(projectId, options) {
|
|
|
19
19
|
if (options?.path)
|
|
20
20
|
params.set('path', options.path);
|
|
21
21
|
params.set('depth', '1');
|
|
22
|
+
if (options?.cursor)
|
|
23
|
+
params.set('cursor', options.cursor);
|
|
24
|
+
if (options?.limit !== undefined)
|
|
25
|
+
params.set('limit', String(options.limit));
|
|
22
26
|
return unwrap(await backendApi.get(`/projects/${projectId}/files?${params.toString()}`, { showErrors: false }));
|
|
23
27
|
}
|
|
24
28
|
export async function searchProjectFiles(projectId, query, options) {
|
|
@@ -104,9 +104,13 @@ export interface GatewayBudgetRow {
|
|
|
104
104
|
budget_id: string;
|
|
105
105
|
scope: 'project' | 'member';
|
|
106
106
|
subject_user_id: string | null;
|
|
107
|
+
subject_email?: string | null;
|
|
107
108
|
limit_usd: number;
|
|
108
109
|
period: 'day' | 'week' | 'month';
|
|
109
110
|
action: 'block' | 'warn';
|
|
111
|
+
spent_usd?: number;
|
|
112
|
+
period_start?: string;
|
|
113
|
+
resets_at?: string;
|
|
110
114
|
}
|
|
111
115
|
export interface GatewayMemberSpend {
|
|
112
116
|
user_id: string | null;
|
|
@@ -143,6 +147,7 @@ export interface CreatedGatewayKey {
|
|
|
143
147
|
name: string;
|
|
144
148
|
key_prefix: string;
|
|
145
149
|
secret_key: string;
|
|
150
|
+
gateway_url?: string | null;
|
|
146
151
|
}
|
|
147
152
|
export type GatewayFallbackCondition = 'transient' | 'any-error';
|
|
148
153
|
export interface GatewayFallbackChain {
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import type { ReviewVerdict } from './review.js';
|
|
2
|
+
import { type ReviewItem } from './review-items.js';
|
|
3
|
+
export declare const PROJECT_ACTIONS: {
|
|
4
|
+
readonly PROJECT_READ: "project.read";
|
|
5
|
+
readonly PROJECT_WRITE: "project.write";
|
|
6
|
+
readonly PROJECT_DELETE: "project.delete";
|
|
7
|
+
readonly PROJECT_SESSION_READ: "project.session.read";
|
|
8
|
+
readonly PROJECT_SESSION_START: "project.session.start";
|
|
9
|
+
readonly PROJECT_SESSION_STOP: "project.session.stop";
|
|
10
|
+
readonly PROJECT_SESSION_BINDINGS_WRITE: "project.session.bindings.write";
|
|
11
|
+
readonly PROJECT_MEMBERS_READ: "project.members.read";
|
|
12
|
+
readonly PROJECT_MEMBERS_MANAGE: "project.members.manage";
|
|
13
|
+
readonly PROJECT_TRIGGER_READ: "project.trigger.read";
|
|
14
|
+
readonly PROJECT_TRIGGER_CREATE: "project.trigger.create";
|
|
15
|
+
readonly PROJECT_TRIGGER_UPDATE: "project.trigger.update";
|
|
16
|
+
readonly PROJECT_TRIGGER_DELETE: "project.trigger.delete";
|
|
17
|
+
readonly PROJECT_TRIGGER_FIRE: "project.trigger.fire";
|
|
18
|
+
readonly PROJECT_GATEWAY_LOGS_READ: "project.gateway.logs.read";
|
|
19
|
+
readonly PROJECT_GATEWAY_SPEND_READ: "project.gateway.spend.read";
|
|
20
|
+
readonly PROJECT_USAGE_READ: "project.usage.read";
|
|
21
|
+
readonly PROJECT_GATEWAY_BUDGET_SET: "project.gateway.budget.set";
|
|
22
|
+
readonly PROJECT_GATEWAY_KEYS_MANAGE: "project.gateway.keys.manage";
|
|
23
|
+
readonly PROJECT_AGENT_READ: "project.agent.read";
|
|
24
|
+
readonly PROJECT_AGENT_WRITE: "project.agent.write";
|
|
25
|
+
readonly PROJECT_SKILL_READ: "project.skill.read";
|
|
26
|
+
readonly PROJECT_SKILL_WRITE: "project.skill.write";
|
|
27
|
+
readonly PROJECT_COMMAND_READ: "project.command.read";
|
|
28
|
+
readonly PROJECT_COMMAND_WRITE: "project.command.write";
|
|
29
|
+
readonly PROJECT_FILE_READ: "project.file.read";
|
|
30
|
+
readonly PROJECT_FILE_WRITE: "project.file.write";
|
|
31
|
+
readonly PROJECT_SETTINGS_WRITE: "project.settings.write";
|
|
32
|
+
readonly PROJECT_SANDBOX_WRITE: "project.sandbox.write";
|
|
33
|
+
readonly PROJECT_MODEL_READ: "project.model.read";
|
|
34
|
+
readonly PROJECT_MODEL_WRITE: "project.model.write";
|
|
35
|
+
readonly PROJECT_GITOPS_READ: "project.gitops.read";
|
|
36
|
+
readonly PROJECT_GITOPS_PUSH: "project.gitops.push";
|
|
37
|
+
readonly PROJECT_GITOPS_MERGE: "project.gitops.merge";
|
|
38
|
+
readonly PROJECT_GITOPS_REF_ANY: "project.gitops.ref.any";
|
|
39
|
+
readonly PROJECT_GITOPS_REF_DELETE: "project.gitops.ref.delete";
|
|
40
|
+
readonly PROJECT_SECRET_READ: "project.secret.read";
|
|
41
|
+
readonly PROJECT_SECRET_WRITE: "project.secret.write";
|
|
42
|
+
readonly PROJECT_CONNECTOR_READ: "project.connector.read";
|
|
43
|
+
readonly PROJECT_CONNECTOR_CONNECTIONS_MANAGE: "project.connector.connections.manage";
|
|
44
|
+
readonly PROJECT_CONNECTOR_WRITE: "project.connector.write";
|
|
45
|
+
readonly PROJECT_APP_READ: "project.app.read";
|
|
46
|
+
readonly PROJECT_APP_WRITE: "project.app.write";
|
|
47
|
+
readonly PROJECT_APP_DEPLOY: "project.app.deploy";
|
|
48
|
+
readonly PROJECT_APP_ADMIN: "project.app.admin";
|
|
49
|
+
readonly PROJECT_REVIEW_READ: "project.review.read";
|
|
50
|
+
readonly PROJECT_REVIEW_SUBMIT: "project.review.submit";
|
|
51
|
+
readonly PROJECT_REVIEW_ACT: "project.review.act";
|
|
52
|
+
readonly PROJECT_CREDENTIALS_ISSUE: "project.credentials.issue";
|
|
53
|
+
};
|
|
54
|
+
export type ProjectAction = (typeof PROJECT_ACTIONS)[keyof typeof PROJECT_ACTIONS];
|
|
55
|
+
export declare const TRIGGER_CONTROL_ACTIONS: readonly ["project.write", "project.trigger.create", "project.trigger.fire", "project.trigger.update", "project.trigger.delete"];
|
|
56
|
+
export interface TriggerControls {
|
|
57
|
+
canCreate: boolean;
|
|
58
|
+
canFire: boolean;
|
|
59
|
+
canUpdate: boolean;
|
|
60
|
+
canDelete: boolean;
|
|
61
|
+
}
|
|
62
|
+
export declare function triggerControlsFrom(cans: Partial<Record<string, {
|
|
63
|
+
allowed: boolean;
|
|
64
|
+
} | undefined>>): TriggerControls;
|
|
65
|
+
export declare const REVIEW_CONTROL_ACTIONS: readonly ["project.write", "project.gitops.push", "project.gitops.merge", "project.review.act"];
|
|
66
|
+
export interface ChangeRequestControls {
|
|
67
|
+
canOpen: boolean;
|
|
68
|
+
canMerge: boolean;
|
|
69
|
+
canClose: boolean;
|
|
70
|
+
}
|
|
71
|
+
export declare function changeRequestControlsFrom(cans: Partial<Record<string, {
|
|
72
|
+
allowed: boolean;
|
|
73
|
+
} | undefined>>): ChangeRequestControls;
|
|
74
|
+
export declare function reviewVerdictAllowed(item: ReviewItem, verdict: ReviewVerdict, cans: Partial<Record<string, {
|
|
75
|
+
allowed: boolean;
|
|
76
|
+
} | undefined>>): boolean;
|