@vibesdotdev/studio 0.0.0-stage → 1.0.0-rc.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 (136) hide show
  1. package/LICENSE +18 -0
  2. package/README.md +46 -2
  3. package/VIBES.md +120 -0
  4. package/dist/cli/plugin.d.ts +11 -0
  5. package/dist/cli/plugin.d.ts.map +1 -0
  6. package/dist/cli/plugin.js +18 -0
  7. package/dist/cli/plugin.js.map +1 -0
  8. package/dist/cli/studio.descriptor.d.ts +9 -0
  9. package/dist/cli/studio.descriptor.d.ts.map +1 -0
  10. package/dist/cli/studio.descriptor.js +39 -0
  11. package/dist/cli/studio.descriptor.js.map +1 -0
  12. package/dist/client.d.ts +12 -0
  13. package/dist/client.d.ts.map +1 -0
  14. package/dist/client.js +27 -0
  15. package/dist/client.js.map +1 -0
  16. package/dist/index.d.ts +8 -0
  17. package/dist/index.d.ts.map +1 -0
  18. package/dist/index.js +6 -0
  19. package/dist/index.js.map +1 -0
  20. package/dist/logger.d.ts +10 -0
  21. package/dist/logger.d.ts.map +1 -0
  22. package/dist/logger.js +41 -0
  23. package/dist/logger.js.map +1 -0
  24. package/dist/logging/studio.logger.descriptor.d.ts +7 -0
  25. package/dist/logging/studio.logger.descriptor.d.ts.map +1 -0
  26. package/dist/logging/studio.logger.descriptor.js +14 -0
  27. package/dist/logging/studio.logger.descriptor.js.map +1 -0
  28. package/dist/logging/studio.output.descriptor.d.ts +4 -0
  29. package/dist/logging/studio.output.descriptor.d.ts.map +1 -0
  30. package/dist/logging/studio.output.descriptor.js +22 -0
  31. package/dist/logging/studio.output.descriptor.js.map +1 -0
  32. package/dist/prompts/index.d.ts +7 -0
  33. package/dist/prompts/index.d.ts.map +1 -0
  34. package/dist/prompts/index.js +7 -0
  35. package/dist/prompts/index.js.map +1 -0
  36. package/dist/prompts/studio-system.prompt.d.ts +49 -0
  37. package/dist/prompts/studio-system.prompt.d.ts.map +1 -0
  38. package/dist/prompts/studio-system.prompt.descriptor.d.ts +345 -0
  39. package/dist/prompts/studio-system.prompt.descriptor.d.ts.map +1 -0
  40. package/dist/prompts/studio-system.prompt.descriptor.js +22 -0
  41. package/dist/prompts/studio-system.prompt.descriptor.js.map +1 -0
  42. package/dist/prompts/studio-system.prompt.js +116 -0
  43. package/dist/prompts/studio-system.prompt.js.map +1 -0
  44. package/dist/schemas/auth.d.ts +43 -0
  45. package/dist/schemas/auth.d.ts.map +1 -0
  46. package/dist/schemas/auth.js +19 -0
  47. package/dist/schemas/auth.js.map +1 -0
  48. package/dist/schemas/continuity.d.ts +51 -0
  49. package/dist/schemas/continuity.d.ts.map +1 -0
  50. package/dist/schemas/continuity.js +35 -0
  51. package/dist/schemas/continuity.js.map +1 -0
  52. package/dist/schemas/history.d.ts +6 -0
  53. package/dist/schemas/history.d.ts.map +1 -0
  54. package/dist/schemas/history.js +6 -0
  55. package/dist/schemas/history.js.map +1 -0
  56. package/dist/schemas/logging.d.ts +63 -0
  57. package/dist/schemas/logging.d.ts.map +1 -0
  58. package/dist/schemas/logging.js +26 -0
  59. package/dist/schemas/logging.js.map +1 -0
  60. package/dist/schemas/theme.d.ts +9 -0
  61. package/dist/schemas/theme.d.ts.map +1 -0
  62. package/dist/schemas/theme.js +2 -0
  63. package/dist/schemas/theme.js.map +1 -0
  64. package/dist/services/schemas/studio-gateway.d.ts +34 -0
  65. package/dist/services/schemas/studio-gateway.d.ts.map +1 -0
  66. package/dist/services/schemas/studio-gateway.js +21 -0
  67. package/dist/services/schemas/studio-gateway.js.map +1 -0
  68. package/dist/studio.consumer.plugin.d.ts +8 -0
  69. package/dist/studio.consumer.plugin.d.ts.map +1 -0
  70. package/dist/studio.consumer.plugin.js +29 -0
  71. package/dist/studio.consumer.plugin.js.map +1 -0
  72. package/dist/studio.core.plugin.d.ts +4 -0
  73. package/dist/studio.core.plugin.d.ts.map +1 -0
  74. package/dist/studio.core.plugin.js +23 -0
  75. package/dist/studio.core.plugin.js.map +1 -0
  76. package/dist/studio.plugin.d.ts +3 -0
  77. package/dist/studio.plugin.d.ts.map +1 -0
  78. package/dist/studio.plugin.js +3 -0
  79. package/dist/studio.plugin.js.map +1 -0
  80. package/dist/theme.d.ts +67 -0
  81. package/dist/theme.d.ts.map +1 -0
  82. package/dist/theme.js +38 -0
  83. package/dist/theme.js.map +1 -0
  84. package/dist/tui/plugin.d.ts +13 -0
  85. package/dist/tui/plugin.d.ts.map +1 -0
  86. package/dist/tui/plugin.js +29 -0
  87. package/dist/tui/plugin.js.map +1 -0
  88. package/dist/tui/studio-apps.descriptor.d.ts +11 -0
  89. package/dist/tui/studio-apps.descriptor.d.ts.map +1 -0
  90. package/dist/tui/studio-apps.descriptor.js +27 -0
  91. package/dist/tui/studio-apps.descriptor.js.map +1 -0
  92. package/dist/tui/studio-apps.impl.consumer.d.ts +12 -0
  93. package/dist/tui/studio-apps.impl.consumer.d.ts.map +1 -0
  94. package/dist/tui/studio-apps.impl.consumer.js +23 -0
  95. package/dist/tui/studio-apps.impl.consumer.js.map +1 -0
  96. package/dist/tui/studio-auth.d.ts +8 -0
  97. package/dist/tui/studio-auth.d.ts.map +1 -0
  98. package/dist/tui/studio-auth.js +56 -0
  99. package/dist/tui/studio-auth.js.map +1 -0
  100. package/dist/tui/studio-gateway-home.d.ts +56 -0
  101. package/dist/tui/studio-gateway-home.d.ts.map +1 -0
  102. package/dist/tui/studio-gateway-home.js +352 -0
  103. package/dist/tui/studio-gateway-home.js.map +1 -0
  104. package/dist/tui/studio-gateway.actions.d.ts +8 -0
  105. package/dist/tui/studio-gateway.actions.d.ts.map +1 -0
  106. package/dist/tui/studio-gateway.actions.js +133 -0
  107. package/dist/tui/studio-gateway.actions.js.map +1 -0
  108. package/dist/tui/studio-gateway.descriptor.d.ts +14 -0
  109. package/dist/tui/studio-gateway.descriptor.d.ts.map +1 -0
  110. package/dist/tui/studio-gateway.descriptor.js +33 -0
  111. package/dist/tui/studio-gateway.descriptor.js.map +1 -0
  112. package/dist/tui/studio-gateway.impl.consumer.d.ts +32 -0
  113. package/dist/tui/studio-gateway.impl.consumer.d.ts.map +1 -0
  114. package/dist/tui/studio-gateway.impl.consumer.js +422 -0
  115. package/dist/tui/studio-gateway.impl.consumer.js.map +1 -0
  116. package/dist/tui/studio-gateway.logic.d.ts +55 -0
  117. package/dist/tui/studio-gateway.logic.d.ts.map +1 -0
  118. package/dist/tui/studio-gateway.logic.js +255 -0
  119. package/dist/tui/studio-gateway.logic.js.map +1 -0
  120. package/dist/tui/studio-home-sessions.d.ts +14 -0
  121. package/dist/tui/studio-home-sessions.d.ts.map +1 -0
  122. package/dist/tui/studio-home-sessions.js +190 -0
  123. package/dist/tui/studio-home-sessions.js.map +1 -0
  124. package/dist/tui/studio-home.config.descriptor.d.ts +29 -0
  125. package/dist/tui/studio-home.config.descriptor.d.ts.map +1 -0
  126. package/dist/tui/studio-home.config.descriptor.js +20 -0
  127. package/dist/tui/studio-home.config.descriptor.js.map +1 -0
  128. package/dist/tui/studio-sign-in.d.ts +19 -0
  129. package/dist/tui/studio-sign-in.d.ts.map +1 -0
  130. package/dist/tui/studio-sign-in.js +71 -0
  131. package/dist/tui/studio-sign-in.js.map +1 -0
  132. package/dist/tui/studio-ui-state.config.descriptor.d.ts +17 -0
  133. package/dist/tui/studio-ui-state.config.descriptor.d.ts.map +1 -0
  134. package/dist/tui/studio-ui-state.config.descriptor.js +35 -0
  135. package/dist/tui/studio-ui-state.config.descriptor.js.map +1 -0
  136. package/package.json +123 -4
