deepspace 0.33.1 → 0.35.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.
Files changed (38) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +5 -1
  3. package/dist/{chunk-PZDVKSLI.js → chunk-ESEI3MMY.js} +2 -2
  4. package/dist/{chunk-PZDVKSLI.js.map → chunk-ESEI3MMY.js.map} +1 -1
  5. package/dist/chunk-ESYXTIV2.js +1957 -0
  6. package/dist/chunk-ESYXTIV2.js.map +1 -0
  7. package/dist/cli.js +151 -53
  8. package/dist/cli.js.map +1 -1
  9. package/dist/documentation-client-core.js +1 -1
  10. package/dist/documentation-default-renderer.cjs +1 -1
  11. package/dist/documentation-react.js +1 -1
  12. package/dist/documentation-runtime.js +10 -10
  13. package/dist/documentation-server-core.js +1 -1
  14. package/dist/documentation.js +47 -22
  15. package/dist/documentation.js.map +1 -1
  16. package/dist/expo.d.ts +83 -0
  17. package/dist/expo.js +242 -0
  18. package/dist/expo.js.map +1 -0
  19. package/dist/index.d.ts +110 -23
  20. package/dist/index.js +134 -53
  21. package/dist/index.js.map +1 -1
  22. package/dist/server.d.ts +205 -37
  23. package/dist/server.js +290 -97
  24. package/dist/server.js.map +1 -1
  25. package/dist/testing.js +45 -3
  26. package/dist/testing.js.map +1 -1
  27. package/dist/worker.d.ts +348 -48
  28. package/dist/worker.js +547 -110
  29. package/dist/worker.js.map +1 -1
  30. package/features/documents/feature.json +15 -0
  31. package/features/documents/src/DocumentsListPage.tsx +22 -8
  32. package/features/documents/src/InviteDialog.tsx +63 -42
  33. package/features/documents/src/__tests__/documents-find-invitee-action.test.ts +131 -0
  34. package/features/documents/src/__tests__/documents-invitee-lookup.test.ts +67 -0
  35. package/features/documents/src/documents-find-invitee-action.ts +56 -0
  36. package/features/documents/src/documents-invitee-lookup.ts +38 -0
  37. package/features/documents/src/documents-ui.css +10 -0
  38. package/package.json +29 -9
package/dist/index.js CHANGED
@@ -1,3 +1,44 @@
1
+ // src/shared/planes.ts
2
+ var PLANES = {
3
+ production: {
4
+ auth: "https://auth.deep.space",
5
+ api: "https://api-worker.deep.space",
6
+ platform: "https://platform-worker.deep.space",
7
+ deploy: "https://deploy-worker.deep.space",
8
+ appDomain: "app.space",
9
+ platformDomain: "deep.space",
10
+ home: "https://deep.space",
11
+ dashboard: "https://dashboard.deep.space",
12
+ privacyPolicy: "https://deep.space/privacy"
13
+ },
14
+ // Services on deepspacesites.com, apps on spacestest.com: production's
15
+ // two-zone split, because a Worker cannot fetch one in its own zone.
16
+ staging: {
17
+ auth: "https://auth.deepspacesites.com",
18
+ api: "https://api.deepspacesites.com",
19
+ platform: "https://platform.deepspacesites.com",
20
+ deploy: "https://deploy.deepspacesites.com",
21
+ appDomain: "spacestest.com",
22
+ platformDomain: "deepspacesites.com",
23
+ home: "https://spacestest.com",
24
+ dashboard: "https://dashboard.deepspacesites.com",
25
+ privacyPolicy: "https://deep.space/privacy"
26
+ },
27
+ // Services on deepspacemedical.com, apps on deepspacemedical.app: two zones
28
+ // in the medical Cloudflare account. The plane has no dashboard.
29
+ medical: {
30
+ auth: "https://auth.deepspacemedical.com",
31
+ api: "https://api.deepspacemedical.com",
32
+ platform: "https://platform.deepspacemedical.com",
33
+ deploy: "https://deploy.deepspacemedical.com",
34
+ appDomain: "deepspacemedical.app",
35
+ platformDomain: "deepspacemedical.com",
36
+ home: "https://deepspacemedical.com",
37
+ dashboard: null,
38
+ privacyPolicy: "https://deepspacemedical.com/privacy"
39
+ }
40
+ };
41
+
1
42
  // src/shared/env/index.ts
