@tuturuuu/utils 0.18.0 → 0.19.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/CHANGELOG.md +7 -0
- package/package.json +3 -3
- package/src/__tests__/app-url.test.ts +1 -0
- package/src/common/metadata.test.ts +1 -1
- package/src/internal-domains.ts +12 -0
- package/src/launchable-apps.ts +13 -0
- package/src/permissions.tsx +64 -0
- package/src/platform-release.test.ts +1 -1
- package/src/platform-release.ts +1 -1
- package/src/portless.ts +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.19.0](https://github.com/tutur3u/platform/compare/utils-v0.18.0...utils-v0.19.0) (2026-07-27)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* **ai:** add workspace AI Studio and legal coverage ([6de4e39](https://github.com/tutur3u/platform/commit/6de4e395cc5568f4943604ac667e3cebf324be13))
|
|
9
|
+
|
|
3
10
|
## [0.18.0](https://github.com/tutur3u/platform/compare/utils-v0.17.0...utils-v0.18.0) (2026-07-25)
|
|
4
11
|
|
|
5
12
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tuturuuu/utils",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.19.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/tutur3u/platform",
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
"@tiptap/react": "3.28.0",
|
|
25
25
|
"@tuturuuu/google": "0.1.0",
|
|
26
26
|
"@tuturuuu/icons": "0.1.0",
|
|
27
|
-
"@tuturuuu/internal-api": "0.
|
|
27
|
+
"@tuturuuu/internal-api": "0.23.0",
|
|
28
28
|
"@tuturuuu/supabase": "0.5.0",
|
|
29
29
|
"@upstash/ratelimit": "^2.0.8",
|
|
30
30
|
"@upstash/redis": "^1.38.0",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
"zod": "^4.4.3"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@tuturuuu/types": "0.
|
|
48
|
+
"@tuturuuu/types": "0.22.0",
|
|
49
49
|
"@tuturuuu/typescript-config": "0.1.1",
|
|
50
50
|
"@types/diff": "^8.0.0",
|
|
51
51
|
"@types/node": "^26.1.1",
|
|
@@ -287,6 +287,7 @@ describe('Portless app origin registry', () => {
|
|
|
287
287
|
'*.tuturuuu.localhost',
|
|
288
288
|
]);
|
|
289
289
|
expect(Object.values(TUTURUUU_PORTLESS_APP_ORIGINS)).toEqual([
|
|
290
|
+
'https://ai.tuturuuu.localhost',
|
|
290
291
|
'https://apps.tuturuuu.localhost',
|
|
291
292
|
'https://calendar.tuturuuu.localhost',
|
|
292
293
|
'https://chat.tuturuuu.localhost',
|
|
@@ -326,7 +326,7 @@ describe('application metadata coverage', () => {
|
|
|
326
326
|
)
|
|
327
327
|
.map((entry) => resolve(entry.parentPath, entry.name));
|
|
328
328
|
|
|
329
|
-
expect(marketingLayouts).toHaveLength(
|
|
329
|
+
expect(marketingLayouts).toHaveLength(37);
|
|
330
330
|
for (const layoutPath of marketingLayouts) {
|
|
331
331
|
expect(readFileSync(layoutPath, 'utf8')).toMatch(/pathname:\s*['`]/);
|
|
332
332
|
}
|
package/src/internal-domains.ts
CHANGED
|
@@ -4,6 +4,10 @@ import {
|
|
|
4
4
|
} from './portless';
|
|
5
5
|
|
|
6
6
|
export const PRODUCTION_INTERNAL_APP_DOMAINS = [
|
|
7
|
+
{
|
|
8
|
+
name: 'ai',
|
|
9
|
+
url: 'https://ai.tuturuuu.com',
|
|
10
|
+
},
|
|
7
11
|
{
|
|
8
12
|
name: 'apps',
|
|
9
13
|
url: 'https://apps.tuturuuu.com',
|
|
@@ -123,6 +127,10 @@ export const PRODUCTION_INTERNAL_APP_DOMAINS = [
|
|
|
123
127
|
] as const;
|
|
124
128
|
|
|
125
129
|
export const PORTLESS_INTERNAL_APP_DOMAINS = [
|
|
130
|
+
{
|
|
131
|
+
name: 'ai',
|
|
132
|
+
url: getTuturuuuPortlessAppOrigin('ai'),
|
|
133
|
+
},
|
|
126
134
|
{
|
|
127
135
|
name: 'apps',
|
|
128
136
|
url: getTuturuuuPortlessAppOrigin('apps'),
|
|
@@ -234,6 +242,10 @@ export const PORTLESS_INTERNAL_APP_DOMAINS = [
|
|
|
234
242
|
] as const;
|
|
235
243
|
|
|
236
244
|
export const LOCALHOST_INTERNAL_APP_DOMAINS = [
|
|
245
|
+
{
|
|
246
|
+
name: 'ai',
|
|
247
|
+
url: 'http://localhost:7829',
|
|
248
|
+
},
|
|
237
249
|
{
|
|
238
250
|
name: 'apps',
|
|
239
251
|
url: 'http://localhost:7818',
|
package/src/launchable-apps.ts
CHANGED
|
@@ -237,6 +237,19 @@ export const LAUNCHABLE_APPS = [
|
|
|
237
237
|
title: 'Mind',
|
|
238
238
|
workspacePathResolver: workspaceRootPath,
|
|
239
239
|
},
|
|
240
|
+
{
|
|
241
|
+
aliases: ['AI Studio', 'API', 'Models', 'Agents', 'Evaluations'],
|
|
242
|
+
appRoot: 'apps/ai',
|
|
243
|
+
category: 'ai',
|
|
244
|
+
defaultPath: '/playground',
|
|
245
|
+
localhostOrigin: 'http://localhost:7829',
|
|
246
|
+
packageName: '@tuturuuu/ai-studio',
|
|
247
|
+
portlessApp: 'ai',
|
|
248
|
+
productionUrl: 'https://ai.tuturuuu.com',
|
|
249
|
+
slug: 'ai',
|
|
250
|
+
title: 'AI Studio',
|
|
251
|
+
workspacePathResolver: workspaceRootPath,
|
|
252
|
+
},
|
|
240
253
|
{
|
|
241
254
|
aliases: ['Prompt', 'Challenges'],
|
|
242
255
|
appRoot: 'apps/nova',
|
package/src/permissions.tsx
CHANGED
|
@@ -315,6 +315,70 @@ export const permissionGroups = ({
|
|
|
315
315
|
disableOnProduction: false,
|
|
316
316
|
disabled: false,
|
|
317
317
|
},
|
|
318
|
+
{
|
|
319
|
+
id: 'use_ai_studio',
|
|
320
|
+
icon: <Sparkles />,
|
|
321
|
+
title: t('ws-roles.use_ai_studio'),
|
|
322
|
+
description: t('ws-roles.use_ai_studio_description'),
|
|
323
|
+
disableOnProduction: false,
|
|
324
|
+
disabled: false,
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
id: 'manage_ai_keys',
|
|
328
|
+
icon: <KeyRound />,
|
|
329
|
+
title: t('ws-roles.manage_ai_keys'),
|
|
330
|
+
description: t('ws-roles.manage_ai_keys_description'),
|
|
331
|
+
disableOnProduction: false,
|
|
332
|
+
disabled: false,
|
|
333
|
+
},
|
|
334
|
+
{
|
|
335
|
+
id: 'manage_ai_policy',
|
|
336
|
+
icon: <Settings2 />,
|
|
337
|
+
title: t('ws-roles.manage_ai_policy'),
|
|
338
|
+
description: t('ws-roles.manage_ai_policy_description'),
|
|
339
|
+
disableOnProduction: false,
|
|
340
|
+
disabled: false,
|
|
341
|
+
},
|
|
342
|
+
{
|
|
343
|
+
id: 'manage_ai_prompts',
|
|
344
|
+
icon: <FileText />,
|
|
345
|
+
title: t('ws-roles.manage_ai_prompts'),
|
|
346
|
+
description: t('ws-roles.manage_ai_prompts_description'),
|
|
347
|
+
disableOnProduction: false,
|
|
348
|
+
disabled: false,
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
id: 'manage_ai_agents',
|
|
352
|
+
icon: <CircuitBoard />,
|
|
353
|
+
title: t('ws-roles.manage_ai_agents'),
|
|
354
|
+
description: t('ws-roles.manage_ai_agents_description'),
|
|
355
|
+
disableOnProduction: false,
|
|
356
|
+
disabled: false,
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
id: 'manage_ai_evaluations',
|
|
360
|
+
icon: <FlaskConical />,
|
|
361
|
+
title: t('ws-roles.manage_ai_evaluations'),
|
|
362
|
+
description: t('ws-roles.manage_ai_evaluations_description'),
|
|
363
|
+
disableOnProduction: false,
|
|
364
|
+
disabled: false,
|
|
365
|
+
},
|
|
366
|
+
{
|
|
367
|
+
id: 'view_ai_usage',
|
|
368
|
+
icon: <ChartBar />,
|
|
369
|
+
title: t('ws-roles.view_ai_usage'),
|
|
370
|
+
description: t('ws-roles.view_ai_usage_description'),
|
|
371
|
+
disableOnProduction: false,
|
|
372
|
+
disabled: false,
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
id: 'view_ai_logs',
|
|
376
|
+
icon: <ScrollText />,
|
|
377
|
+
title: t('ws-roles.view_ai_logs'),
|
|
378
|
+
description: t('ws-roles.view_ai_logs_description'),
|
|
379
|
+
disableOnProduction: false,
|
|
380
|
+
disabled: false,
|
|
381
|
+
},
|
|
318
382
|
],
|
|
319
383
|
},
|
|
320
384
|
{
|
|
@@ -7,7 +7,7 @@ import {
|
|
|
7
7
|
|
|
8
8
|
describe('platform release metadata', () => {
|
|
9
9
|
it('uses the centralized shared browser app version', () => {
|
|
10
|
-
expect(TUTURUUU_PLATFORM_VERSION).toBe('0.
|
|
10
|
+
expect(TUTURUUU_PLATFORM_VERSION).toBe('0.28.0'); // x-release-please-version
|
|
11
11
|
});
|
|
12
12
|
|
|
13
13
|
it('preserves the source timestamp in builtAt and derives a short hash', () => {
|
package/src/platform-release.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { PLATFORM_BUILD_METADATA } from './generated/platform-build-metadata';
|
|
2
2
|
|
|
3
|
-
export const TUTURUUU_PLATFORM_VERSION = '0.
|
|
3
|
+
export const TUTURUUU_PLATFORM_VERSION = '0.28.0'; // x-release-please-version
|
|
4
4
|
|
|
5
5
|
export type PlatformBuildMetadataInput = {
|
|
6
6
|
/** ISO timestamp of the source commit used for the build, not deployment time. */
|
package/src/portless.ts
CHANGED
|
@@ -6,6 +6,7 @@ export const TUTURUUU_PORTLESS_ALLOWED_DEV_ORIGINS = [
|
|
|
6
6
|
] as const;
|
|
7
7
|
|
|
8
8
|
export const TUTURUUU_PORTLESS_APP_ORIGINS = {
|
|
9
|
+
ai: `https://ai.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
9
10
|
apps: `https://apps.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
10
11
|
calendar: `https://calendar.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|
|
11
12
|
chat: `https://chat.${TUTURUUU_PORTLESS_ROOT_HOST}`,
|