@beeuni/sdk 0.1.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 +53 -92
- package/dist/beeuni.esm.min.js +36 -34
- package/dist/beeuni.global.js +36 -34
- 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 +7 -0
- package/dist/browser/stores/sync-store.js +122 -35
- 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 +99 -34
- package/dist/core/client/beeuni.js +5 -11
- package/dist/core/client/capture.d.ts +105 -0
- package/dist/core/client/capture.js +48 -0
- package/dist/core/client/facade-catalog.d.ts +0 -4
- package/dist/core/client/facade-catalog.js +1 -5
- 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-connections.d.ts +2 -2
- package/dist/core/client/project-connections.js +2 -2
- 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 +9 -19
- package/dist/core/client/project-operations.js +2 -6
- package/dist/core/client/project-platform-security.d.ts +1 -1
- package/dist/core/client/project-platform-settings.d.ts +1 -1
- 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 -7
- package/dist/core/http/api-client.js +2 -37
- package/dist/core/http/auth.d.ts +2 -4
- package/dist/core/http/auth.js +2 -8
- 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/client-policy.d.ts +8 -0
- package/dist/core/rest/platform-client/client-policy.js +30 -0
- package/dist/core/rest/platform-client/index.d.ts +4 -4
- package/dist/core/rest/platform-client/index.js +4 -4
- 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/platform-client/types.d.ts +1 -1
- 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 +11 -1
- 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 +13 -55
- package/dist/core/rest/projects-client/connectors.js +5 -29
- 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/git-backend.d.ts +1 -10
- package/dist/core/rest/projects-client/git-backend.js +0 -10
- 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-sso.d.ts +0 -10
- package/dist/core/rest/projects-client/iam-sso.js +0 -3
- 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/index.d.ts +1 -4
- package/dist/core/rest/projects-client/index.js +1 -4
- 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 +4 -2
- package/dist/core/rest/projects-client/projects.js +4 -2
- 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/sandbox.d.ts +8 -9
- 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/session-sandbox.d.ts +1 -1
- package/dist/core/rest/projects-client/sessions.d.ts +31 -4
- 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/control-stream.d.ts +1 -0
- package/dist/core/session/control-stream.js +18 -1
- 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/guard.d.ts +6 -0
- package/dist/core/session-log/guard.js +109 -0
- package/dist/core/session-log/index.d.ts +7 -0
- package/dist/core/session-log/index.js +5 -0
- package/dist/core/session-log/saved-log.d.ts +10 -0
- package/dist/core/session-log/saved-log.js +25 -0
- package/dist/core/session-log/source.d.ts +25 -0
- package/dist/core/session-log/source.js +30 -0
- package/dist/core/session-log/store.d.ts +21 -0
- package/dist/core/session-log/store.js +126 -0
- package/dist/core/session-log/tool-call.d.ts +11 -0
- package/dist/core/session-log/tool-call.js +65 -0
- 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/types.d.ts +264 -0
- package/dist/core/session-log/types.js +6 -0
- package/dist/core/session-log/v1-view.d.ts +13 -0
- package/dist/core/session-log/v1-view.js +215 -0
- package/dist/core/session-log/v1.d.ts +31 -0
- package/dist/core/session-log/v1.js +473 -0
- package/dist/core/session-sync/copy-store-types.d.ts +19 -0
- package/dist/core/session-sync/copy-store-types.js +1 -0
- package/dist/core/session-sync/saved-copy-store.js +25 -4
- 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 +2 -2
- package/dist/core/turns/classify.d.ts +2 -1
- package/dist/core/turns/classify.js +7 -3
- package/dist/core/turns/edit-blocks.d.ts +1 -0
- package/dist/core/turns/edit-blocks.js +15 -0
- package/dist/core/turns/parts.d.ts +3 -2
- package/dist/core/turns/parts.js +4 -2
- 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/index.d.ts +1 -0
- package/dist/core/turns/segments/index.js +1 -0
- 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/work-split.d.ts +10 -0
- package/dist/core/turns/segments/work-split.js +40 -0
- 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/state.d.ts +2 -7
- package/dist/core/turns/state.js +28 -134
- 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 +3 -2
- package/dist/core/turns/tools/tool-meta.js +5 -2
- package/dist/core/turns/tools/tool-outcome.d.ts +2 -1
- package/dist/core/turns/tools/tool-outcome.js +3 -1
- package/dist/core/turns/types.d.ts +1 -1
- package/dist/core/turns/view-model.js +1 -13
- package/dist/core/warm-session-pool.d.ts +29 -0
- package/dist/core/warm-session-pool.js +127 -0
- 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 +4 -4
- package/dist/index.js +4 -4
- package/dist/internal/connector-catalog.d.ts +48 -0
- package/dist/internal/connector-catalog.js +27 -0
- package/dist/internal/host-configuration.d.ts +22 -0
- package/dist/internal/host-configuration.js +28 -0
- package/dist/internal/platform-admin-react.d.ts +12 -0
- package/dist/internal/platform-admin-react.js +13 -0
- package/dist/internal/platform-admin.d.ts +9 -0
- package/dist/internal/platform-admin.js +9 -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 -13
- package/dist/react/index.js +4 -13
- package/dist/react/opencode.d.ts +1 -0
- package/dist/react/opencode.js +1 -0
- 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 -2
- package/dist/react/query-keys.js +24 -2
- 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 +3 -1
- package/dist/react/sign-in-with-beeuni.d.ts +6 -6
- 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 +3 -6
- 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-event.d.ts +1 -0
- package/dist/react/use-opencode-events/handle-event.js +5 -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-events/index.js +1 -0
- 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 +1 -1
- 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 +16 -0
- package/dist/react/use-session-log.js +143 -0
- 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 +88 -6
- package/package.json +62 -8
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export declare const GENUI_SCHEMA_VERSION: 1;
|
|
2
|
+
export interface GenuiNode {
|
|
3
|
+
id: string;
|
|
4
|
+
type: string;
|
|
5
|
+
props: Record<string, unknown>;
|
|
6
|
+
partial: boolean;
|
|
7
|
+
}
|
|
8
|
+
export type GenuiIssueCode = 'schema' | 'unknown-component' | 'wrong-child' | 'url' | 'depth' | 'version' | 'no-root' | 'cut-off' | 'unsupported-statement' | 'too-many-nodes' | 'too-large' | 'parse-failed';
|
|
9
|
+
export interface GenuiIssue {
|
|
10
|
+
code: GenuiIssueCode;
|
|
11
|
+
component?: string;
|
|
12
|
+
statementId?: string;
|
|
13
|
+
message: string;
|
|
14
|
+
}
|
|
15
|
+
export interface GenuiParseResult {
|
|
16
|
+
root: GenuiNode | null;
|
|
17
|
+
pending: string[];
|
|
18
|
+
issues: GenuiIssue[];
|
|
19
|
+
streaming: boolean;
|
|
20
|
+
}
|
|
21
|
+
export type GenuiSegment = {
|
|
22
|
+
kind: 'markdown';
|
|
23
|
+
text: string;
|
|
24
|
+
} | {
|
|
25
|
+
kind: 'genui';
|
|
26
|
+
code: string;
|
|
27
|
+
version: number;
|
|
28
|
+
closed: boolean;
|
|
29
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export const GENUI_SCHEMA_VERSION = 1;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function safeUrl(raw: unknown): string | null;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
const MAX_URL_LENGTH = 2048;
|
|
2
|
+
export function safeUrl(raw) {
|
|
3
|
+
if (typeof raw !== 'string')
|
|
4
|
+
return null;
|
|
5
|
+
const value = raw.trim();
|
|
6
|
+
if (!value || value.length > MAX_URL_LENGTH)
|
|
7
|
+
return null;
|
|
8
|
+
let url;
|
|
9
|
+
try {
|
|
10
|
+
url = new URL(value);
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
if (url.username || url.password)
|
|
16
|
+
return null;
|
|
17
|
+
return url.protocol === 'https:' || url.protocol === 'http:' ? url.toString() : null;
|
|
18
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ElementNode } from '@openuidev/lang-core';
|
|
2
|
+
import type { GenuiIssue, GenuiNode } from './types.js';
|
|
3
|
+
export declare function sanitizeTree(root: ElementNode | null, options: {
|
|
4
|
+
streaming: boolean;
|
|
5
|
+
unfinished: string | null;
|
|
6
|
+
}): {
|
|
7
|
+
root: GenuiNode | null;
|
|
8
|
+
issues: GenuiIssue[];
|
|
9
|
+
};
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
import { GENUI_BLOCKS, GENUI_MAX_DEPTH, GENUI_MAX_NODES, GENUI_SPECS } from './catalog.js';
|
|
2
|
+
import { safeUrl } from './urls.js';
|
|
3
|
+
const isElement = (value) => typeof value === 'object' && value !== null && value.type === 'element';
|
|
4
|
+
function fit(node, accepts) {
|
|
5
|
+
const spec = GENUI_SPECS[node.type];
|
|
6
|
+
if (accepts.includes(node.type) || spec?.block)
|
|
7
|
+
return [node];
|
|
8
|
+
const children = Object.keys(spec?.slots ?? {}).flatMap((key) => (node.props[key] ?? []));
|
|
9
|
+
return children.flatMap((child) => fit(child, accepts));
|
|
10
|
+
}
|
|
11
|
+
export function sanitizeTree(root, options) {
|
|
12
|
+
const issues = [];
|
|
13
|
+
const usedIds = new Map();
|
|
14
|
+
let nodeCount = 0;
|
|
15
|
+
const uniqueId = (base) => {
|
|
16
|
+
const seen = usedIds.get(base) ?? 0;
|
|
17
|
+
usedIds.set(base, seen + 1);
|
|
18
|
+
return seen === 0 ? base : `${base}#${seen}`;
|
|
19
|
+
};
|
|
20
|
+
function visit(value, path, depth, accepts, parentPartial) {
|
|
21
|
+
if (!isElement(value))
|
|
22
|
+
return [];
|
|
23
|
+
const { typeName, statementId } = value;
|
|
24
|
+
const partial = statementId !== undefined ? statementId === options.unfinished : parentPartial;
|
|
25
|
+
const spec = GENUI_SPECS[typeName];
|
|
26
|
+
if (!spec) {
|
|
27
|
+
issues.push({ code: 'unknown-component', component: typeName, statementId, message: `Unknown component ${typeName}` });
|
|
28
|
+
return [];
|
|
29
|
+
}
|
|
30
|
+
if (!accepts.includes(typeName)) {
|
|
31
|
+
issues.push({ code: 'wrong-child', component: typeName, statementId, message: `${typeName} is not allowed here` });
|
|
32
|
+
return visit(value, path, depth, [typeName], parentPartial).flatMap((node) => fit(node, accepts));
|
|
33
|
+
}
|
|
34
|
+
const nextDepth = spec.container ? depth + 1 : depth;
|
|
35
|
+
if (nextDepth > GENUI_MAX_DEPTH) {
|
|
36
|
+
issues.push({ code: 'depth', component: typeName, statementId, message: `Nesting deeper than ${GENUI_MAX_DEPTH}` });
|
|
37
|
+
return [];
|
|
38
|
+
}
|
|
39
|
+
if (nodeCount >= GENUI_MAX_NODES) {
|
|
40
|
+
if (!issues.some((issue) => issue.code === 'too-many-nodes')) {
|
|
41
|
+
issues.push({ code: 'too-many-nodes', message: `Block expands to more than ${GENUI_MAX_NODES} nodes; the rest is dropped` });
|
|
42
|
+
}
|
|
43
|
+
return [];
|
|
44
|
+
}
|
|
45
|
+
nodeCount++;
|
|
46
|
+
if (partial && !options.streaming) {
|
|
47
|
+
issues.push({ code: 'cut-off', component: typeName, statementId, message: `${typeName} was cut off` });
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
const id = uniqueId(statementId ?? path);
|
|
51
|
+
const props = {};
|
|
52
|
+
for (const [key, prop] of Object.entries(value.props)) {
|
|
53
|
+
if (prop !== null && prop !== undefined)
|
|
54
|
+
props[key] = prop;
|
|
55
|
+
}
|
|
56
|
+
const subtrees = [];
|
|
57
|
+
const rising = [];
|
|
58
|
+
for (const [key, slot] of Object.entries(spec.slots)) {
|
|
59
|
+
const raw = props[key];
|
|
60
|
+
if (raw === undefined)
|
|
61
|
+
continue;
|
|
62
|
+
const children = Array.isArray(raw) ? raw : [raw];
|
|
63
|
+
const kept = [];
|
|
64
|
+
children.forEach((child, index) => {
|
|
65
|
+
const nodes = visit(child, `${id}.${key}.${index}`, nextDepth, slot.accepts, partial);
|
|
66
|
+
for (const node of nodes.flatMap((n) => fit(n, slot.accepts))) {
|
|
67
|
+
subtrees.push(node);
|
|
68
|
+
(slot.accepts.includes(node.type) ? kept : rising).push(node);
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
props[key] = kept;
|
|
72
|
+
}
|
|
73
|
+
for (const [key, need] of Object.entries(spec.urls)) {
|
|
74
|
+
if (props[key] === undefined)
|
|
75
|
+
continue;
|
|
76
|
+
const safe = safeUrl(props[key]);
|
|
77
|
+
if (safe) {
|
|
78
|
+
props[key] = safe;
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
issues.push({ code: 'url', component: typeName, statementId, message: `Unsafe URL in ${typeName}.${key}` });
|
|
82
|
+
if (need === 'required')
|
|
83
|
+
return [];
|
|
84
|
+
delete props[key];
|
|
85
|
+
}
|
|
86
|
+
if (!partial) {
|
|
87
|
+
const schema = options.streaming ? spec.streaming : spec.strict;
|
|
88
|
+
let result = schema.safeParse(props);
|
|
89
|
+
if (!result.success) {
|
|
90
|
+
const first = result.error.issues[0];
|
|
91
|
+
issues.push({
|
|
92
|
+
code: 'schema',
|
|
93
|
+
component: typeName,
|
|
94
|
+
statementId,
|
|
95
|
+
message: `${typeName}.${first?.path.join('.') ?? ''}: ${first?.message ?? 'invalid'}`,
|
|
96
|
+
});
|
|
97
|
+
const shape = schema.shape;
|
|
98
|
+
const failed = new Set(result.error.issues.map((issue) => String(issue.path[0])));
|
|
99
|
+
if (![...failed].every((key) => shape[key]?.safeParse(undefined).success))
|
|
100
|
+
return subtrees;
|
|
101
|
+
for (const key of failed)
|
|
102
|
+
delete props[key];
|
|
103
|
+
result = schema.safeParse(props);
|
|
104
|
+
if (!result.success)
|
|
105
|
+
return subtrees;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return [{ id, type: typeName, props, partial }, ...rising];
|
|
109
|
+
}
|
|
110
|
+
const top = visit(root, 'root', 0, GENUI_BLOCKS, false);
|
|
111
|
+
if (top.length === 0)
|
|
112
|
+
return { root: null, issues };
|
|
113
|
+
if (top.length === 1 && top[0].type === 'Stack')
|
|
114
|
+
return { root: top[0], issues };
|
|
115
|
+
return { root: { id: uniqueId('root'), type: 'Stack', props: { children: top }, partial: false }, issues };
|
|
116
|
+
}
|
package/dist/index.d.ts
CHANGED
|
@@ -30,8 +30,6 @@ export * from './core/http/authenticated-request.js';
|
|
|
30
30
|
export * from './core/http/config.js';
|
|
31
31
|
export * from './core/http/feature-flags.js';
|
|
32
32
|
export * from './core/http/fresh-sessions.js';
|
|
33
|
-
export * from './core/http/impersonation.js';
|
|
34
|
-
export * from './core/http/instance-routes.js';
|
|
35
33
|
export * from './core/http/runtime-errors.js';
|
|
36
34
|
export * from './core/rest/platform-client/index.js';
|
|
37
35
|
export * from './core/rest/projects-client/index.js';
|
|
@@ -41,9 +39,11 @@ export * from './core/attachments/prompt-attachments.js';
|
|
|
41
39
|
export * from './core/runtime/client.js';
|
|
42
40
|
export * from './core/runtime/attachment-part.js';
|
|
43
41
|
export * from './core/session/index.js';
|
|
42
|
+
export * from './core/session-log/index.js';
|
|
43
|
+
export * from './core/warm-session-pool.js';
|
|
44
44
|
export { createHttpSessionSyncController, loadHttpSessionHistory, type SessionSyncMessage, } from './core/session-sync/session-sync-controller.js';
|
|
45
45
|
export * from './core/session-sync/saved-copy-store.js';
|
|
46
|
-
export { type EmptyConversationInput, isEmptyConversation, savedCopyEmptyRoot, } from './core/session-sync/saved-transcript.js';
|
|
46
|
+
export { type EmptyConversationInput, type SavedSessionCopy, isEmptyConversation, readSavedSessionCopy, savedCopyEmptyRoot, } from './core/session-sync/saved-transcript.js';
|
|
47
47
|
export * from './core/session/url.js';
|
|
48
48
|
export { getSandboxUrlForExternalId } from './core/session/server-store/url-helpers.js';
|
|
49
49
|
export { loadPreviewUrlTemplate } from './core/session/preview-config.js';
|
|
@@ -58,4 +58,4 @@ export { flattenModels, isOfferedModel, type FlatModel, type ModelOption } from
|
|
|
58
58
|
export { modelRefToKey, type ModelKey } from './core/models/model-key.js';
|
|
59
59
|
export { createModelVisibility, modelInDefaultView, type ModelVisibilityPin, } from './core/models/model-visibility.js';
|
|
60
60
|
export { pickerProviderList, type PickerProviderListInput, } from './core/models/provider-selection.js';
|
|
61
|
-
export { resolveComposerModel, resolveModelDefault, type ComposerModelResolution, } from './core/models/composer-model.js';
|
|
61
|
+
export { latestPromptModel, resolveComposerModel, resolveModelDefault, sessionModelCandidates, type ComposerModelResolution, } from './core/models/composer-model.js';
|
package/dist/index.js
CHANGED
|
@@ -22,8 +22,6 @@ export * from './core/http/authenticated-request.js';
|
|
|
22
22
|
export * from './core/http/config.js';
|
|
23
23
|
export * from './core/http/feature-flags.js';
|
|
24
24
|
export * from './core/http/fresh-sessions.js';
|
|
25
|
-
export * from './core/http/impersonation.js';
|
|
26
|
-
export * from './core/http/instance-routes.js';
|
|
27
25
|
export * from './core/http/runtime-errors.js';
|
|
28
26
|
export * from './core/rest/platform-client/index.js';
|
|
29
27
|
export * from './core/rest/projects-client/index.js';
|
|
@@ -33,9 +31,11 @@ export * from './core/attachments/prompt-attachments.js';
|
|
|
33
31
|
export * from './core/runtime/client.js';
|
|
34
32
|
export * from './core/runtime/attachment-part.js';
|
|
35
33
|
export * from './core/session/index.js';
|
|
34
|
+
export * from './core/session-log/index.js';
|
|
35
|
+
export * from './core/warm-session-pool.js';
|
|
36
36
|
export { createHttpSessionSyncController, loadHttpSessionHistory, } from './core/session-sync/session-sync-controller.js';
|
|
37
37
|
export * from './core/session-sync/saved-copy-store.js';
|
|
38
|
-
export { isEmptyConversation, savedCopyEmptyRoot, } from './core/session-sync/saved-transcript.js';
|
|
38
|
+
export { isEmptyConversation, readSavedSessionCopy, savedCopyEmptyRoot, } from './core/session-sync/saved-transcript.js';
|
|
39
39
|
export * from './core/session/url.js';
|
|
40
40
|
export { getSandboxUrlForExternalId } from './core/session/server-store/url-helpers.js';
|
|
41
41
|
export { loadPreviewUrlTemplate } from './core/session/preview-config.js';
|
|
@@ -50,4 +50,4 @@ export { flattenModels, isOfferedModel } from './core/models/model-flatten.js';
|
|
|
50
50
|
export { modelRefToKey } from './core/models/model-key.js';
|
|
51
51
|
export { createModelVisibility, modelInDefaultView, } from './core/models/model-visibility.js';
|
|
52
52
|
export { pickerProviderList, } from './core/models/provider-selection.js';
|
|
53
|
-
export { resolveComposerModel, resolveModelDefault, } from './core/models/composer-model.js';
|
|
53
|
+
export { latestPromptModel, resolveComposerModel, resolveModelDefault, sessionModelCandidates, } from './core/models/composer-model.js';
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export interface PipedreamApp {
|
|
2
|
+
slug: string;
|
|
3
|
+
name: string;
|
|
4
|
+
description: string | null;
|
|
5
|
+
imgSrc: string | null;
|
|
6
|
+
authType: string | null;
|
|
7
|
+
categories: string[];
|
|
8
|
+
hasActions: boolean;
|
|
9
|
+
hasTriggers: boolean;
|
|
10
|
+
featuredWeight: number;
|
|
11
|
+
directId?: string | null;
|
|
12
|
+
directMcpUrl?: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface PipedreamCategory {
|
|
15
|
+
key: string;
|
|
16
|
+
label: string;
|
|
17
|
+
count: number;
|
|
18
|
+
}
|
|
19
|
+
export interface PipedreamCatalogQuery {
|
|
20
|
+
q?: string;
|
|
21
|
+
category?: string;
|
|
22
|
+
cursor?: string;
|
|
23
|
+
limit?: number;
|
|
24
|
+
}
|
|
25
|
+
export interface PipedreamCatalogPage {
|
|
26
|
+
apps: PipedreamApp[];
|
|
27
|
+
categories: PipedreamCategory[];
|
|
28
|
+
total?: number;
|
|
29
|
+
nextCursor?: string;
|
|
30
|
+
hasMore: boolean;
|
|
31
|
+
indexReady?: boolean;
|
|
32
|
+
excludedNoActions?: number;
|
|
33
|
+
}
|
|
34
|
+
export declare function listPipedreamApps(projectId: string, qOrQuery?: string | PipedreamCatalogQuery, cursor?: string): Promise<PipedreamCatalogPage>;
|
|
35
|
+
export interface PipedreamSection {
|
|
36
|
+
key: string;
|
|
37
|
+
label: string;
|
|
38
|
+
total: number;
|
|
39
|
+
apps: PipedreamApp[];
|
|
40
|
+
}
|
|
41
|
+
export declare function listPipedreamSections(projectId: string, opts?: {
|
|
42
|
+
perCategory?: number;
|
|
43
|
+
maxCategories?: number;
|
|
44
|
+
}): Promise<{
|
|
45
|
+
sections: PipedreamSection[];
|
|
46
|
+
categories: PipedreamCategory[];
|
|
47
|
+
indexReady?: boolean;
|
|
48
|
+
}>;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { backendApi } from '../core/http/api-client.js';
|
|
2
|
+
import { unwrap } from '../core/rest/projects-client/shared.js';
|
|
3
|
+
export async function listPipedreamApps(projectId, qOrQuery, cursor) {
|
|
4
|
+
const query = typeof qOrQuery === 'string' || qOrQuery === undefined
|
|
5
|
+
? { ...(qOrQuery ? { q: qOrQuery } : {}), ...(cursor ? { cursor } : {}) }
|
|
6
|
+
: qOrQuery;
|
|
7
|
+
const params = new URLSearchParams();
|
|
8
|
+
if (query.q)
|
|
9
|
+
params.set('q', query.q);
|
|
10
|
+
if (query.category)
|
|
11
|
+
params.set('category', query.category);
|
|
12
|
+
if (query.cursor)
|
|
13
|
+
params.set('cursor', query.cursor);
|
|
14
|
+
if (query.limit)
|
|
15
|
+
params.set('limit', String(query.limit));
|
|
16
|
+
const qs = params.toString();
|
|
17
|
+
return unwrap(await backendApi.get(`/connectors/projects/${projectId}/pipedream/apps${qs ? `?${qs}` : ''}`));
|
|
18
|
+
}
|
|
19
|
+
export async function listPipedreamSections(projectId, opts) {
|
|
20
|
+
const params = new URLSearchParams();
|
|
21
|
+
if (opts?.perCategory)
|
|
22
|
+
params.set('perCategory', String(opts.perCategory));
|
|
23
|
+
if (opts?.maxCategories)
|
|
24
|
+
params.set('maxCategories', String(opts.maxCategories));
|
|
25
|
+
const qs = params.toString();
|
|
26
|
+
return unwrap(await backendApi.get(`/connectors/projects/${projectId}/pipedream/sections${qs ? `?${qs}` : ''}`));
|
|
27
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type SsoProvider as PublicSsoProvider } from '../core/rest/projects-client/iam-sso.js';
|
|
2
|
+
import type { GitHubRepository } from '../core/rest/projects-client/github.js';
|
|
3
|
+
export type HostSsoProvider = PublicSsoProvider & {
|
|
4
|
+
supabase_sso_provider_id: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function getHostSsoProvider(accountId: string): Promise<HostSsoProvider | null>;
|
|
7
|
+
export declare function upsertSsoProvider(accountId: string, input: {
|
|
8
|
+
supabase_sso_provider_id: string;
|
|
9
|
+
name: string;
|
|
10
|
+
primary_domain: string;
|
|
11
|
+
group_claim_name?: string;
|
|
12
|
+
auto_create_members?: boolean;
|
|
13
|
+
auto_provision_groups?: boolean;
|
|
14
|
+
enforce_sso?: boolean;
|
|
15
|
+
}): Promise<HostSsoProvider>;
|
|
16
|
+
export declare function listManagedGitRepositories(options?: {
|
|
17
|
+
search?: string;
|
|
18
|
+
limit?: number;
|
|
19
|
+
}): Promise<{
|
|
20
|
+
owner: string;
|
|
21
|
+
repositories: GitHubRepository[];
|
|
22
|
+
}>;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { backendApi } from '../core/http/api-client.js';
|
|
2
|
+
import { getSsoProvider as readSsoProvider } from '../core/rest/projects-client/iam-sso.js';
|
|
3
|
+
export async function getHostSsoProvider(accountId) {
|
|
4
|
+
return await readSsoProvider(accountId);
|
|
5
|
+
}
|
|
6
|
+
export async function upsertSsoProvider(accountId, input) {
|
|
7
|
+
const response = await backendApi.put(`/accounts/${accountId}/iam/sso/provider`, input, { showErrors: false });
|
|
8
|
+
if (response.error)
|
|
9
|
+
throw response.error;
|
|
10
|
+
if (!response.data)
|
|
11
|
+
throw new Error('SSO configuration could not be saved');
|
|
12
|
+
return response.data.provider;
|
|
13
|
+
}
|
|
14
|
+
export async function listManagedGitRepositories(options) {
|
|
15
|
+
const params = new URLSearchParams();
|
|
16
|
+
const search = options?.search?.trim();
|
|
17
|
+
if (search)
|
|
18
|
+
params.set('search', search);
|
|
19
|
+
if (options?.limit !== undefined)
|
|
20
|
+
params.set('limit', String(options.limit));
|
|
21
|
+
const query = params.toString();
|
|
22
|
+
const response = await backendApi.get(`/projects/git/backend/repositories${query ? `?${query}` : ''}`, { showErrors: false });
|
|
23
|
+
if (response.error)
|
|
24
|
+
throw response.error;
|
|
25
|
+
if (!response.data)
|
|
26
|
+
throw new Error('Repositories could not be loaded');
|
|
27
|
+
return response.data;
|
|
28
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from '../react/use-admin-accounts.js';
|
|
2
|
+
export * from '../react/use-admin-role.js';
|
|
3
|
+
export * from '../react/use-admin-projects.js';
|
|
4
|
+
export * from '../react/use-admin-analytics.js';
|
|
5
|
+
export * from '../react/use-admin-activity-analytics.js';
|
|
6
|
+
export * from '../react/use-admin-feedback.js';
|
|
7
|
+
export * from '../react/use-system-status.js';
|
|
8
|
+
export * from '../react/use-ops-overview.js';
|
|
9
|
+
export * from '../react/use-admin-billing.js';
|
|
10
|
+
export * from '../react/use-impersonation.js';
|
|
11
|
+
export * from '../react/use-admin-sandboxes.js';
|
|
12
|
+
export * from '../react/use-admin-providers.js';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
export * from '../react/use-admin-accounts.js';
|
|
3
|
+
export * from '../react/use-admin-role.js';
|
|
4
|
+
export * from '../react/use-admin-projects.js';
|
|
5
|
+
export * from '../react/use-admin-analytics.js';
|
|
6
|
+
export * from '../react/use-admin-activity-analytics.js';
|
|
7
|
+
export * from '../react/use-admin-feedback.js';
|
|
8
|
+
export * from '../react/use-system-status.js';
|
|
9
|
+
export * from '../react/use-ops-overview.js';
|
|
10
|
+
export * from '../react/use-admin-billing.js';
|
|
11
|
+
export * from '../react/use-impersonation.js';
|
|
12
|
+
export * from '../react/use-admin-sandboxes.js';
|
|
13
|
+
export * from '../react/use-admin-providers.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './host-configuration.js';
|
|
2
|
+
export * from '../core/rest/platform-client/github-app.js';
|
|
3
|
+
export * from '../core/rest/projects-client/admin-providers.js';
|
|
4
|
+
export * from '../core/http/impersonation.js';
|
|
5
|
+
export * from '../core/http/instance-routes.js';
|
|
6
|
+
export { isAdminBypassEnabled, setAdminBypass } from '../core/http/transport.js';
|
|
7
|
+
export { getAdminRole, type AdminRole } from '../core/rest/projects-client/account-lifecycle.js';
|
|
8
|
+
export { getMaintenanceConfig, setMaintenanceConfig, openStressTestStream, getUserRolesWithToken, } from '../core/rest/platform-client/host-boundary.js';
|
|
9
|
+
export { getSandboxUpdateStatus, triggerSandboxUpdate, resetSandboxUpdateStatus, cancelSandboxUpdate, DESTRUCTIVE_PHASES, isDestructivePhase, type SandboxUpdateResult, type SandboxUpdateStatus, type UpdatePhase, } from '../core/rest/platform-client/updates.js';
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export * from './host-configuration.js';
|
|
2
|
+
export * from '../core/rest/platform-client/github-app.js';
|
|
3
|
+
export * from '../core/rest/projects-client/admin-providers.js';
|
|
4
|
+
export * from '../core/http/impersonation.js';
|
|
5
|
+
export * from '../core/http/instance-routes.js';
|
|
6
|
+
export { isAdminBypassEnabled, setAdminBypass } from '../core/http/transport.js';
|
|
7
|
+
export { getAdminRole } from '../core/rest/projects-client/account-lifecycle.js';
|
|
8
|
+
export { getMaintenanceConfig, setMaintenanceConfig, openStressTestStream, getUserRolesWithToken, } from '../core/rest/platform-client/host-boundary.js';
|
|
9
|
+
export { getSandboxUpdateStatus, triggerSandboxUpdate, resetSandboxUpdateStatus, cancelSandboxUpdate, DESTRUCTIVE_PHASES, isDestructivePhase, } from '../core/rest/platform-client/updates.js';
|
package/dist/platform/ui.d.ts
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
export declare function infoToast(message: string, options?: unknown): void;
|
|
2
|
-
export declare function notifyTaskComplete(sessionId: string, sessionTitle?: string
|
|
3
|
-
|
|
2
|
+
export declare function notifyTaskComplete(sessionId: string, sessionTitle?: string, extra?: {
|
|
3
|
+
watchedSinceMs?: number;
|
|
4
|
+
projectId?: string;
|
|
5
|
+
}): void;
|
|
6
|
+
export declare function hasNotifySink(): boolean;
|
|
7
|
+
export declare function notifySessionError(sessionId: string, errorTitle: string, sessionTitle?: string, extra?: {
|
|
8
|
+
projectId?: string;
|
|
9
|
+
}): void;
|
|
4
10
|
export declare function notifyQuestion(sessionId: string, questionText: string, sessionTitle?: string): void;
|
|
5
11
|
export declare function notifyPermissionRequest(sessionId: string, toolName: string, sessionTitle?: string): void;
|
package/dist/platform/ui.js
CHANGED
|
@@ -2,11 +2,26 @@ import { platformConfig } from '../core/http/config.js';
|
|
|
2
2
|
export function infoToast(message, options) {
|
|
3
3
|
platformConfig().onToast?.('info', message, options);
|
|
4
4
|
}
|
|
5
|
-
export function notifyTaskComplete(sessionId, sessionTitle) {
|
|
6
|
-
platformConfig().onNotify?.({
|
|
5
|
+
export function notifyTaskComplete(sessionId, sessionTitle, extra) {
|
|
6
|
+
platformConfig().onNotify?.({
|
|
7
|
+
kind: 'task-complete',
|
|
8
|
+
sessionId,
|
|
9
|
+
sessionTitle,
|
|
10
|
+
...(extra?.watchedSinceMs !== undefined ? { watchedSinceMs: extra.watchedSinceMs } : {}),
|
|
11
|
+
...(extra?.projectId ? { projectId: extra.projectId } : {}),
|
|
12
|
+
});
|
|
7
13
|
}
|
|
8
|
-
export function
|
|
9
|
-
platformConfig().onNotify
|
|
14
|
+
export function hasNotifySink() {
|
|
15
|
+
return typeof platformConfig().onNotify === 'function';
|
|
16
|
+
}
|
|
17
|
+
export function notifySessionError(sessionId, errorTitle, sessionTitle, extra) {
|
|
18
|
+
platformConfig().onNotify?.({
|
|
19
|
+
kind: 'session-error',
|
|
20
|
+
sessionId,
|
|
21
|
+
errorTitle,
|
|
22
|
+
sessionTitle,
|
|
23
|
+
...(extra?.projectId ? { projectId: extra.projectId } : {}),
|
|
24
|
+
});
|
|
10
25
|
}
|
|
11
26
|
export function notifyQuestion(sessionId, questionText, sessionTitle) {
|
|
12
27
|
platformConfig().onNotify?.({ kind: 'question', sessionId, questionText, sessionTitle });
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export declare const PRESENCE_INPUT_WINDOW_MS: number;
|
|
2
2
|
export declare const PRESENCE_CHECK_MS = 30000;
|
|
3
|
+
export declare const PRESENCE_AWAKE_REFRESH_MS: number;
|
|
3
4
|
export interface HumanPresenceEnv {
|
|
4
5
|
doc: Pick<Document, 'hidden' | 'addEventListener' | 'removeEventListener'>;
|
|
5
6
|
win: Pick<Window, 'addEventListener' | 'removeEventListener' | 'setInterval' | 'clearInterval'>;
|
|
@@ -12,4 +13,12 @@ export declare function presenceReporter(put: (report: {
|
|
|
12
13
|
}) => void, alerts: boolean): {
|
|
13
14
|
report(active: boolean): void;
|
|
14
15
|
setAlerts(next: boolean): void;
|
|
16
|
+
refresh(): void;
|
|
15
17
|
};
|
|
18
|
+
export declare function presenceAwakeFrom(body: {
|
|
19
|
+
awake_until?: string | null;
|
|
20
|
+
awake_cap_at?: string | null;
|
|
21
|
+
}): {
|
|
22
|
+
until: Date;
|
|
23
|
+
capAt: Date;
|
|
24
|
+
} | null;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export const PRESENCE_INPUT_WINDOW_MS = 10 * 60_000;
|
|
2
2
|
export const PRESENCE_CHECK_MS = 30_000;
|
|
3
|
+
export const PRESENCE_AWAKE_REFRESH_MS = 5 * 60_000;
|
|
3
4
|
const INPUT_EVENTS = ['pointerdown', 'pointermove', 'keydown', 'wheel', 'touchstart', 'scroll', 'focus'];
|
|
4
5
|
export function watchHumanPresence(env, send, streamConnected, pageExit = () => false) {
|
|
5
6
|
const now = env.now ?? Date.now;
|
|
@@ -58,5 +59,16 @@ export function presenceReporter(put, alerts) {
|
|
|
58
59
|
if (present)
|
|
59
60
|
put({ active: true, alerts });
|
|
60
61
|
},
|
|
62
|
+
refresh() {
|
|
63
|
+
if (present)
|
|
64
|
+
put({ active: true, alerts });
|
|
65
|
+
},
|
|
61
66
|
};
|
|
62
67
|
}
|
|
68
|
+
export function presenceAwakeFrom(body) {
|
|
69
|
+
if (!body.awake_until || !body.awake_cap_at)
|
|
70
|
+
return null;
|
|
71
|
+
const until = new Date(body.awake_until);
|
|
72
|
+
const capAt = new Date(body.awake_cap_at);
|
|
73
|
+
return Number.isNaN(until.getTime()) || Number.isNaN(capAt.getTime()) ? null : { until, capAt };
|
|
74
|
+
}
|
package/dist/react/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export * from './use-prompt-attachments.js';
|
|
2
|
-
export
|
|
2
|
+
export { useSessionLogRecord } from './use-session-log.js';
|
|
3
3
|
export { useConnectorSetup, useConnectorLinkInfo, type ConnectorSetupOptions, type ConnectorSetupPhase, type ConnectorPopupOpener, } from './connector-setup.js';
|
|
4
4
|
export { useConnectorQuery, type ConnectorQueryOptions } from './use-connector-query.js';
|
|
5
5
|
export { resetIdentityState } from './reset-identity-state.js';
|
|
@@ -17,25 +17,15 @@ export { useProjectSecrets, projectSecretsKey } from './use-project-secrets.js';
|
|
|
17
17
|
export { useAccountSecretResources, useSessionProviderSecretPools } from './use-provider-secrets.js';
|
|
18
18
|
export { useProjectTriggers, projectTriggersKey, useProjectTriggerEventTypes, useProjectTriggerEventApps, projectTriggerEventAppsKey, projectTriggerEventTypesKey, } from './use-project-triggers.js';
|
|
19
19
|
export { useProjectReminders, useSessionReminders } from './use-reminders.js';
|
|
20
|
+
export * from './use-capture.js';
|
|
20
21
|
export { useSessionMessageAuthors } from './use-session-message-authors.js';
|
|
21
22
|
export { useSessionModelUsage } from './use-session-model-usage.js';
|
|
22
23
|
export { useChangeRequests, changeRequestsKey } from './use-change-requests.js';
|
|
23
24
|
export { useGatewayRoutingPolicy, gatewayRoutingPolicyKey } from './use-gateway-routing-policy.js';
|
|
24
25
|
export { useProjectApps, useAppDeployments, useAppDeployment, useAppMachines, useAppVolumes, useAppVolumeSnapshots, appMachinesKey, appVolumesKey, useAppAccess, projectAppsKey, appDeploymentsKey, appDeploymentKey, } from './use-project-apps.js';
|
|
25
26
|
export { NoCompactionModelError } from './use-opencode-sessions/no-compaction-model-error.js';
|
|
26
|
-
export * from './use-admin-accounts.js';
|
|
27
|
-
export * from './use-admin-role.js';
|
|
28
|
-
export * from './use-admin-projects.js';
|
|
29
|
-
export * from './use-admin-analytics.js';
|
|
30
|
-
export * from './use-admin-activity-analytics.js';
|
|
31
|
-
export * from './use-admin-feedback.js';
|
|
32
|
-
export * from './use-system-status.js';
|
|
33
|
-
export * from './use-ops-overview.js';
|
|
34
|
-
export * from './use-admin-billing.js';
|
|
35
|
-
export * from './use-impersonation.js';
|
|
36
27
|
export * from './use-teams-installations.js';
|
|
37
28
|
export * from './use-tunnel.js';
|
|
38
|
-
export * from './use-admin-sandboxes.js';
|
|
39
29
|
export * from './use-authenticated-preview-url.js';
|
|
40
30
|
export * from './use-static-file-preview.js';
|
|
41
31
|
export * from './run-pty-command.js';
|
|
@@ -51,6 +41,8 @@ export * from './use-project-sessions.js';
|
|
|
51
41
|
export * from './use-sessions-needing-input.js';
|
|
52
42
|
export * from './use-notifications.js';
|
|
53
43
|
export * from './session-cache-write.js';
|
|
44
|
+
export * from './use-review-summary.js';
|
|
45
|
+
export * from './use-session-list-state.js';
|
|
54
46
|
export * from './invalidate-project.js';
|
|
55
47
|
export * from './use-feature-flag.js';
|
|
56
48
|
export * from './use-project-files.js';
|
|
@@ -59,4 +51,3 @@ export { useBeeuniAppViewer, type BeeuniAppViewerState, } from './use-beeuni-app
|
|
|
59
51
|
export { useModelAccess } from './use-model-access.js';
|
|
60
52
|
export { formatMegabytes, useSandboxImage } from './use-sandbox-image.js';
|
|
61
53
|
export { GATEWAY_LOGS_PAGE_SIZE, useGatewayOverview, useGatewaySeries, useGatewayBreakdown, useGatewaySessions, useGatewayErrors, useGatewayLogs, useGatewayLog, useGatewayBudgets, useSetGatewayBudget, useDeleteGatewayBudget, useGatewayKeys, useCreateGatewayKey, useRevokeGatewayKey, } from './use-project-gateway.js';
|
|
62
|
-
export * from './use-admin-providers.js';
|
package/dist/react/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
export * from './use-prompt-attachments.js';
|
|
3
|
-
export
|
|
3
|
+
export { useSessionLogRecord } from './use-session-log.js';
|
|
4
4
|
export { useConnectorSetup, useConnectorLinkInfo, } from './connector-setup.js';
|
|
5
5
|
export { useConnectorQuery } from './use-connector-query.js';
|
|
6
6
|
export { resetIdentityState } from './reset-identity-state.js';
|
|
@@ -18,25 +18,15 @@ export { useProjectSecrets, projectSecretsKey } from './use-project-secrets.js';
|
|
|
18
18
|
export { useAccountSecretResources, useSessionProviderSecretPools } from './use-provider-secrets.js';
|
|
19
19
|
export { useProjectTriggers, projectTriggersKey, useProjectTriggerEventTypes, useProjectTriggerEventApps, projectTriggerEventAppsKey, projectTriggerEventTypesKey, } from './use-project-triggers.js';
|
|
20
20
|
export { useProjectReminders, useSessionReminders } from './use-reminders.js';
|
|
21
|
+
export * from './use-capture.js';
|
|
21
22
|
export { useSessionMessageAuthors } from './use-session-message-authors.js';
|
|
22
23
|
export { useSessionModelUsage } from './use-session-model-usage.js';
|
|
23
24
|
export { useChangeRequests, changeRequestsKey } from './use-change-requests.js';
|
|
24
25
|
export { useGatewayRoutingPolicy, gatewayRoutingPolicyKey } from './use-gateway-routing-policy.js';
|
|
25
26
|
export { useProjectApps, useAppDeployments, useAppDeployment, useAppMachines, useAppVolumes, useAppVolumeSnapshots, appMachinesKey, appVolumesKey, useAppAccess, projectAppsKey, appDeploymentsKey, appDeploymentKey, } from './use-project-apps.js';
|
|
26
27
|
export { NoCompactionModelError } from './use-opencode-sessions/no-compaction-model-error.js';
|
|
27
|
-
export * from './use-admin-accounts.js';
|
|
28
|
-
export * from './use-admin-role.js';
|
|
29
|
-
export * from './use-admin-projects.js';
|
|
30
|
-
export * from './use-admin-analytics.js';
|
|
31
|
-
export * from './use-admin-activity-analytics.js';
|
|
32
|
-
export * from './use-admin-feedback.js';
|
|
33
|
-
export * from './use-system-status.js';
|
|
34
|
-
export * from './use-ops-overview.js';
|
|
35
|
-
export * from './use-admin-billing.js';
|
|
36
|
-
export * from './use-impersonation.js';
|
|
37
28
|
export * from './use-teams-installations.js';
|
|
38
29
|
export * from './use-tunnel.js';
|
|
39
|
-
export * from './use-admin-sandboxes.js';
|
|
40
30
|
export * from './use-authenticated-preview-url.js';
|
|
41
31
|
export * from './use-static-file-preview.js';
|
|
42
32
|
export * from './run-pty-command.js';
|
|
@@ -52,6 +42,8 @@ export * from './use-project-sessions.js';
|
|
|
52
42
|
export * from './use-sessions-needing-input.js';
|
|
53
43
|
export * from './use-notifications.js';
|
|
54
44
|
export * from './session-cache-write.js';
|
|
45
|
+
export * from './use-review-summary.js';
|
|
46
|
+
export * from './use-session-list-state.js';
|
|
55
47
|
export * from './invalidate-project.js';
|
|
56
48
|
export * from './use-feature-flag.js';
|
|
57
49
|
export * from './use-project-files.js';
|
|
@@ -60,4 +52,3 @@ export { useBeeuniAppViewer, } from './use-beeuni-app-viewer.js';
|
|
|
60
52
|
export { useModelAccess } from './use-model-access.js';
|
|
61
53
|
export { formatMegabytes, useSandboxImage } from './use-sandbox-image.js';
|
|
62
54
|
export { GATEWAY_LOGS_PAGE_SIZE, useGatewayOverview, useGatewaySeries, useGatewayBreakdown, useGatewaySessions, useGatewayErrors, useGatewayLogs, useGatewayLog, useGatewayBudgets, useSetGatewayBudget, useDeleteGatewayBudget, useGatewayKeys, useCreateGatewayKey, useRevokeGatewayKey, } from './use-project-gateway.js';
|
|
63
|
-
export * from './use-admin-providers.js';
|
package/dist/react/opencode.d.ts
CHANGED
|
@@ -30,6 +30,7 @@ export { useProjectConfig } from './use-project-config.js';
|
|
|
30
30
|
export type { ProjectConfigSummary } from '../core/rest/projects-client/index.js';
|
|
31
31
|
export { useSession, type SessionPhase, type UseSessionResult, type UseSessionOptions, } from './use-session.js';
|
|
32
32
|
export { useSessionMessages, type SessionMessagesOptions, type SessionMessagesSource, } from './use-session-messages.js';
|
|
33
|
+
export { useSessionLog, useSessionLogRecord, useSessionLogThread } from './use-session-log.js';
|
|
33
34
|
export { useSessionPicks, type SessionPicks } from './use-session-picks.js';
|
|
34
35
|
export { useSessionPrompts, sessionPromptsPollMs, startSessionWithPrompt, isOptimisticSessionPrompt, optimisticSessionPrompt, applyOptimisticPrompt, settleOptimisticPrompt, removeOptimisticPrompt, reconcileOptimisticPrompts, OPTIMISTIC_PROMPT_PREFIX, SESSION_PROMPTS_POLL_MS, SESSION_PROMPTS_IDLE_POLL_MS, type StartSessionWithPromptAdapters, type UseSessionPromptsResult, } from './use-session-prompts.js';
|
|
35
36
|
export { readSessionAudit } from './use-session-audit.js';
|
package/dist/react/opencode.js
CHANGED
|
@@ -30,6 +30,7 @@ export { useProjectModelPickerCatalog, useProjectModels } from './use-project-mo
|
|
|
30
30
|
export { useProjectConfig } from './use-project-config.js';
|
|
31
31
|
export { useSession, } from './use-session.js';
|
|
32
32
|
export { useSessionMessages, } from './use-session-messages.js';
|
|
33
|
+
export { useSessionLog, useSessionLogRecord, useSessionLogThread } from './use-session-log.js';
|
|
33
34
|
export { useSessionPicks } from './use-session-picks.js';
|
|
34
35
|
export { useSessionPrompts, sessionPromptsPollMs, startSessionWithPrompt, isOptimisticSessionPrompt, optimisticSessionPrompt, applyOptimisticPrompt, settleOptimisticPrompt, removeOptimisticPrompt, reconcileOptimisticPrompts, OPTIMISTIC_PROMPT_PREFIX, SESSION_PROMPTS_POLL_MS, SESSION_PROMPTS_IDLE_POLL_MS, } from './use-session-prompts.js';
|
|
35
36
|
export { readSessionAudit } from './use-session-audit.js';
|