@@ -0,0 +1,71 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "@opentui/react/jsx-runtime";
2
+ /**
3
+ * Sign-in overlay — gateway-owned, like the palette and orientation tour.
4
+ *
5
+ * Any route triggers it through the action registry (`executeAction('signIn')`)
6
+ * instead of telling the user to leave the terminal and run `vibes auth login`.
7
+ * The overlay drives the same device-authorization flow as the CLI: it shows
8
+ * the device code, opens the browser, and waits for approval — every progress
9
+ * line comes verbatim from the auth service (no reconstructed narration).
10
+ */
11
+ import { useCallback, useRef, useState } from 'react';
12
+ import { redactedExcerpt } from '@vibesdotdev/shared/utils';
13
+ import { Dialog } from '@vibesdotdev/tui/components/feedback';
14
+ import { DSButton, DSText } from '@vibesdotdev/tui';
15
+ import { VStack, HStack } from '@vibesdotdev/tui/components/layout';
16
+ import { dsBase, dsColors } from '@vibesdotdev/tui/theme';
17
+ import { runStudioSignIn } from "./studio-auth.js";
18
+ function toneColor(tone) {
19
+ if (tone === 'warn')
20
+ return dsColors.warning.solid;
21
+ if (tone === 'error')
22
+ return dsColors.danger.solid;
23
+ return dsBase.mutedForeground;
24
+ }
25
+ /**
26
+ * Failure messages can carry a raw HTML error body (a proxy's 502 page is a
27
+ * body too). One line of clean text, no markup, bounded length.
28
+ */
29
+ function sanitizeFailureMessage(message) {
30
+ return redactedExcerpt(message.replace(/<[^>]*>/g, ' '), { maxChars: 160 })
31
+ .replace(/\s{2,}/g, ' ').trim() || 'Sign-in failed.';
32
+ }
33
+ export function SignInOverlay({ runtime, open, onClose, onSignedIn }) {
34
+ const [phase, setPhase] = useState('idle');
35
+ const [lines, setLines] = useState([]);
36
+ const [failureMessage, setFailureMessage] = useState(null);
37
+ // The device flow polls until approved/expired and cannot be aborted
38
+ // mid-poll; when the user closes the overlay we stop listening instead of
39
+ // pretending to cancel — a later approval still signs the machine in.
40
+ const runIdRef = useRef(0);
41
+ const start = useCallback(() => {
42
+ const runId = ++runIdRef.current;
43
+ setPhase('running');
44
+ setLines([]);
45
+ setFailureMessage(null);
46
+ void runStudioSignIn(runtime, (text, tone) => {
47
+ if (runIdRef.current !== runId)
48
+ return;
49
+ setLines((prev) => [...prev.slice(-7), { text, tone }]);
50
+ }).then((outcome) => {
51
+ if (runIdRef.current !== runId)
52
+ return;
53
+ if (outcome.success && outcome.identity) {
54
+ setPhase('success');
55
+ onSignedIn(outcome.identity);
56
+ return;
57
+ }
58
+ setPhase('failure');
59
+ setFailureMessage(outcome.message);
60
+ });
61
+ }, [runtime, onSignedIn]);
62
+ const close = useCallback(() => {
63
+ runIdRef.current += 1;
64
+ setPhase('idle');
65
+ setLines([]);
66
+ setFailureMessage(null);
67
+ onClose();
68
+ }, [onClose]);
69
+ return (_jsx(Dialog, { id: "studio-sign-in", isOpen: open, onClose: close, title: "Sign in to Vibes", width: 74, children: _jsxs(VStack, { gap: 1, children: [phase === 'idle' && (_jsxs(_Fragment, { children: [_jsx(DSText, { children: "Approve this terminal from your browser \u2014 no password typed here." }), _jsx(DSText, { variant: "muted", children: "Same flow as `vibes auth login`: you get a device code, the browser opens, and this screen updates when you approve." }), _jsxs(HStack, { gap: 1, children: [_jsx(DSButton, { id: "studio-sign-in-start", label: "Start sign-in", size: "sm", color: "primary", zone: "dialog-studio-sign-in", autoFocus: true, onClick: start }), _jsx(DSButton, { id: "studio-sign-in-cancel", label: "Cancel", size: "sm", variant: "ghost", color: "neutral", zone: "dialog-studio-sign-in", onClick: close })] })] })), phase !== 'idle' && (_jsx(VStack, { gap: 0, children: lines.map((line, index) => (_jsx("text", { style: { fg: toneColor(line.tone) }, children: line.text }, `${index}-${line.text}`))) })), phase === 'running' && (_jsx(DSText, { variant: "muted", children: "Waiting for browser approval \u2014 Esc closes this panel." })), phase === 'success' && (_jsxs(_Fragment, { children: [_jsx("text", { style: { fg: dsColors.success.solid }, children: "Signed in." }), _jsx(HStack, { gap: 1, children: _jsx(DSButton, { id: "studio-sign-in-done", label: "Done", size: "sm", color: "primary", zone: "dialog-studio-sign-in", onClick: close }) })] })), phase === 'failure' && (_jsxs(_Fragment, { children: [_jsx("text", { style: { fg: dsColors.danger.solid }, children: sanitizeFailureMessage(failureMessage ?? 'Sign-in failed.') }), _jsxs(HStack, { gap: 1, children: [_jsx(DSButton, { id: "studio-sign-in-retry", label: "Try again", size: "sm", color: "primary", zone: "dialog-studio-sign-in", onClick: start }), _jsx(DSButton, { id: "studio-sign-in-close", label: "Close", size: "sm", variant: "ghost", color: "neutral", zone: "dialog-studio-sign-in", onClick: close })] })] }))] }) }));
70
+ }
71
+ //# sourceMappingURL=studio-sign-in.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio-sign-in.js","sourceRoot":"","sources":["../../src/tui/studio-sign-in.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Studio UI State — config/manifest descriptor
3
+ *
4
+ * Tiny per-user UI persistence for the studio gateway (first-run
5
+ * orientation seen, and future one-shot UI flags). Deliberately not a
6
+ * settings surface — `fields` is empty so nothing renders in /settings.
7
+ */
8
+ import type { ConfigManifestDescriptor } from '@vibesdotdev/config';
9
+ import * as z from 'zod/v4';
10
+ export declare const STUDIO_UI_STATE_MANIFEST_ID = "studio.ui-state";
11
+ export declare const StudioUiStateSchema: z.ZodObject<{
12
+ orientationSeenAt: z.ZodOptional<z.ZodString>;
13
+ }, z.core.$strip>;
14
+ export type StudioUiState = z.infer<typeof StudioUiStateSchema>;
15
+ declare const descriptor: ConfigManifestDescriptor;
16
+ export default descriptor;
17
+ //# sourceMappingURL=studio-ui-state.config.descriptor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio-ui-state.config.descriptor.d.ts","sourceRoot":"","sources":["../../src/tui/studio-ui-state.config.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAE7D,eAAO,MAAM,mBAAmB;;iBAG9B,CAAC;AAEH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,QAAA,MAAM,UAAU,EAAE,wBAmBjB,CAAC;AAEF,eAAe,UAAU,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Studio UI State — config/manifest descriptor
3
+ *
4
+ * Tiny per-user UI persistence for the studio gateway (first-run
5
+ * orientation seen, and future one-shot UI flags). Deliberately not a
6
+ * settings surface — `fields` is empty so nothing renders in /settings.
7
+ */
8
+ import * as z from 'zod/v4';
9
+ export const STUDIO_UI_STATE_MANIFEST_ID = 'studio.ui-state';
10
+ export const StudioUiStateSchema = z.object({
11
+ /** ISO timestamp of when the user dismissed (or was shown) the orientation tour. */
12
+ orientationSeenAt: z.string().optional()
13
+ });
14
+ const descriptor = {
15
+ kind: 'config/manifest',
16
+ id: STUDIO_UI_STATE_MANIFEST_ID,
17
+ name: 'Studio UI State',
18
+ description: 'One-shot UI flags for the studio gateway (first-run orientation).',
19
+ namespace: 'studio',
20
+ tier: 'user',
21
+ category: 'runtime',
22
+ schema: StudioUiStateSchema,
23
+ fields: {},
24
+ allowedAdapters: ['storage.localdb', 'storage.json'],
25
+ defaultAdapter: 'storage.localdb',
26
+ scope: 'auto',
27
+ customTables: false,
28
+ version: 1,
29
+ internal: true,
30
+ context: {
31
+ surfaces: ['tui', 'cli']
32
+ }
33
+ };
34
+ export default descriptor;
35
+ //# sourceMappingURL=studio-ui-state.config.descriptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"studio-ui-state.config.descriptor.js","sourceRoot":"","sources":["../../src/tui/studio-ui-state.config.descriptor.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAE5B,MAAM,CAAC,MAAM,2BAA2B,GAAG,iBAAiB,CAAC;AAE7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C,oFAAoF;IACpF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACxC,CAAC,CAAC;AAIH,MAAM,UAAU,GAA6B;IAC5C,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,2BAA2B;IAC/B,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,mEAAmE;IAChF,SAAS,EAAE,QAAQ;IACnB,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,SAAS;IACnB,MAAM,EAAE,mBAAmB;IAC3B,MAAM,EAAE,EAAE;IACV,eAAe,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;IACpD,cAAc,EAAE,iBAAiB;IACjC,KAAK,EAAE,MAAM;IACb,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,CAAC;IACV,QAAQ,EAAE,IAAI;IACd,OAAO,EAAE;QACR,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC;KACxB;CACD,CAAC;AAEF,eAAe,UAAU,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,125 @@
1
1
  {
2
2
  "name": "@vibesdotdev/studio",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "1.0.0-rc.0",
4
+ "dependencies": {
5
+ "@opentui/core": "^0.5.17",
6
+ "@opentui/react": "^0.5.17",
7
+ "@vibesdotdev/auth": "^1.0.0-rc.2",
8
+ "@vibesdotdev/chat": "^1.0.0-rc.0",
9
+ "@vibesdotdev/code-sessions": "^1.0.0-rc.0",
10
+ "@vibesdotdev/config": "^1.0.0-rc.2",
11
+ "@vibesdotdev/logging": "^1.0.0-rc.3",
12
+ "@vibesdotdev/paths": "^1.0.0-rc.3",
13
+ "@vibesdotdev/shared": "^1.0.0-rc.4",
14
+ "@vibesdotdev/prompts": "^1.0.0-rc.0",
15
+ "@vibesdotdev/kernel": "^1.0.0-rc.5",
16
+ "@vibesdotdev/tui": "^1.0.0-rc.2",
17
+ "react": "^19.3.1",
18
+ "zod": "^4.6.7"
19
+ },
20
+ "peerDependencies": {
21
+ "@types/react": "^19.3.0"
22
+ },
23
+ "main": "./dist/index.js",
24
+ "exports": {
25
+ ".": {
26
+ "bun": "./dist/index.js",
27
+ "types": "./dist/index.d.ts",
28
+ "import": "./dist/index.js",
29
+ "default": "./dist/index.js"
30
+ },
31
+ "./plugin": {
32
+ "bun": "./dist/studio.plugin.js",
33
+ "types": "./dist/studio.plugin.d.ts",
34
+ "import": "./dist/studio.plugin.js",
35
+ "default": "./dist/studio.plugin.js"
36
+ },
37
+ "./cli.plugin": {
38
+ "bun": "./dist/cli/plugin.js",
39
+ "types": "./dist/cli/plugin.d.ts",
40
+ "import": "./dist/cli/plugin.js",
41
+ "default": "./dist/cli/plugin.js"
42
+ },
43
+ "./cli/plugin": {
44
+ "bun": "./dist/cli/plugin.js",
45
+ "types": "./dist/cli/plugin.d.ts",
46
+ "import": "./dist/cli/plugin.js",
47
+ "default": "./dist/cli/plugin.js"
48
+ },
49
+ "./tui.plugin": {
50
+ "bun": "./dist/tui/plugin.js",
51
+ "types": "./dist/tui/plugin.d.ts",
52
+ "import": "./dist/tui/plugin.js",
53
+ "default": "./dist/tui/plugin.js"
54
+ },
55
+ "./prompts": {
56
+ "bun": "./dist/prompts/index.js",
57
+ "types": "./dist/prompts/index.d.ts",
58
+ "import": "./dist/prompts/index.js",
59
+ "default": "./dist/prompts/index.js"
60
+ },
61
+ "./core.plugin": {
62
+ "bun": "./dist/studio.core.plugin.js",
63
+ "types": "./dist/studio.core.plugin.d.ts",
64
+ "import": "./dist/studio.core.plugin.js",
65
+ "default": "./dist/studio.core.plugin.js"
66
+ },
67
+ "./consumer.plugin": {
68
+ "bun": "./dist/studio.consumer.plugin.js",
69
+ "types": "./dist/studio.consumer.plugin.d.ts",
70
+ "import": "./dist/studio.consumer.plugin.js",
71
+ "default": "./dist/studio.consumer.plugin.js"
72
+ },
73
+ "./theme": {
74
+ "bun": "./dist/theme.js",
75
+ "types": "./dist/theme.d.ts",
76
+ "import": "./dist/theme.js",
77
+ "default": "./dist/theme.js"
78
+ }
79
+ },
80
+ "files": [
81
+ "dist",
82
+ "README.md",
83
+ "LICENSE",
84
+ "VIBES.md"
85
+ ],
86
+ "scripts": {
87
+ "lint": "node ../node_modules/@vibesdotdev/internal-oxlint-toolchain/ratchet.mjs .",
88
+ "test": "bun test --path-ignore-patterns \"**/*.ai.test.*\"",
89
+ "test:ai": "bun test .ai.test --timeout ${VIBES_AI_TEST_TIMEOUT_MS:-420000}",
90
+ "check": "${BUN:-bun} --bun tsc -p tsconfig.json --noEmit",
91
+ "build": "tsc -p tsconfig.build.json"
92
+ },
93
+ "repository": {
94
+ "type": "git",
95
+ "url": "ssh://git@git.vibes.dev/vibesdotdev/framework.git",
96
+ "directory": "studio"
97
+ },
98
+ "publishConfig": {
99
+ "registry": "https://packages.vibes.dev",
100
+ "access": "public"
101
+ },
102
+ "vibes": {
103
+ "visibility": "public",
104
+ "registry": {
105
+ "repositoryId": "4b1374d4-6830-4bfd-98e3-de66416368a8",
106
+ "directory": "studio"
107
+ },
108
+ "publishLoadRuntime": "bun",
109
+ "handedRuntimeLogging": true
110
+ },
111
+ "type": "module",
112
+ "types": "./dist/index.d.ts",
113
+ "license": "MIT",
114
+ "peerDependenciesMeta": {
115
+ "@types/react": {
116
+ "optional": true
117
+ }
118
+ },
119
+ "gitHead": "51230ebdad54bc405014633f435b499fa2a06b89",
120
+ "_vibes_source": {
121
+ "repo": "ssh://git@git.vibes.dev/vibesdotdev/framework.git",
122
+ "sha": "51230ebdad54bc405014633f435b499fa2a06b89",
123
+ "workspaceDigest": "sha256:ad7fe4ef9c1022e601886f0d60aa1bc00fb7e3685708548d14e1042af89fbf6c"
124
+ }
125
+ }