2
43
  var DEV_CONFIG = {
3
44
  name: "dev",
@@ -7,34 +48,33 @@ var DEV_CONFIG = {
7
48
  authSignInUrl: "http://localhost:5173/sign-in",
8
49
  authSignUpUrl: "http://localhost:5173/sign-up",
9
50
  mainAppUrl: "http://localhost:5173",
10
- dashboardUrl: "http://localhost:5174"
11
- };
12
- var STAGING_CONFIG = {
13
- name: "staging",
14
- apiUrl: "https://api.deepspacesites.com",
15
- platformWorkerUrl: "https://platform.deepspacesites.com",
16
- authUrl: "https://auth.deepspacesites.com",
17
- authSignInUrl: "https://auth.deepspacesites.com/login/social",
18
- authSignUpUrl: "https://auth.deepspacesites.com/login/social",
19
- mainAppUrl: "https://spacestest.com",
20
- dashboardUrl: "https://dashboard.deepspacesites.com"
21
- };
22
- var PROD_CONFIG = {
23
- name: "prod",
24
- apiUrl: "https://api-worker.deep.space",
25
- platformWorkerUrl: "https://platform-worker.deep.space",
26
- authUrl: "https://auth.deep.space",
27
- authSignInUrl: "https://auth.deep.space/login/social",
28
- authSignUpUrl: "https://auth.deep.space/login/social",
29
- mainAppUrl: "https://deep.space",
30
- dashboardUrl: "https://dashboard.deep.space"
51
+ dashboardUrl: "http://localhost:5174",
52
+ privacyPolicyUrl: "https://deep.space/privacy"
31
53
  };
54
+ function planeConfig(name, plane) {
55
+ return {
56
+ name,
57
+ apiUrl: plane.api,
58
+ platformWorkerUrl: plane.platform,
59
+ authUrl: plane.auth,
60
+ authSignInUrl: `${plane.auth}/login/social`,
61
+ authSignUpUrl: `${plane.auth}/login/social`,
62
+ mainAppUrl: plane.home,
63
+ // DeepSpace Medical has no dashboard; its home page stands in.
64
+ dashboardUrl: plane.dashboard ?? plane.home,
65
+ privacyPolicyUrl: plane.privacyPolicy
66
+ };
67
+ }
68
+ var STAGING_CONFIG = planeConfig("staging", PLANES.staging);
69
+ var MEDICAL_CONFIG = planeConfig("medical", PLANES.medical);
70
+ var PROD_CONFIG = planeConfig("prod", PLANES.production);
32
71
  var cachedEnvironment = null;
33
72
  function parseEnv(value) {
34
73
  if (!value) return null;
35
74
  const v = value.toLowerCase();
36
75
  if (v === "dev" || v === "development") return "dev";
37
76
  if (v === "staging") return "staging";
77
+ if (v === "medical") return "medical";
38
78
  if (v === "prod" || v === "production") return "prod";
39
79
  return null;
40
80
  }
@@ -75,13 +115,18 @@ function detectEnvironment() {
75
115
  cachedEnvironment = "dev";
76
116
  return "dev";
77
117
  }
78
- if (hostname === "spacestest.com" || hostname.endsWith(".spacestest.com") || hostname === "deepspacesites.com" || hostname.endsWith(".deepspacesites.com")) {
79
- cachedEnvironment = "staging";
80
- return "staging";
81
- }
82
- if (hostname === "app.space" || hostname.endsWith(".app.space") || hostname === "deep.space" || hostname.endsWith(".deep.space")) {
83
- cachedEnvironment = "prod";
84
- return "prod";
118
+ const onPlane = (plane) => [plane.appDomain, plane.platformDomain].some(
119
+ (zone) => hostname === zone || hostname.endsWith(`.${zone}`)
120
+ );
121
+ for (const [env, plane] of [
122
+ ["staging", PLANES.staging],
123
+ ["medical", PLANES.medical],
124
+ ["prod", PLANES.production]
125
+ ]) {
126
+ if (onPlane(plane)) {
127
+ cachedEnvironment = env;
128
+ return env;
129
+ }
85
130
  }
86
131
  }
87
132
  cachedEnvironment = "prod";
@@ -89,7 +134,16 @@ function detectEnvironment() {
89
134
  }
90
135
  function getEnvironmentConfig() {
91
136
  const env = detectEnvironment();
92
- return env === "dev" ? DEV_CONFIG : env === "staging" ? STAGING_CONFIG : PROD_CONFIG;
137
+ switch (env) {
138
+ case "dev":
139
+ return DEV_CONFIG;
140
+ case "staging":
141
+ return STAGING_CONFIG;
142
+ case "medical":
143
+ return MEDICAL_CONFIG;
144
+ case "prod":
145
+ return PROD_CONFIG;
146
+ }
93
147
  }
94
148
  function getApiUrl() {
95
149
  return getEnvironmentConfig().apiUrl;
@@ -150,8 +204,8 @@ var ROLE_CONFIG = {
150
204
 
151
205
  // src/shared/ai-models.ts
152
206
  var DEEPSPACE_MODEL_CATALOG_PROVENANCE = {
153
- version: "2026-08-04",
154
- verifiedAt: "2026-08-04",
207
+ version: "2026-09-24",
208
+ verifiedAt: "2026-09-24",
155
209
  sources: {
156
210
  anthropic: "https://platform.claude.com/docs/en/api/beta/models/list",
157
211
  openai: "https://developers.openai.com/api/docs/models/all",
@@ -177,16 +231,17 @@ var openAIModel = createMultiStepModelFactory({
177
231
  providerLabel: "OpenAI",
178
232
  transport: "chat-completions"
179
233
  });
234
+ var DIRECT_GENERATION_NOTE = "Available for direct generation; the current proxy adapter has not passed multi-step tool-result continuation.";
180
235
  var DEEPSPACE_AI_MODELS = [
181
236
  anthropicModel({
182
- id: "claude-fable-5",
183
- label: "Claude Fable 5",
237
+ id: "claude-opus-5-5",
238
+ label: "Claude Opus 5.5",
184
239
  family: "Claude 5",
185
240
  recommendation: "frontier"
186
241
  }),
187
242
  anthropicModel({
188
- id: "claude-opus-5",
189
- label: "Claude Opus 5",
243
+ id: "claude-fable-5-1",
244
+ label: "Claude Fable 5.1",
190
245
  family: "Claude 5",
191
246
  recommendation: "frontier"
192
247
  }),
@@ -203,23 +258,29 @@ var DEEPSPACE_AI_MODELS = [
203
258
  recommendation: "fast"
204
259
  }),
205
260
  openAIModel({
206
- id: "gpt-5.6-sol",
207
- label: "GPT-5.6 Sol",
208
- family: "GPT-5.6",
209
- recommendation: "frontier"
210
- }),
211
- openAIModel({
212
- id: "gpt-5.6-terra",
213
- label: "GPT-5.6 Terra",
214
- family: "GPT-5.6",
261
+ id: "gpt-6-sol",
262
+ label: "GPT-6 Sol",
263
+ family: "GPT-6",
215
264
  recommendation: "balanced"
216
265
  }),
217
266
  openAIModel({
218
- id: "gpt-5.6-luna",
219
- label: "GPT-5.6 Luna",
220
- family: "GPT-5.6",
267
+ id: "gpt-6-luna",
268
+ label: "GPT-6 Luna",
269
+ family: "GPT-6",
221
270
  recommendation: "fast"
222
271
  }),
272
+ {
273
+ id: "gpt-6-astra",
274
+ label: "GPT-6 Astra",
275
+ provider: "openai",
276
+ providerLabel: "OpenAI",
277
+ family: "GPT-6",
278
+ agentSupport: "none",
279
+ agentProfiles: [],
280
+ transport: "chat-completions",
281
+ recommendation: "limited",
282
+ note: "Available for direct generation; its tool calling requires the Responses API, which the DeepSpace proxy does not serve."
283
+ },
223
284
  {
224
285
  id: "gpt-oss-120b",
225
286
  label: "GPT-OSS 120B",
@@ -230,12 +291,30 @@ var DEEPSPACE_AI_MODELS = [
230
291
  agentProfiles: [],
231
292
  transport: "chat-completions",
232
293
  recommendation: "limited",
233
- note: "Available for direct generation; the current proxy adapter has not passed multi-step tool-result continuation."
234
- }
294
+ note: DIRECT_GENERATION_NOTE
295
+ },
296
+ {
297
+ id: "qwen-3.8-27b",
298
+ label: "Qwen 3.8 27B",
299
+ provider: "cerebras",
300
+ providerLabel: "Cerebras",
301
+ family: "Qwen 3.8",
302
+ agentSupport: "single-step",
303
+ agentProfiles: [],
304
+ transport: "chat-completions",
305
+ recommendation: "limited",
306
+ note: DIRECT_GENERATION_NOTE
307
+ },
308
+ // Superseded models: still resolvable for apps that saved them.
309
+ anthropicModel({ id: "claude-opus-5", label: "Claude Opus 5", family: "Claude 5", recommendation: "frontier", legacy: true }),
310
+ anthropicModel({ id: "claude-fable-5", label: "Claude Fable 5", family: "Claude 5", recommendation: "frontier", legacy: true }),
311
+ openAIModel({ id: "gpt-5.6-sol", label: "GPT-5.6 Sol", family: "GPT-5.6", recommendation: "frontier", legacy: true }),
312
+ openAIModel({ id: "gpt-5.6-terra", label: "GPT-5.6 Terra", family: "GPT-5.6", recommendation: "balanced", legacy: true }),
313
+ openAIModel({ id: "gpt-5.6-luna", label: "GPT-5.6 Luna", family: "GPT-5.6", recommendation: "fast", legacy: true })
235
314
  ];
236
315
  var DEEPSPACE_AI_DEFAULTS = {
237
- agent: "claude-sonnet-5",
238
- directGeneration: "claude-sonnet-5",
316
+ agent: "claude-opus-5-5",
317
+ directGeneration: "claude-opus-5-5",
239
318
  summarization: "claude-haiku-4-5"
240
319
  };
241
320
  var DEEPSPACE_AGENT_PROFILES = {
@@ -263,7 +342,7 @@ function getDeepSpaceAIModel(modelId) {
263
342
  function listDeepSpaceAgentModels(profileId = "application") {
264
343
  const defaultModel = DEEPSPACE_AGENT_PROFILES[profileId].defaultModel;
265
344
  return DEEPSPACE_AI_MODELS.filter(
266
- (model) => model.agentProfiles.includes(profileId)
345
+ (model) => !model.legacy && model.agentProfiles.includes(profileId)
267
346
  ).sort((left, right) => Number(right.id === defaultModel) - Number(left.id === defaultModel));
268
347
  }
269
348
  function resolveDeepSpaceAgentModel(modelId, profileId = "application") {
@@ -757,6 +836,7 @@ var ACTION_TOOLS_DELETE_WHERE_MIGRATION_ID = "2026-08-action-tools-delete-where"
757
836
  var BUILD_INJECTED_APP_ID_MIGRATION_ID = "2026-08-build-injected-app-id";
758
837
  var ACTION_ROUTES_BEARER_GUARD_MIGRATION_ID = "2026-08-action-routes-bearer-guard";
759
838
  var FILES_SESSION_COOKIE_READS_MIGRATION_ID = "2026-09-files-session-cookie-reads";
839
+ var AI_SDK_7_MIGRATION_ID = "2026-09-ai-sdk-7";
760
840
  function validateAppMigrationIds(value) {
761
841
  if (!Array.isArray(value)) {
762
842
  return { valid: false, reason: "app migrations must be a JSON string array" };
@@ -1109,7 +1189,7 @@ function AuthOverlay({
1109
1189
  /* @__PURE__ */ jsx2(
1110
1190
  "a",
1111
1191
  {
1112
- href: "https://deep.space/privacy",
1192
+ href: getEnvironmentConfig().privacyPolicyUrl,
1113
1193
  target: "_blank",
1114
1194
  rel: "noopener noreferrer",
1115
1195
  className: "underline hover:text-foreground",
@@ -5684,6 +5764,7 @@ export {
5684
5764
  ACCOUNT_STORAGE_LIMIT_BYTES,
5685
5765
  ACTION_ROUTES_BEARER_GUARD_MIGRATION_ID,
5686
5766
  ACTION_TOOLS_DELETE_WHERE_MIGRATION_ID,
5767
+ AI_SDK_7_MIGRATION_ID,
5687
5768
  ANONYMOUS_USER_ID_PREFIX,
5688
5769
  APP_LOG_EVENT_KEYS,
5689
5770
  ASYNC_RESOURCE_DEFAULTS,