@openchamber/sdk 2.1.1 → 2.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/API.md +21 -3
- package/DOCUMENTATION.md +5 -3
- package/GUEST_SERVICES.md +1 -0
- package/README.md +2 -0
- package/dist/contract.d.ts +22 -5
- package/dist/contract.js +5 -1
- package/dist/host-version.d.ts +2 -1
- package/dist/host.d.ts +7 -0
- package/dist/host.js +59 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.js +1 -0
- package/dist/manifest.d.ts +4 -4
- package/dist/manifest.js +4 -4
- package/dist/parse.d.ts +4 -2
- package/dist/protocol.d.ts +108 -5
- package/dist/protocol.js +43 -0
- package/dist/scrollbar-style.d.ts +1 -1
- package/dist/scrollbar-style.js +3 -2
- package/dist/shells.d.ts +69 -0
- package/dist/shells.js +4 -0
- package/dist/ui/index.d.ts +1 -0
- package/dist/ui/index.js +1 -0
- package/dist/ui/option.js +8 -0
- package/dist/ui/style.d.ts +9 -0
- package/dist/ui/style.js +156 -78
- package/package.json +1 -1
package/dist/protocol.d.ts
CHANGED
|
@@ -92,6 +92,48 @@ export declare const hostMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
92
92
|
}, z.core.$strip>;
|
|
93
93
|
channel: z.ZodLiteral<"openchamber.sdk">;
|
|
94
94
|
v: z.ZodLiteral<1>;
|
|
95
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
96
|
+
type: z.ZodLiteral<"shells">;
|
|
97
|
+
payload: z.ZodObject<{
|
|
98
|
+
subscriptionId: z.ZodString;
|
|
99
|
+
snapshot: z.ZodObject<{
|
|
100
|
+
kind: z.ZodLiteral<"shells">;
|
|
101
|
+
scope: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
102
|
+
kind: z.ZodLiteral<"session">;
|
|
103
|
+
sessionId: z.ZodString;
|
|
104
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
105
|
+
kind: z.ZodLiteral<"project">;
|
|
106
|
+
projectId: z.ZodString;
|
|
107
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
108
|
+
kind: z.ZodLiteral<"global">;
|
|
109
|
+
}, z.core.$strict>], "kind">;
|
|
110
|
+
shells: z.ZodArray<z.ZodObject<{
|
|
111
|
+
id: z.ZodString;
|
|
112
|
+
sessionID: z.ZodString;
|
|
113
|
+
command: z.ZodString;
|
|
114
|
+
startedAt: z.ZodNumber;
|
|
115
|
+
background: z.ZodBoolean;
|
|
116
|
+
}, z.core.$strict>>;
|
|
117
|
+
ended: z.ZodArray<z.ZodObject<{
|
|
118
|
+
id: z.ZodString;
|
|
119
|
+
sessionID: z.ZodString;
|
|
120
|
+
command: z.ZodString;
|
|
121
|
+
startedAt: z.ZodNumber;
|
|
122
|
+
background: z.ZodBoolean;
|
|
123
|
+
status: z.ZodEnum<{
|
|
124
|
+
exited: "exited";
|
|
125
|
+
timeout: "timeout";
|
|
126
|
+
killed: "killed";
|
|
127
|
+
stopped: "stopped";
|
|
128
|
+
unknown: "unknown";
|
|
129
|
+
}>;
|
|
130
|
+
exit: z.ZodOptional<z.ZodNumber>;
|
|
131
|
+
endedAt: z.ZodNumber;
|
|
132
|
+
}, z.core.$strict>>;
|
|
133
|
+
}, z.core.$strict>;
|
|
134
|
+
}, z.core.$strip>;
|
|
135
|
+
channel: z.ZodLiteral<"openchamber.sdk">;
|
|
136
|
+
v: z.ZodLiteral<1>;
|
|
95
137
|
}, z.core.$strip>, z.ZodObject<{
|
|
96
138
|
type: z.ZodLiteral<"ready">;
|
|
97
139
|
payload: z.ZodObject<{
|
|
@@ -459,7 +501,13 @@ export declare const hostMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
459
501
|
data: z.ZodOptional<z.ZodJSONSchema>;
|
|
460
502
|
}, z.core.$strip>>;
|
|
461
503
|
}, z.core.$strip>>;
|
|
462
|
-
}, z.core.$strip>], "kind">, z.
|
|
504
|
+
}, z.core.$strip>], "kind">, z.ZodObject<{
|
|
505
|
+
output: z.ZodString;
|
|
506
|
+
cursor: z.ZodNumber;
|
|
507
|
+
skipped: z.ZodBoolean;
|
|
508
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
509
|
+
stopped: z.ZodLiteral<true>;
|
|
510
|
+
}, z.core.$strip>, z.ZodUnion<readonly [z.ZodObject<{
|
|
463
511
|
sessionId: z.ZodString;
|
|
464
512
|
sent: z.ZodEnum<{
|
|
465
513
|
failed: "failed";
|
|
@@ -511,9 +559,9 @@ export declare const hostMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
511
559
|
}>;
|
|
512
560
|
}, z.core.$strip>, z.ZodObject<{
|
|
513
561
|
status: z.ZodEnum<{
|
|
562
|
+
stopped: "stopped";
|
|
514
563
|
ready: "ready";
|
|
515
564
|
failed: "failed";
|
|
516
|
-
stopped: "stopped";
|
|
517
565
|
starting: "starting";
|
|
518
566
|
}>;
|
|
519
567
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -641,7 +689,7 @@ export declare const hostMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
641
689
|
} | {
|
|
642
690
|
sent: "failed" | "sent" | "no-model" | "skipped";
|
|
643
691
|
} | {
|
|
644
|
-
status: "
|
|
692
|
+
status: "stopped" | "ready" | "failed" | "starting";
|
|
645
693
|
} | {
|
|
646
694
|
content: string;
|
|
647
695
|
} | {
|
|
@@ -657,6 +705,12 @@ export declare const hostMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
657
705
|
mtime: number;
|
|
658
706
|
} | {
|
|
659
707
|
text: string;
|
|
708
|
+
} | {
|
|
709
|
+
output: string;
|
|
710
|
+
cursor: number;
|
|
711
|
+
skipped: boolean;
|
|
712
|
+
} | {
|
|
713
|
+
stopped: true;
|
|
660
714
|
};
|
|
661
715
|
error?: undefined;
|
|
662
716
|
code?: undefined;
|
|
@@ -676,7 +730,7 @@ export declare const hostMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
676
730
|
id: string;
|
|
677
731
|
ok: false;
|
|
678
732
|
error: string;
|
|
679
|
-
code: "HOST_UNAVAILABLE" | "HOST_TIMEOUT" | "HOST_REJECTED" | "DISCONNECTED" | "DISABLED" | "BAD_PATH" | "NO_INTEGRATION" | "NO_SERVICE" | "SERVICE_FAILED" | "NO_SESSION" | "SESSION_BUSY" | "NOT_GRANTED" | "NO_DIRECTORY" | "NOT_FOUND" | "FILE_TOO_LARGE" | "DENIED" | "NO_MODEL" | "MODEL_FAILED" | "UNSUPPORTED";
|
|
733
|
+
code: "HOST_UNAVAILABLE" | "HOST_TIMEOUT" | "HOST_REJECTED" | "DISCONNECTED" | "DISABLED" | "BAD_PATH" | "NO_INTEGRATION" | "NO_SERVICE" | "SERVICE_FAILED" | "REQUEST_FAILED" | "RESPONSE_TOO_LARGE" | "NO_SESSION" | "SESSION_BUSY" | "NOT_GRANTED" | "NO_DIRECTORY" | "NOT_FOUND" | "FILE_TOO_LARGE" | "DENIED" | "NO_MODEL" | "MODEL_FAILED" | "UNSUPPORTED";
|
|
680
734
|
payload?: undefined;
|
|
681
735
|
}, {
|
|
682
736
|
type: "result";
|
|
@@ -778,7 +832,7 @@ export declare const hostMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
778
832
|
} | {
|
|
779
833
|
sent: "failed" | "sent" | "no-model" | "skipped";
|
|
780
834
|
} | {
|
|
781
|
-
status: "
|
|
835
|
+
status: "stopped" | "ready" | "failed" | "starting";
|
|
782
836
|
} | {
|
|
783
837
|
content: string;
|
|
784
838
|
} | {
|
|
@@ -794,6 +848,12 @@ export declare const hostMessageSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
|
794
848
|
mtime: number;
|
|
795
849
|
} | {
|
|
796
850
|
text: string;
|
|
851
|
+
} | {
|
|
852
|
+
output: string;
|
|
853
|
+
cursor: number;
|
|
854
|
+
skipped: boolean;
|
|
855
|
+
} | {
|
|
856
|
+
stopped: true;
|
|
797
857
|
} | undefined;
|
|
798
858
|
}>>, z.ZodObject<{
|
|
799
859
|
type: z.ZodLiteral<"action">;
|
|
@@ -915,6 +975,49 @@ export declare const guestMessageSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
915
975
|
}, z.core.$strip>;
|
|
916
976
|
channel: z.ZodLiteral<"openchamber.sdk">;
|
|
917
977
|
v: z.ZodLiteral<1>;
|
|
978
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
979
|
+
type: z.ZodLiteral<"shells-subscribe">;
|
|
980
|
+
id: z.ZodString;
|
|
981
|
+
payload: z.ZodObject<{
|
|
982
|
+
subscriptionId: z.ZodString;
|
|
983
|
+
scope: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
984
|
+
kind: z.ZodLiteral<"session">;
|
|
985
|
+
sessionId: z.ZodString;
|
|
986
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
987
|
+
kind: z.ZodLiteral<"project">;
|
|
988
|
+
projectId: z.ZodString;
|
|
989
|
+
}, z.core.$strict>, z.ZodObject<{
|
|
990
|
+
kind: z.ZodLiteral<"global">;
|
|
991
|
+
}, z.core.$strict>], "kind">;
|
|
992
|
+
}, z.core.$strict>;
|
|
993
|
+
channel: z.ZodLiteral<"openchamber.sdk">;
|
|
994
|
+
v: z.ZodLiteral<1>;
|
|
995
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
996
|
+
type: z.ZodLiteral<"shells-unsubscribe">;
|
|
997
|
+
id: z.ZodString;
|
|
998
|
+
payload: z.ZodObject<{
|
|
999
|
+
subscriptionId: z.ZodString;
|
|
1000
|
+
}, z.core.$strict>;
|
|
1001
|
+
channel: z.ZodLiteral<"openchamber.sdk">;
|
|
1002
|
+
v: z.ZodLiteral<1>;
|
|
1003
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
1004
|
+
type: z.ZodLiteral<"shell-output">;
|
|
1005
|
+
id: z.ZodString;
|
|
1006
|
+
payload: z.ZodObject<{
|
|
1007
|
+
shellId: z.ZodString;
|
|
1008
|
+
cursor: z.ZodOptional<z.ZodNumber>;
|
|
1009
|
+
tailBytes: z.ZodOptional<z.ZodNumber>;
|
|
1010
|
+
}, z.core.$strict>;
|
|
1011
|
+
channel: z.ZodLiteral<"openchamber.sdk">;
|
|
1012
|
+
v: z.ZodLiteral<1>;
|
|
1013
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
1014
|
+
type: z.ZodLiteral<"shell-stop">;
|
|
1015
|
+
id: z.ZodString;
|
|
1016
|
+
payload: z.ZodObject<{
|
|
1017
|
+
shellId: z.ZodString;
|
|
1018
|
+
}, z.core.$strict>;
|
|
1019
|
+
channel: z.ZodLiteral<"openchamber.sdk">;
|
|
1020
|
+
v: z.ZodLiteral<1>;
|
|
918
1021
|
}, z.core.$strip>, z.ZodObject<{
|
|
919
1022
|
type: z.ZodLiteral<"storage">;
|
|
920
1023
|
id: z.ZodString;
|
package/dist/protocol.js
CHANGED
|
@@ -2,6 +2,7 @@ import { z } from 'zod';
|
|
|
2
2
|
import { guestSessionWorktreeSchema, guestStorageRequestSchema, guestStorageResultSchema, guestWorkspaceQuerySchema, guestWorkspaceSnapshotSchema } from "./workspace-schemas.js";
|
|
3
3
|
import { guestStatusControlEventSchema, guestStatusControlsSchema } from "./status-control-schemas.js";
|
|
4
4
|
import { guestPopoverClosedEventSchema, guestPopoverDataSchema, guestPopoverRequestSchema } from "./popover-schemas.js";
|
|
5
|
+
import { GUEST_SHELL_END_STATUSES, GUEST_SHELL_ID_MAX, GUEST_SHELLS_MAX, GUEST_SHELL_OUTPUT_TAIL_MAX } from "./shells.js";
|
|
5
6
|
import { OPENCHAMBER_SDK_API_VERSION, OPENCHAMBER_SDK_CHANNEL } from "./api-version.js";
|
|
6
7
|
import { SERVICE_STATUS_VALUES, ATTACH_PROVIDER_ID, GUEST_ACCOUNT_MAX, GUEST_ATTACH_AUTHOR_MAX, GUEST_BADGE_MAX, GUEST_FRAME_HEIGHT_MAX, GUEST_COMMIT_SHA, GUEST_ITEM_MESSAGE_TEXT_MAX, GUEST_ITEM_SESSION_MAX, GUEST_RESOLVE_ERROR_MAX, GUEST_ATTACH_BRANCH_MAX, GUEST_ATTACH_DATA_MAX, GUEST_ATTACH_ID_MAX, GUEST_ATTACH_TEXT_MAX, GUEST_ATTACH_TITLE_MAX, GUEST_ATTACH_URL_MAX, GUEST_CLIPBOARD_TEXT_MAX, GUEST_COMPOSE_TEXT_MAX, GUEST_FILE_CONTENT_MAX, GUEST_FILE_ENTRY_KINDS, GUEST_FILE_LIST_MAX, GUEST_GENERATE_OUTPUT_TOKENS_MAX, GUEST_GENERATE_PROMPT_MAX, GUEST_GENERATE_SYSTEM_MAX, GUEST_GENERATE_TEXT_MAX, GUEST_FILE_PATH_MAX, GUEST_FILE_STAT_KINDS, GUEST_REQUEST_BODY_MAX, GUEST_REQUEST_PATH_MAX, GUEST_REQUEST_RESPONSE_MAX, GUEST_SESSION_AGENT_MAX, GUEST_SESSION_MODEL_MAX, GUEST_SETTING_VALUE_MAX, GUEST_TOAST_MAX, SESSION_LIFECYCLE_PHASES, SETTING_KEY, START_SESSION_SENT, isGuestFilePath, isGuestRequestPath, resolveHostRequestErrorCode, } from "./contract.js";
|
|
7
8
|
import { GUEST_FILE_EDITOR_CONTENT_MAX, GUEST_FILE_EDITOR_VERSION_MAX } from "./file-editor.js";
|
|
@@ -98,9 +99,19 @@ const fileStatResultPayloadSchema = z.object({
|
|
|
98
99
|
const generateResultPayloadSchema = z.object({
|
|
99
100
|
text: z.string().max(GUEST_GENERATE_TEXT_MAX),
|
|
100
101
|
});
|
|
102
|
+
const shellOutputResultPayloadSchema = z.object({
|
|
103
|
+
output: z.string(),
|
|
104
|
+
cursor: z.number(),
|
|
105
|
+
skipped: z.boolean(),
|
|
106
|
+
});
|
|
107
|
+
const shellStopResultPayloadSchema = z.object({
|
|
108
|
+
stopped: z.literal(true),
|
|
109
|
+
});
|
|
101
110
|
const hostResultPayloadSchema = z.union([
|
|
102
111
|
guestStorageResultSchema,
|
|
103
112
|
guestWorkspaceSnapshotSchema,
|
|
113
|
+
shellOutputResultPayloadSchema,
|
|
114
|
+
shellStopResultPayloadSchema,
|
|
104
115
|
startSessionResultPayloadSchema,
|
|
105
116
|
requestResultPayloadSchema,
|
|
106
117
|
promptResultPayloadSchema,
|
|
@@ -214,8 +225,36 @@ const hostResultSchema = z.object({
|
|
|
214
225
|
code: resolveHostRequestErrorCode(message.code),
|
|
215
226
|
};
|
|
216
227
|
});
|
|
228
|
+
const guestRunningShellSchema = z.object({
|
|
229
|
+
id: z.string().min(1).max(GUEST_SHELL_ID_MAX),
|
|
230
|
+
sessionID: z.string().min(1).max(1024),
|
|
231
|
+
command: z.string(),
|
|
232
|
+
startedAt: z.number().nonnegative(),
|
|
233
|
+
background: z.boolean(),
|
|
234
|
+
}).strict();
|
|
235
|
+
const guestEndedShellSchema = guestRunningShellSchema.extend({
|
|
236
|
+
status: z.enum(GUEST_SHELL_END_STATUSES),
|
|
237
|
+
exit: z.number().int().optional(),
|
|
238
|
+
endedAt: z.number().nonnegative(),
|
|
239
|
+
}).strict();
|
|
240
|
+
const guestShellsScopeSchema = z.discriminatedUnion('kind', [
|
|
241
|
+
z.object({ kind: z.literal('session'), sessionId: z.string().min(1).max(1024) }).strict(),
|
|
242
|
+
z.object({ kind: z.literal('project'), projectId: z.string().min(1).max(1024) }).strict(),
|
|
243
|
+
z.object({ kind: z.literal('global') }).strict(),
|
|
244
|
+
]);
|
|
245
|
+
const guestRunningShellsSnapshotSchema = z.object({
|
|
246
|
+
kind: z.literal('shells'),
|
|
247
|
+
scope: guestShellsScopeSchema,
|
|
248
|
+
shells: z.array(guestRunningShellSchema).max(GUEST_SHELLS_MAX),
|
|
249
|
+
ended: z.array(guestEndedShellSchema).max(GUEST_SHELLS_MAX),
|
|
250
|
+
}).strict();
|
|
217
251
|
export const hostMessageSchema = z.union([
|
|
218
252
|
z.object({ ...envelope, type: z.literal('workspace'), payload: z.object({ subscriptionId: z.string().min(1).max(128), snapshot: guestWorkspaceSnapshotSchema }) }),
|
|
253
|
+
z.object({
|
|
254
|
+
...envelope,
|
|
255
|
+
type: z.literal('shells'),
|
|
256
|
+
payload: z.object({ subscriptionId: z.string().min(1).max(128), snapshot: guestRunningShellsSnapshotSchema }),
|
|
257
|
+
}),
|
|
219
258
|
z.object({
|
|
220
259
|
...envelope,
|
|
221
260
|
type: z.literal('ready'),
|
|
@@ -332,6 +371,10 @@ export const guestMessageSchema = z.discriminatedUnion('type', [
|
|
|
332
371
|
z.object({ ...envelope, type: z.literal('workspace-read'), id: z.string().min(1), payload: guestWorkspaceQuerySchema }),
|
|
333
372
|
z.object({ ...envelope, type: z.literal('workspace-subscribe'), id: z.string().min(1), payload: z.object({ subscriptionId: z.string().min(1).max(128), query: guestWorkspaceQuerySchema }) }),
|
|
334
373
|
z.object({ ...envelope, type: z.literal('workspace-unsubscribe'), id: z.string().min(1), payload: z.object({ subscriptionId: z.string().min(1).max(128) }) }),
|
|
374
|
+
z.object({ ...envelope, type: z.literal('shells-subscribe'), id: z.string().min(1), payload: z.object({ subscriptionId: z.string().min(1).max(128), scope: guestShellsScopeSchema }).strict() }),
|
|
375
|
+
z.object({ ...envelope, type: z.literal('shells-unsubscribe'), id: z.string().min(1), payload: z.object({ subscriptionId: z.string().min(1).max(128) }).strict() }),
|
|
376
|
+
z.object({ ...envelope, type: z.literal('shell-output'), id: z.string().min(1), payload: z.object({ shellId: z.string().min(1).max(GUEST_SHELL_ID_MAX), cursor: z.number().int().nonnegative().optional(), tailBytes: z.number().int().positive().max(GUEST_SHELL_OUTPUT_TAIL_MAX).optional() }).strict() }),
|
|
377
|
+
z.object({ ...envelope, type: z.literal('shell-stop'), id: z.string().min(1), payload: z.object({ shellId: z.string().min(1).max(GUEST_SHELL_ID_MAX) }).strict() }),
|
|
335
378
|
z.object({ ...envelope, type: z.literal('storage'), id: z.string().min(1), payload: guestStorageRequestSchema }),
|
|
336
379
|
z.object({
|
|
337
380
|
...envelope,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const GUEST_SCROLLBAR_CSS = "\n:root {\n --oc-scrollbar-thumb: color-mix(in srgb, var(--oc-muted, currentColor)
|
|
1
|
+
export declare const GUEST_SCROLLBAR_CSS = "\n:root {\n /* Quiet at rest like the app's own thumbs; hover gives a clear grab target. */\n --oc-scrollbar-thumb: color-mix(in srgb, var(--oc-muted, currentColor) 18%, transparent);\n --oc-scrollbar-thumb-hover: color-mix(in srgb, var(--oc-muted, currentColor) 36%, transparent);\n scrollbar-gutter: stable;\n}\n* {\n scrollbar-width: thin;\n scrollbar-color: transparent transparent;\n}\n:hover, [data-oc-scrolling] {\n scrollbar-color: var(--oc-scrollbar-thumb) transparent;\n}\n/* Chromium's standard scrollbar properties otherwise override its pseudo-elements. */\n@supports selector(::-webkit-scrollbar) {\n *, :hover, [data-oc-scrolling] { scrollbar-width: auto; scrollbar-color: auto; }\n ::-webkit-scrollbar { width: 6px; height: 6px; background: transparent; }\n ::-webkit-scrollbar-track { background: transparent; }\n ::-webkit-scrollbar-thumb {\n background: transparent;\n border-radius: 999px;\n min-width: 24px;\n min-height: 24px;\n }\n :hover::-webkit-scrollbar-thumb, [data-oc-scrolling]::-webkit-scrollbar-thumb { background: var(--oc-scrollbar-thumb); }\n ::-webkit-scrollbar-thumb:hover { background: var(--oc-scrollbar-thumb-hover); }\n ::-webkit-scrollbar-corner { background: transparent; }\n ::-webkit-scrollbar-button { display: none; width: 0; height: 0; }\n}\n@media (forced-colors: active) {\n *, :hover, [data-oc-scrolling] { scrollbar-color: auto; }\n ::-webkit-scrollbar-thumb, ::-webkit-scrollbar-thumb:hover { background: CanvasText; }\n}\n";
|
|
2
2
|
/**
|
|
3
3
|
* Marks whichever element scrolls (the root for document scrolling) with
|
|
4
4
|
* `GUEST_SCROLLING_ATTRIBUTE` and clears it once scrolling has been quiet for
|
package/dist/scrollbar-style.js
CHANGED
|
@@ -14,8 +14,9 @@
|
|
|
14
14
|
const GUEST_SCROLLING_ATTRIBUTE = 'data-oc-scrolling';
|
|
15
15
|
export const GUEST_SCROLLBAR_CSS = `
|
|
16
16
|
:root {
|
|
17
|
-
|
|
18
|
-
--oc-scrollbar-thumb
|
|
17
|
+
/* Quiet at rest like the app's own thumbs; hover gives a clear grab target. */
|
|
18
|
+
--oc-scrollbar-thumb: color-mix(in srgb, var(--oc-muted, currentColor) 18%, transparent);
|
|
19
|
+
--oc-scrollbar-thumb-hover: color-mix(in srgb, var(--oc-muted, currentColor) 36%, transparent);
|
|
19
20
|
scrollbar-gutter: stable;
|
|
20
21
|
}
|
|
21
22
|
* {
|
package/dist/shells.d.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
export declare const GUEST_SHELL_ID_MAX = 128;
|
|
2
|
+
export declare const GUEST_SHELLS_MAX = 200;
|
|
3
|
+
export declare const GUEST_SHELL_OUTPUT_TAIL_MAX = 65536;
|
|
4
|
+
/** A shell command still running on behalf of a session. */
|
|
5
|
+
export type GuestRunningShell = {
|
|
6
|
+
id: string;
|
|
7
|
+
sessionID: string;
|
|
8
|
+
command: string;
|
|
9
|
+
startedAt: number;
|
|
10
|
+
/** True for a job the turn does not wait for; false while the turn that ran it is blocked on it. */
|
|
11
|
+
background: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare const GUEST_SHELL_END_STATUSES: readonly ["exited", "timeout", "killed", "stopped", "unknown"];
|
|
14
|
+
/**
|
|
15
|
+
* How a shell command ended: `exited` on its own (see `exit`), `timeout`,
|
|
16
|
+
* `killed` by a signal, `stopped` by a user (Stop, or aborting the turn that
|
|
17
|
+
* waited on it), or `unknown` when
|
|
18
|
+
* OpenChamber missed the end (a reconnect) and only saw the command gone.
|
|
19
|
+
*/
|
|
20
|
+
export type GuestShellEndStatus = (typeof GUEST_SHELL_END_STATUSES)[number];
|
|
21
|
+
/** A shell command OpenChamber saw running that has since ended. */
|
|
22
|
+
export type GuestEndedShell = GuestRunningShell & {
|
|
23
|
+
status: GuestShellEndStatus;
|
|
24
|
+
/** Exit code, when the command exited and OpenCode reported one. */
|
|
25
|
+
exit?: number;
|
|
26
|
+
endedAt: number;
|
|
27
|
+
};
|
|
28
|
+
/**
|
|
29
|
+
* Which running shells a subscription covers: one session and its subagents,
|
|
30
|
+
* every session of a registered project, or every session the app sees.
|
|
31
|
+
*/
|
|
32
|
+
export type GuestShellsScope = {
|
|
33
|
+
kind: 'session';
|
|
34
|
+
sessionId: string;
|
|
35
|
+
} | {
|
|
36
|
+
kind: 'project';
|
|
37
|
+
projectId: string;
|
|
38
|
+
} | {
|
|
39
|
+
kind: 'global';
|
|
40
|
+
};
|
|
41
|
+
export type GuestRunningShellsSnapshot = {
|
|
42
|
+
kind: 'shells';
|
|
43
|
+
/** Echo of the scope the subscription asked for. */
|
|
44
|
+
scope: GuestShellsScope;
|
|
45
|
+
shells: GuestRunningShell[];
|
|
46
|
+
/**
|
|
47
|
+
* Commands in scope that ended since OpenChamber started watching, oldest
|
|
48
|
+
* end first. Kept in memory only: empty after an app reload or runtime
|
|
49
|
+
* switch, and capped at `GUEST_SHELLS_MAX`, newest kept.
|
|
50
|
+
*/
|
|
51
|
+
ended: GuestEndedShell[];
|
|
52
|
+
};
|
|
53
|
+
export type GuestShellsSubscription = {
|
|
54
|
+
subscriptionId: string;
|
|
55
|
+
scope: GuestShellsScope;
|
|
56
|
+
};
|
|
57
|
+
export type GuestShellOutputRequest = {
|
|
58
|
+
shellId: string;
|
|
59
|
+
cursor?: number;
|
|
60
|
+
tailBytes?: number;
|
|
61
|
+
};
|
|
62
|
+
export type GuestShellOutputResult = {
|
|
63
|
+
output: string;
|
|
64
|
+
cursor: number;
|
|
65
|
+
skipped: boolean;
|
|
66
|
+
};
|
|
67
|
+
export type GuestShellStopResult = {
|
|
68
|
+
stopped: true;
|
|
69
|
+
};
|
package/dist/shells.js
ADDED
package/dist/ui/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export { applyHostReady, applyHostTheme } from './theme.ts';
|
|
2
2
|
export type { ThemeRoot } from './theme.ts';
|
|
3
|
+
export { GUEST_UI_LOOK_CSS } from './style.ts';
|
|
3
4
|
export type { Handle } from './dom.ts';
|
|
4
5
|
export { mountButton } from './button.ts';
|
|
5
6
|
export type { ButtonHandle, ButtonProps, ButtonSize, ButtonVariant } from './button.ts';
|
package/dist/ui/index.js
CHANGED
package/dist/ui/option.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { button, el, setAttr } from "./dom.js";
|
|
2
|
+
import { icon } from "./icons.js";
|
|
2
3
|
const optionId = (uid, id) => `${uid}-${id ?? ''}`;
|
|
3
4
|
export const createOption = (uid, role, spec, on) => {
|
|
4
5
|
const node = button('oc-sdk-option');
|
|
@@ -18,6 +19,13 @@ export const createOption = (uid, role, spec, on) => {
|
|
|
18
19
|
hint.textContent = spec.hint;
|
|
19
20
|
node.append(hint);
|
|
20
21
|
}
|
|
22
|
+
if (role === 'option') {
|
|
23
|
+
// The host's styles drop the selection fill only for options that carry the mark.
|
|
24
|
+
node.dataset.mark = 'check';
|
|
25
|
+
const check = el('span', 'oc-sdk-option-check');
|
|
26
|
+
check.append(icon('check', 14));
|
|
27
|
+
node.append(check);
|
|
28
|
+
}
|
|
21
29
|
node.addEventListener('pointerenter', on.hover);
|
|
22
30
|
node.addEventListener('click', on.pick);
|
|
23
31
|
return node;
|
package/dist/ui/style.d.ts
CHANGED
|
@@ -1 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Appearance: colours, fonts, borders, corner radii, shadows, and the hover,
|
|
3
|
+
* pressed, selected and focus states. The kit carries it for previews outside
|
|
4
|
+
* the host, and the server appends the running app's copy to every served
|
|
5
|
+
* extension document, after the kit's own style element, so installed bundles
|
|
6
|
+
* follow the app's look without a rebuild. Selectors here keep the specificity
|
|
7
|
+
* of the rules they override in older bundles.
|
|
8
|
+
*/
|
|
9
|
+
export declare const GUEST_UI_LOOK_CSS: string;
|
|
1
10
|
export declare const UI_CSS: string;
|