@orbit-work/oem-sdk 0.1.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.
@@ -0,0 +1,4 @@
1
+ export { applyOemEntry, createOemActionHost, createRestrictedOemApi, createTranslator, createUnavailableActionApi, validateDictionary } from './chunk-YMKYAM23.js';
2
+ export { BRAND_MANIFEST_SCHEMA, manifestToBrandTheme, parseBrandManifest, parsePartialBrandManifest } from './chunk-5MBEDX73.js';
3
+ //# sourceMappingURL=runtime.js.map
4
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"runtime.js"}
package/dist/vite.d.ts ADDED
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Host-owned Vite invariants shared by the external scaffold, Desktop build,
3
+ * and the compiled Dev Host bridge. Keep this value dependency-free so config files can
4
+ * consume it without bundling a second Vite implementation.
5
+ */
6
+ declare const OEM_VITE_CONFIG: {
7
+ readonly resolve: {
8
+ readonly dedupe: readonly ["react", "react-dom", "react/jsx-runtime", "@orbit-work/ui", "@orbit-work/oem-sdk"];
9
+ };
10
+ readonly css: {
11
+ readonly modules: {
12
+ readonly scopeBehaviour: "local";
13
+ readonly generateScopedName: "ow-oem_[local]_[hash:base64:8]";
14
+ };
15
+ };
16
+ readonly build: {
17
+ readonly sourcemap: false;
18
+ };
19
+ };
20
+
21
+ export { OEM_VITE_CONFIG };
package/dist/vite.js ADDED
@@ -0,0 +1,19 @@
1
+ // src/vite.ts
2
+ var OEM_VITE_CONFIG = {
3
+ resolve: {
4
+ dedupe: ["react", "react-dom", "react/jsx-runtime", "@orbit-work/ui", "@orbit-work/oem-sdk"]
5
+ },
6
+ css: {
7
+ modules: {
8
+ scopeBehaviour: "local",
9
+ generateScopedName: "ow-oem_[local]_[hash:base64:8]"
10
+ }
11
+ },
12
+ build: {
13
+ sourcemap: false
14
+ }
15
+ };
16
+
17
+ export { OEM_VITE_CONFIG };
18
+ //# sourceMappingURL=vite.js.map
19
+ //# sourceMappingURL=vite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/vite.ts"],"names":[],"mappings":";AAKO,IAAM,eAAA,GAAkB;AAAA,EAC7B,OAAA,EAAS;AAAA,IACP,QAAQ,CAAC,OAAA,EAAS,WAAA,EAAa,mBAAA,EAAqB,kBAAkB,qBAAqB;AAAA,GAC7F;AAAA,EACA,GAAA,EAAK;AAAA,IACH,OAAA,EAAS;AAAA,MACP,cAAA,EAAgB,OAAA;AAAA,MAChB,kBAAA,EAAoB;AAAA;AACtB,GACF;AAAA,EACA,KAAA,EAAO;AAAA,IACL,SAAA,EAAW;AAAA;AAEf","file":"vite.js","sourcesContent":["/**\n * Host-owned Vite invariants shared by the external scaffold, Desktop build,\n * and the compiled Dev Host bridge. Keep this value dependency-free so config files can\n * consume it without bundling a second Vite implementation.\n */\nexport const OEM_VITE_CONFIG = {\n resolve: {\n dedupe: [\"react\", \"react-dom\", \"react/jsx-runtime\", \"@orbit-work/ui\", \"@orbit-work/oem-sdk\"] as const,\n },\n css: {\n modules: {\n scopeBehaviour: \"local\" as const,\n generateScopedName: \"ow-oem_[local]_[hash:base64:8]\",\n },\n },\n build: {\n sourcemap: false as const,\n },\n} as const\n"]}
package/package.json ADDED
@@ -0,0 +1,62 @@
1
+ {
2
+ "name": "@orbit-work/oem-sdk",
3
+ "version": "0.1.0",
4
+ "description": "Public contracts and build-time audit tools for Orbitwork OEM extensions.",
5
+ "type": "module",
6
+ "publishConfig": {
7
+ "access": "public",
8
+ "registry": "https://registry.npmjs.org/"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "import": "./dist/index.js"
16
+ },
17
+ "./runtime": {
18
+ "types": "./dist/runtime.d.ts",
19
+ "import": "./dist/runtime.js"
20
+ },
21
+ "./manifest": {
22
+ "types": "./dist/manifest.d.ts",
23
+ "import": "./dist/manifest.js"
24
+ },
25
+ "./audit": {
26
+ "types": "./dist/audit.d.ts",
27
+ "import": "./dist/audit.js"
28
+ },
29
+ "./vite": {
30
+ "types": "./dist/vite.d.ts",
31
+ "import": "./dist/vite.js"
32
+ },
33
+ "./manifest.schema.json": "./schema/orbit-brand.schema.json"
34
+ },
35
+ "bin": {
36
+ "orbit-audit-brand": "./bin/orbit-audit-brand.mjs"
37
+ },
38
+ "files": [
39
+ "bin",
40
+ "dist",
41
+ "schema"
42
+ ],
43
+ "dependencies": {
44
+ "@orbit-work/ui": "0.1.1",
45
+ "esbuild": "^0.27.7",
46
+ "es-module-lexer": "^2.3.2"
47
+ },
48
+ "devDependencies": {
49
+ "@types/node": "^22.10.2",
50
+ "tsup": "^8.5.1",
51
+ "typescript": "^5.6.3"
52
+ },
53
+ "engines": {
54
+ "node": ">=20.0.0"
55
+ },
56
+ "scripts": {
57
+ "build": "tsup",
58
+ "lint": "biome check ../../packages/oem-sdk/src/",
59
+ "test": "node --test \"src/**/*.test.mjs\"",
60
+ "typecheck": "tsc --noEmit"
61
+ }
62
+ }
@@ -0,0 +1,314 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "@orbit-work/oem-sdk/manifest@1",
4
+ "title": "Orbitwork OEM brand manifest",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["$schema", "id", "identity", "assets", "branding"],
8
+ "properties": {
9
+ "$schema": { "const": "@orbit-work/oem-sdk/manifest@1" },
10
+ "id": { "$ref": "#/$defs/kebabId" },
11
+ "description": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 200 }] },
12
+ "assistantName": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 48 }] },
13
+ "homepage": {
14
+ "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 200 }, { "pattern": "^https://" }]
15
+ },
16
+ "permissions": {
17
+ "type": "object",
18
+ "additionalProperties": false,
19
+ "required": ["microphoneUsage"],
20
+ "properties": {
21
+ "microphoneUsage": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 120 }] }
22
+ }
23
+ },
24
+ "entry": {
25
+ "allOf": [{ "$ref": "#/$defs/packagePath" }, { "pattern": "^\\./src/.+\\.(?:[cm]?js|[jt]sx?)$" }]
26
+ },
27
+ "identity": {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "required": ["productName", "appId", "versionChannel", "protocolScheme"],
31
+ "properties": {
32
+ "productName": {
33
+ "type": "string",
34
+ "minLength": 1,
35
+ "maxLength": 64,
36
+ "pattern": "^(?!\\.{1,2}$)(?!.*[. ]$)(?!CON(?:\\..*)?$)(?!PRN(?:\\..*)?$)(?!AUX(?:\\..*)?$)(?!NUL(?:\\..*)?$)(?!COM[1-9](?:\\..*)?$)(?!LPT[1-9](?:\\..*)?$)[^\\u0000-\\u001F\\u007F<>:\\\\|?*/]+$"
37
+ },
38
+ "appId": {
39
+ "type": "string",
40
+ "maxLength": 160,
41
+ "pattern": "^[A-Za-z][A-Za-z0-9]*(\\.[A-Za-z0-9][A-Za-z0-9-]*)*\\.oem\\.[a-z0-9]+(?:-[a-z0-9]+)*$",
42
+ "not": { "const": "ai.orbit.desktop" }
43
+ },
44
+ "versionChannel": {
45
+ "allOf": [
46
+ { "$ref": "#/$defs/kebabId" },
47
+ { "not": { "enum": ["stable", "preview", "uat", "latest", "desktop", "macos", "windows", "linux"] } }
48
+ ]
49
+ },
50
+ "protocolScheme": {
51
+ "type": "string",
52
+ "minLength": 1,
53
+ "maxLength": 64,
54
+ "pattern": "^[a-z][a-z0-9+.-]*$",
55
+ "not": {
56
+ "enum": [
57
+ "about",
58
+ "blob",
59
+ "chrome",
60
+ "chrome-extension",
61
+ "data",
62
+ "devtools",
63
+ "electron",
64
+ "file",
65
+ "ftp",
66
+ "geo",
67
+ "http",
68
+ "https",
69
+ "javascript",
70
+ "mailto",
71
+ "orbit",
72
+ "sms",
73
+ "tel",
74
+ "urn",
75
+ "ws",
76
+ "wss"
77
+ ]
78
+ }
79
+ },
80
+ "userDataNamespace": { "$ref": "#/$defs/kebabId" }
81
+ }
82
+ },
83
+ "tokens": {
84
+ "type": "object",
85
+ "additionalProperties": false,
86
+ "minProperties": 1,
87
+ "properties": {
88
+ "light": { "$ref": "#/$defs/tokenMode" },
89
+ "dark": { "$ref": "#/$defs/tokenMode" }
90
+ }
91
+ },
92
+ "assets": {
93
+ "type": "object",
94
+ "additionalProperties": false,
95
+ "required": ["appIcon", "logo"],
96
+ "properties": {
97
+ "appIcon": { "$ref": "#/$defs/packagePath" },
98
+ "tray": {
99
+ "allOf": [{ "$ref": "#/$defs/packagePath" }],
100
+ "description": "32x32 PNG, single asset used on macOS (template), Windows, and Linux."
101
+ },
102
+ "logo": { "$ref": "#/$defs/packagePath" }
103
+ }
104
+ },
105
+ "branding": {
106
+ "type": "object",
107
+ "required": ["en-US"],
108
+ "propertyNames": { "format": "language-tag" },
109
+ "additionalProperties": { "$ref": "#/$defs/brandingCopy" }
110
+ },
111
+ "locales": {
112
+ "type": "object",
113
+ "minProperties": 1,
114
+ "required": ["en-US"],
115
+ "propertyNames": { "format": "language-tag" },
116
+ "additionalProperties": { "$ref": "#/$defs/packagePath" }
117
+ },
118
+ "network": {
119
+ "type": "object",
120
+ "additionalProperties": false,
121
+ "required": ["allowedOrigins"],
122
+ "properties": {
123
+ "allowedOrigins": {
124
+ "type": "array",
125
+ "minItems": 1,
126
+ "uniqueItems": true,
127
+ "items": {
128
+ "type": "string",
129
+ "maxLength": 240,
130
+ "pattern": "^https://[^/?#@]+$"
131
+ }
132
+ }
133
+ }
134
+ },
135
+ "contributes": {
136
+ "type": "object",
137
+ "additionalProperties": false,
138
+ "required": ["slots"],
139
+ "properties": {
140
+ "slots": { "type": "array", "items": { "$ref": "#/$defs/slotContribution" } }
141
+ }
142
+ }
143
+ },
144
+ "$defs": {
145
+ "nonEmpty": { "type": "string", "minLength": 1 },
146
+ "kebabId": { "type": "string", "maxLength": 64, "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$" },
147
+ "packagePath": { "type": "string", "maxLength": 240, "pattern": "^\\./(?!.*(?:^|/)\\.\\.(?:/|$))[^\\\\]+$" },
148
+ "color": { "type": "string", "pattern": "^#(?:[0-9A-Fa-f]{3,4}|[0-9A-Fa-f]{6}|[0-9A-Fa-f]{8})$" },
149
+ "tokenMode": {
150
+ "type": "object",
151
+ "additionalProperties": false,
152
+ "properties": {
153
+ "--ow-bg": { "$ref": "#/$defs/color" },
154
+ "--ow-surface": { "$ref": "#/$defs/color" },
155
+ "--ow-surface-2": { "$ref": "#/$defs/color" },
156
+ "--ow-text": { "$ref": "#/$defs/color" },
157
+ "--ow-text-2": { "$ref": "#/$defs/color" },
158
+ "--ow-text-3": { "$ref": "#/$defs/color" },
159
+ "--ow-border": { "$ref": "#/$defs/color" },
160
+ "--ow-border-strong": { "$ref": "#/$defs/color" },
161
+ "--ow-btn-primary-bg": { "$ref": "#/$defs/color" },
162
+ "--ow-btn-primary-hover": { "$ref": "#/$defs/color" },
163
+ "--ow-btn-primary-press": { "$ref": "#/$defs/color" },
164
+ "--ow-btn-primary-fg": { "$ref": "#/$defs/color" },
165
+ "--ow-beacon": { "$ref": "#/$defs/color" },
166
+ "--ow-beacon-idle": { "$ref": "#/$defs/color" },
167
+ "--ow-accent-dot": { "$ref": "#/$defs/color" },
168
+ "--ow-data-today": { "$ref": "#/$defs/color" }
169
+ },
170
+ "allOf": [
171
+ {
172
+ "if": {
173
+ "anyOf": [
174
+ { "required": ["--ow-bg"] },
175
+ { "required": ["--ow-surface"] },
176
+ { "required": ["--ow-surface-2"] },
177
+ { "required": ["--ow-text"] },
178
+ { "required": ["--ow-text-2"] },
179
+ { "required": ["--ow-text-3"] },
180
+ { "required": ["--ow-border"] },
181
+ { "required": ["--ow-border-strong"] }
182
+ ]
183
+ },
184
+ "then": {
185
+ "required": [
186
+ "--ow-bg",
187
+ "--ow-surface",
188
+ "--ow-surface-2",
189
+ "--ow-text",
190
+ "--ow-text-2",
191
+ "--ow-text-3",
192
+ "--ow-border",
193
+ "--ow-border-strong"
194
+ ]
195
+ }
196
+ },
197
+ {
198
+ "if": {
199
+ "anyOf": [
200
+ { "required": ["--ow-btn-primary-bg"] },
201
+ { "required": ["--ow-btn-primary-hover"] },
202
+ { "required": ["--ow-btn-primary-press"] },
203
+ { "required": ["--ow-btn-primary-fg"] },
204
+ { "required": ["--ow-beacon"] },
205
+ { "required": ["--ow-beacon-idle"] },
206
+ { "required": ["--ow-accent-dot"] },
207
+ { "required": ["--ow-data-today"] }
208
+ ]
209
+ },
210
+ "then": {
211
+ "required": [
212
+ "--ow-btn-primary-bg",
213
+ "--ow-btn-primary-hover",
214
+ "--ow-btn-primary-press",
215
+ "--ow-btn-primary-fg",
216
+ "--ow-beacon",
217
+ "--ow-beacon-idle",
218
+ "--ow-accent-dot",
219
+ "--ow-data-today"
220
+ ]
221
+ }
222
+ }
223
+ ]
224
+ },
225
+ "brandingCopy": {
226
+ "type": "object",
227
+ "additionalProperties": false,
228
+ "required": ["productName", "companyName"],
229
+ "properties": {
230
+ "productName": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 64 }] },
231
+ "companyName": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 80 }] },
232
+ "claim": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 40 }] },
233
+ "claimNote": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 48 }] },
234
+ "slogan": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 68 }] }
235
+ }
236
+ },
237
+ "slotContribution": {
238
+ "type": "object",
239
+ "additionalProperties": false,
240
+ "required": ["name"],
241
+ "properties": {
242
+ "name": {
243
+ "enum": [
244
+ "workbench.login",
245
+ "workbench.sidebar.footer",
246
+ "workbench.settings.section",
247
+ "workbench.view.chat",
248
+ "workbench.view.skills",
249
+ "workbench.view.sites",
250
+ "workbench.view.scheduled-tasks",
251
+ "workbench.view.library",
252
+ "workbench.view.task-detail",
253
+ "workbench.composer.action",
254
+ "palette.group",
255
+ "widget.card"
256
+ ]
257
+ },
258
+ "id": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 100 }] },
259
+ "key": { "allOf": [{ "$ref": "#/$defs/nonEmpty" }, { "maxLength": 100 }] },
260
+ "order": { "type": "number" }
261
+ },
262
+ "allOf": [
263
+ {
264
+ "if": {
265
+ "properties": {
266
+ "name": {
267
+ "enum": [
268
+ "workbench.login",
269
+ "workbench.view.chat",
270
+ "workbench.view.skills",
271
+ "workbench.view.sites",
272
+ "workbench.view.scheduled-tasks",
273
+ "workbench.view.library",
274
+ "workbench.view.task-detail"
275
+ ]
276
+ }
277
+ },
278
+ "required": ["name"]
279
+ },
280
+ "then": { "not": { "anyOf": [{ "required": ["id"] }, { "required": ["key"] }, { "required": ["order"] }] } }
281
+ },
282
+ {
283
+ "if": {
284
+ "properties": {
285
+ "name": { "enum": ["workbench.sidebar.footer", "workbench.composer.action", "palette.group"] }
286
+ },
287
+ "required": ["name"]
288
+ },
289
+ "then": { "required": ["id", "order"], "not": { "required": ["key"] } }
290
+ },
291
+ {
292
+ "if": { "properties": { "name": { "const": "workbench.settings.section" } }, "required": ["name"] },
293
+ "then": {
294
+ "required": ["key"],
295
+ "properties": {
296
+ "key": {
297
+ "enum": ["general", "appearance", "usage", "models", "auth", "security", "assistant", "memory", "keys", "about"]
298
+ }
299
+ },
300
+ "not": { "anyOf": [{ "required": ["id"] }, { "required": ["order"] }] }
301
+ }
302
+ },
303
+ {
304
+ "if": { "properties": { "name": { "const": "widget.card" } }, "required": ["name"] },
305
+ "then": {
306
+ "required": ["key"],
307
+ "properties": { "key": { "enum": ["subtasks", "scheduled", "todo"] } },
308
+ "not": { "anyOf": [{ "required": ["id"] }, { "required": ["order"] }] }
309
+ }
310
+ }
311
+ ]
312
+ }
313
+ }
314
+ }