@agent-foundry/studio 1.0.0 → 1.0.1
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/README.md +30 -6
- package/dist/db/deployments.d.ts +8 -0
- package/dist/db/deployments.d.ts.map +1 -1
- package/dist/db/deployments.js +33 -0
- package/dist/db/deployments.js.map +1 -1
- package/dist/db/projects.d.ts +8 -0
- package/dist/db/projects.d.ts.map +1 -1
- package/dist/db/projects.js +33 -0
- package/dist/db/projects.js.map +1 -1
- package/dist/types/deployment.d.ts +56 -0
- package/dist/types/deployment.d.ts.map +1 -1
- package/dist/types/project.d.ts +6 -0
- package/dist/types/project.d.ts.map +1 -1
- package/package.json +9 -3
- package/src/db/deployments.ts +40 -0
- package/src/db/projects.ts +40 -0
- package/src/db/schema.sql +35 -52
- package/src/types/deployment.ts +75 -0
- package/src/types/project.ts +7 -0
package/README.md
CHANGED
|
@@ -64,11 +64,35 @@ const deployment = await client.deployments.create({
|
|
|
64
64
|
});
|
|
65
65
|
```
|
|
66
66
|
|
|
67
|
+
## Testing
|
|
68
|
+
|
|
69
|
+
### Unit Tests
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
pnpm test # Run all unit tests
|
|
73
|
+
pnpm test:watch # Watch mode
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Integration Tests
|
|
77
|
+
|
|
78
|
+
Integration tests run against a real BFF deployment:
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Set required environment variables
|
|
82
|
+
export BFF_URL=http://localhost:11001
|
|
83
|
+
export SUPABASE_JWT_SECRET=your-secret
|
|
84
|
+
|
|
85
|
+
# Run integration tests
|
|
86
|
+
pnpm test:integration
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
See [test/README.md](test/README.md) for detailed test documentation.
|
|
90
|
+
|
|
67
91
|
## Architecture
|
|
68
92
|
|
|
69
93
|
```
|
|
70
94
|
┌─────────────────────────────────────────────────────────┐
|
|
71
|
-
│ Tauri Desktop App
|
|
95
|
+
│ Tauri Desktop App │
|
|
72
96
|
│ ┌─────────────────┐ ┌─────────────────────────────┐ │
|
|
73
97
|
│ │ Studio UI │ │ OpenCode Server (Hono) │ │
|
|
74
98
|
│ │ (React) │ │ │ │
|
|
@@ -77,14 +101,14 @@ const deployment = await client.deployments.create({
|
|
|
77
101
|
│
|
|
78
102
|
▼
|
|
79
103
|
┌─────────────────────────────────────────────────────────┐
|
|
80
|
-
│ @agent-foundry/studio Package
|
|
104
|
+
│ @agent-foundry/studio Package │
|
|
81
105
|
│ ┌──────────┐ ┌──────────────┐ ┌──────────────────┐ │
|
|
82
106
|
│ │ Types │ │ OSS Client │ │ Supabase Client │ │
|
|
83
107
|
│ └──────────┘ └──────┬───────┘ └────────┬─────────┘ │
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
▼
|
|
108
|
+
└───────────────────────┼───────────────────┼─────────────┘
|
|
109
|
+
│ │
|
|
110
|
+
┌───────────┘ │
|
|
111
|
+
▼ ▼
|
|
88
112
|
┌────────────────┐ ┌────────────────────┐
|
|
89
113
|
│ Alibaba Cloud │ │ Supabase │
|
|
90
114
|
│ OSS │ │ PostgreSQL │
|
package/dist/db/deployments.d.ts
CHANGED
|
@@ -61,5 +61,13 @@ export declare class DeploymentsRepository {
|
|
|
61
61
|
* Append to build log
|
|
62
62
|
*/
|
|
63
63
|
appendBuildLog(id: string, logLine: string): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Link deployment to an artifact (called after publishing to Feed)
|
|
66
|
+
*/
|
|
67
|
+
linkToArtifact(id: string, artifactId: string): Promise<Deployment>;
|
|
68
|
+
/**
|
|
69
|
+
* Get deployment by artifact ID
|
|
70
|
+
*/
|
|
71
|
+
getByArtifactId(artifactId: string): Promise<Deployment | null>;
|
|
64
72
|
}
|
|
65
73
|
//# sourceMappingURL=deployments.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/db/deployments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EAGtB,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"deployments.d.ts","sourceRoot":"","sources":["../../src/db/deployments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,UAAU,EACV,qBAAqB,EACrB,qBAAqB,EACrB,qBAAqB,EAGtB,MAAM,qBAAqB,CAAC;AA2D7B;;GAEG;AACH,qBAAa,qBAAqB;IAGpB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAwB;gBAEjB,QAAQ,EAAE,cAAc;IAErD;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IA2B/D;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAiBrD;;OAEG;IACG,IAAI,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAoCtE;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IAkD3E;;OAEG;IACG,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAInD;;OAEG;IACG,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAIpD;;OAEG;IACG,aAAa,CACjB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,GACvE,OAAO,CAAC,UAAU,CAAC;IAWtB;;OAEG;IACG,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQ1F;;OAEG;IACG,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAoBvE;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvC;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAahE;;OAEG;IACG,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAezE;;OAEG;IACG,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;CAgBtE"}
|
package/dist/db/deployments.js
CHANGED
|
@@ -16,6 +16,7 @@ function rowToDeployment(row) {
|
|
|
16
16
|
ossBucket: row.oss_bucket ?? undefined,
|
|
17
17
|
ossKey: row.oss_key ?? undefined,
|
|
18
18
|
ossUrl: row.oss_url ?? undefined,
|
|
19
|
+
artifactId: row.artifact_id ?? undefined,
|
|
19
20
|
bundleSizeBytes: row.bundle_size_bytes ?? undefined,
|
|
20
21
|
buildLog: row.build_log ?? undefined,
|
|
21
22
|
errorMessage: row.error_message ?? undefined,
|
|
@@ -245,5 +246,37 @@ export class DeploymentsRepository {
|
|
|
245
246
|
: logLine;
|
|
246
247
|
await this.update(id, { buildLog: newLog });
|
|
247
248
|
}
|
|
249
|
+
/**
|
|
250
|
+
* Link deployment to an artifact (called after publishing to Feed)
|
|
251
|
+
*/
|
|
252
|
+
async linkToArtifact(id, artifactId) {
|
|
253
|
+
const { data, error } = await this.supabase
|
|
254
|
+
.from(this.TABLE)
|
|
255
|
+
.update({ artifact_id: artifactId })
|
|
256
|
+
.eq('id', id)
|
|
257
|
+
.select()
|
|
258
|
+
.single();
|
|
259
|
+
if (error) {
|
|
260
|
+
throw new Error(`Failed to link deployment to artifact: ${error.message}`);
|
|
261
|
+
}
|
|
262
|
+
return rowToDeployment(data);
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* Get deployment by artifact ID
|
|
266
|
+
*/
|
|
267
|
+
async getByArtifactId(artifactId) {
|
|
268
|
+
const { data, error } = await this.supabase
|
|
269
|
+
.from(this.TABLE)
|
|
270
|
+
.select()
|
|
271
|
+
.eq('artifact_id', artifactId)
|
|
272
|
+
.single();
|
|
273
|
+
if (error) {
|
|
274
|
+
if (error.code === 'PGRST116') {
|
|
275
|
+
return null; // Not found
|
|
276
|
+
}
|
|
277
|
+
throw new Error(`Failed to get deployment: ${error.message}`);
|
|
278
|
+
}
|
|
279
|
+
return rowToDeployment(data);
|
|
280
|
+
}
|
|
248
281
|
}
|
|
249
282
|
//# sourceMappingURL=deployments.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/db/deployments.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"deployments.js","sourceRoot":"","sources":["../../src/db/deployments.ts"],"names":[],"mappings":"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"}
|
package/dist/db/projects.d.ts
CHANGED
|
@@ -44,5 +44,13 @@ export declare class ProjectsRepository {
|
|
|
44
44
|
* Check if a slug is available for current user
|
|
45
45
|
*/
|
|
46
46
|
isSlugAvailable(slug: string): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Link project to a registered app (called after publishing to Feed)
|
|
49
|
+
*/
|
|
50
|
+
linkToApp(id: string, appId: string): Promise<StudioProject>;
|
|
51
|
+
/**
|
|
52
|
+
* Get project by app ID
|
|
53
|
+
*/
|
|
54
|
+
getByAppId(appId: string): Promise<StudioProject | null>;
|
|
47
55
|
}
|
|
48
56
|
//# sourceMappingURL=projects.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAEnB,MAAM,kBAAkB,CAAC;AAwC1B;;GAEG;AACH,qBAAa,kBAAkB;IAGjB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAqB;gBAEd,QAAQ,EAAE,cAAc;IAErD;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IA4B/D;;OAEG;IACG,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAiBxD;;OAEG;IACG,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IAiB5D;;OAEG;IACG,IAAI,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoCtE;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAgC3E;;OAEG;IACG,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAWvC;;OAEG;IACG,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAiBpF;;OAEG;IACG,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD;;OAEG;IACG,SAAS,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAelE;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;CAgB/D"}
|
package/dist/db/projects.js
CHANGED
|
@@ -13,6 +13,7 @@ function rowToProject(row) {
|
|
|
13
13
|
name: row.name,
|
|
14
14
|
slug: row.slug,
|
|
15
15
|
description: row.description ?? undefined,
|
|
16
|
+
appId: row.app_id ?? undefined,
|
|
16
17
|
rootPath: row.root_path,
|
|
17
18
|
framework: row.framework,
|
|
18
19
|
config: row.config,
|
|
@@ -188,5 +189,37 @@ export class ProjectsRepository {
|
|
|
188
189
|
const existing = await this.getBySlug(slug);
|
|
189
190
|
return existing === null;
|
|
190
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Link project to a registered app (called after publishing to Feed)
|
|
194
|
+
*/
|
|
195
|
+
async linkToApp(id, appId) {
|
|
196
|
+
const { data, error } = await this.supabase
|
|
197
|
+
.from(this.TABLE)
|
|
198
|
+
.update({ app_id: appId })
|
|
199
|
+
.eq('id', id)
|
|
200
|
+
.select()
|
|
201
|
+
.single();
|
|
202
|
+
if (error) {
|
|
203
|
+
throw new Error(`Failed to link project to app: ${error.message}`);
|
|
204
|
+
}
|
|
205
|
+
return rowToProject(data);
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get project by app ID
|
|
209
|
+
*/
|
|
210
|
+
async getByAppId(appId) {
|
|
211
|
+
const { data, error } = await this.supabase
|
|
212
|
+
.from(this.TABLE)
|
|
213
|
+
.select()
|
|
214
|
+
.eq('app_id', appId)
|
|
215
|
+
.single();
|
|
216
|
+
if (error) {
|
|
217
|
+
if (error.code === 'PGRST116') {
|
|
218
|
+
return null; // Not found
|
|
219
|
+
}
|
|
220
|
+
throw new Error(`Failed to get project: ${error.message}`);
|
|
221
|
+
}
|
|
222
|
+
return rowToProject(data);
|
|
223
|
+
}
|
|
191
224
|
}
|
|
192
225
|
//# sourceMappingURL=projects.js.map
|
package/dist/db/projects.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/db/projects.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,6 +46,11 @@ export interface Deployment {
|
|
|
46
46
|
ossKey?: string;
|
|
47
47
|
/** Public access URL for the deployed app */
|
|
48
48
|
ossUrl?: string;
|
|
49
|
+
/**
|
|
50
|
+
* Artifact ID created when publishing to Feed.
|
|
51
|
+
* Set when user publishes deployment to AF ecosystem.
|
|
52
|
+
*/
|
|
53
|
+
artifactId?: string;
|
|
49
54
|
/** Total bundle size in bytes */
|
|
50
55
|
bundleSizeBytes?: number;
|
|
51
56
|
/** Build output log */
|
|
@@ -75,6 +80,7 @@ export interface UpdateDeploymentInput {
|
|
|
75
80
|
ossBucket?: string;
|
|
76
81
|
ossKey?: string;
|
|
77
82
|
ossUrl?: string;
|
|
83
|
+
artifactId?: string;
|
|
78
84
|
bundleSizeBytes?: number;
|
|
79
85
|
buildLog?: string;
|
|
80
86
|
errorMessage?: string;
|
|
@@ -109,4 +115,54 @@ export interface DeploymentProgress {
|
|
|
109
115
|
message?: string;
|
|
110
116
|
timestamp: string;
|
|
111
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* App manifest for publishing to Feed
|
|
120
|
+
*/
|
|
121
|
+
export interface AppManifest {
|
|
122
|
+
/** App name */
|
|
123
|
+
name: string;
|
|
124
|
+
/** App version */
|
|
125
|
+
version: string;
|
|
126
|
+
/** Entry point path (default: "/index.html") */
|
|
127
|
+
entry?: string;
|
|
128
|
+
/** Minimum shell version required */
|
|
129
|
+
minShellVersion?: string;
|
|
130
|
+
/** App capabilities */
|
|
131
|
+
capabilities?: {
|
|
132
|
+
bridge?: string[];
|
|
133
|
+
network?: string[];
|
|
134
|
+
storage?: string[];
|
|
135
|
+
};
|
|
136
|
+
/** App permissions */
|
|
137
|
+
permissions?: Array<{
|
|
138
|
+
name: string;
|
|
139
|
+
reason: string;
|
|
140
|
+
}>;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Input for publishing a project to Feed
|
|
144
|
+
*/
|
|
145
|
+
export interface PublishInput {
|
|
146
|
+
/** Specific deployment ID to publish (defaults to latest) */
|
|
147
|
+
deploymentId?: string;
|
|
148
|
+
/** App manifest override */
|
|
149
|
+
manifest?: AppManifest;
|
|
150
|
+
/** App status in registry */
|
|
151
|
+
status?: 'canary' | 'stable';
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Result of publishing to Feed
|
|
155
|
+
*/
|
|
156
|
+
export interface PublishResult {
|
|
157
|
+
/** Registered app ID */
|
|
158
|
+
appId: string;
|
|
159
|
+
/** Created artifact ID */
|
|
160
|
+
artifactId: string;
|
|
161
|
+
/** Deployment that was published */
|
|
162
|
+
deploymentId: string;
|
|
163
|
+
/** Share URL for the app */
|
|
164
|
+
shareUrl: string;
|
|
165
|
+
/** Direct entry URL (OSS) */
|
|
166
|
+
entryUrl: string;
|
|
167
|
+
}
|
|
112
168
|
//# sourceMappingURL=deployment.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/types/deployment.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deployment.d.ts","sourceRoot":"","sources":["../../src/types/deployment.ts"],"names":[],"mappings":"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"}
|
package/dist/types/project.d.ts
CHANGED
|
@@ -37,6 +37,12 @@ export interface StudioProject {
|
|
|
37
37
|
slug: string;
|
|
38
38
|
/** Optional project description */
|
|
39
39
|
description?: string;
|
|
40
|
+
/**
|
|
41
|
+
* Registered app ID after publishing to Feed.
|
|
42
|
+
* Format: com.agentfoundry.studio.{user_prefix}.{slug}
|
|
43
|
+
* Set after first successful publish.
|
|
44
|
+
*/
|
|
45
|
+
appId?: string;
|
|
40
46
|
/** Local filesystem path to project root */
|
|
41
47
|
rootPath: string;
|
|
42
48
|
/** Frontend framework used */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/types/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IAEX,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IAEf,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IAEb,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAE5B,4BAA4B;IAC5B,MAAM,EAAE,aAAa,CAAC;IAEtB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAElB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,qBAAqB;IACrB,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC;IAE7C,sBAAsB;IACtB,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B"}
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/types/project.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,aAAa,CAAC;AAE5F;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,mDAAmD;IACnD,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEjC,oCAAoC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,mCAAmC;IACnC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IAEX,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;IAEf,kCAAkC;IAClC,IAAI,EAAE,MAAM,CAAC;IAEb,mDAAmD;IACnD,IAAI,EAAE,MAAM,CAAC;IAEb,mCAAmC;IACnC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,4CAA4C;IAC5C,QAAQ,EAAE,MAAM,CAAC;IAEjB,8BAA8B;IAC9B,SAAS,EAAE,gBAAgB,CAAC;IAE5B,4BAA4B;IAC5B,MAAM,EAAE,aAAa,CAAC;IAEtB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,gCAAgC;IAChC,SAAS,EAAE,MAAM,CAAC;IAElB,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAE7B,wCAAwC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,4BAA4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,qBAAqB;IACrB,OAAO,CAAC,EAAE,WAAW,GAAG,WAAW,GAAG,MAAM,CAAC;IAE7C,sBAAsB;IACtB,QAAQ,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC3B"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agent-foundry/studio",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "Full SDK for Agent Foundry Build Studio - types, OSS upload, and Supabase client",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -28,6 +28,9 @@
|
|
|
28
28
|
"build": "tsc",
|
|
29
29
|
"dev": "tsc --watch",
|
|
30
30
|
"clean": "rimraf dist",
|
|
31
|
+
"test": "vitest run",
|
|
32
|
+
"test:watch": "vitest",
|
|
33
|
+
"test:integration": "vitest run --config vitest.integration.config.ts",
|
|
31
34
|
"prepublishOnly": "pnpm run clean && pnpm run build"
|
|
32
35
|
},
|
|
33
36
|
"keywords": [
|
|
@@ -48,8 +51,11 @@
|
|
|
48
51
|
"devDependencies": {
|
|
49
52
|
"@types/ali-oss": "^6.16.0",
|
|
50
53
|
"@types/node": "^20.10.0",
|
|
54
|
+
"dotenv": "^16.3.1",
|
|
55
|
+
"jose": "^5.2.0",
|
|
56
|
+
"rimraf": "^5.0.5",
|
|
51
57
|
"typescript": "^5.3.3",
|
|
52
|
-
"
|
|
58
|
+
"vitest": "^2.0.0"
|
|
53
59
|
},
|
|
54
60
|
"files": [
|
|
55
61
|
"dist",
|
|
@@ -59,4 +65,4 @@
|
|
|
59
65
|
"publishConfig": {
|
|
60
66
|
"access": "public"
|
|
61
67
|
}
|
|
62
|
-
}
|
|
68
|
+
}
|
package/src/db/deployments.ts
CHANGED
|
@@ -26,6 +26,7 @@ interface DeploymentRow {
|
|
|
26
26
|
oss_bucket: string | null;
|
|
27
27
|
oss_key: string | null;
|
|
28
28
|
oss_url: string | null;
|
|
29
|
+
artifact_id: string | null;
|
|
29
30
|
bundle_size_bytes: number | null;
|
|
30
31
|
build_log: string | null;
|
|
31
32
|
error_message: string | null;
|
|
@@ -47,6 +48,7 @@ function rowToDeployment(row: DeploymentRow): Deployment {
|
|
|
47
48
|
ossBucket: row.oss_bucket ?? undefined,
|
|
48
49
|
ossKey: row.oss_key ?? undefined,
|
|
49
50
|
ossUrl: row.oss_url ?? undefined,
|
|
51
|
+
artifactId: row.artifact_id ?? undefined,
|
|
50
52
|
bundleSizeBytes: row.bundle_size_bytes ?? undefined,
|
|
51
53
|
buildLog: row.build_log ?? undefined,
|
|
52
54
|
errorMessage: row.error_message ?? undefined,
|
|
@@ -313,4 +315,42 @@ export class DeploymentsRepository {
|
|
|
313
315
|
|
|
314
316
|
await this.update(id, { buildLog: newLog });
|
|
315
317
|
}
|
|
318
|
+
|
|
319
|
+
/**
|
|
320
|
+
* Link deployment to an artifact (called after publishing to Feed)
|
|
321
|
+
*/
|
|
322
|
+
async linkToArtifact(id: string, artifactId: string): Promise<Deployment> {
|
|
323
|
+
const { data, error } = await this.supabase
|
|
324
|
+
.from(this.TABLE)
|
|
325
|
+
.update({ artifact_id: artifactId })
|
|
326
|
+
.eq('id', id)
|
|
327
|
+
.select()
|
|
328
|
+
.single();
|
|
329
|
+
|
|
330
|
+
if (error) {
|
|
331
|
+
throw new Error(`Failed to link deployment to artifact: ${error.message}`);
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return rowToDeployment(data as DeploymentRow);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Get deployment by artifact ID
|
|
339
|
+
*/
|
|
340
|
+
async getByArtifactId(artifactId: string): Promise<Deployment | null> {
|
|
341
|
+
const { data, error } = await this.supabase
|
|
342
|
+
.from(this.TABLE)
|
|
343
|
+
.select()
|
|
344
|
+
.eq('artifact_id', artifactId)
|
|
345
|
+
.single();
|
|
346
|
+
|
|
347
|
+
if (error) {
|
|
348
|
+
if (error.code === 'PGRST116') {
|
|
349
|
+
return null; // Not found
|
|
350
|
+
}
|
|
351
|
+
throw new Error(`Failed to get deployment: ${error.message}`);
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
return rowToDeployment(data as DeploymentRow);
|
|
355
|
+
}
|
|
316
356
|
}
|
package/src/db/projects.ts
CHANGED
|
@@ -22,6 +22,7 @@ interface ProjectRow {
|
|
|
22
22
|
name: string;
|
|
23
23
|
slug: string;
|
|
24
24
|
description: string | null;
|
|
25
|
+
app_id: string | null;
|
|
25
26
|
root_path: string;
|
|
26
27
|
framework: string;
|
|
27
28
|
config: ProjectConfig;
|
|
@@ -40,6 +41,7 @@ function rowToProject(row: ProjectRow): StudioProject {
|
|
|
40
41
|
name: row.name,
|
|
41
42
|
slug: row.slug,
|
|
42
43
|
description: row.description ?? undefined,
|
|
44
|
+
appId: row.app_id ?? undefined,
|
|
43
45
|
rootPath: row.root_path,
|
|
44
46
|
framework: row.framework as StudioProject['framework'],
|
|
45
47
|
config: row.config,
|
|
@@ -243,4 +245,42 @@ export class ProjectsRepository {
|
|
|
243
245
|
const existing = await this.getBySlug(slug);
|
|
244
246
|
return existing === null;
|
|
245
247
|
}
|
|
248
|
+
|
|
249
|
+
/**
|
|
250
|
+
* Link project to a registered app (called after publishing to Feed)
|
|
251
|
+
*/
|
|
252
|
+
async linkToApp(id: string, appId: string): Promise<StudioProject> {
|
|
253
|
+
const { data, error } = await this.supabase
|
|
254
|
+
.from(this.TABLE)
|
|
255
|
+
.update({ app_id: appId })
|
|
256
|
+
.eq('id', id)
|
|
257
|
+
.select()
|
|
258
|
+
.single();
|
|
259
|
+
|
|
260
|
+
if (error) {
|
|
261
|
+
throw new Error(`Failed to link project to app: ${error.message}`);
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
return rowToProject(data as ProjectRow);
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
/**
|
|
268
|
+
* Get project by app ID
|
|
269
|
+
*/
|
|
270
|
+
async getByAppId(appId: string): Promise<StudioProject | null> {
|
|
271
|
+
const { data, error } = await this.supabase
|
|
272
|
+
.from(this.TABLE)
|
|
273
|
+
.select()
|
|
274
|
+
.eq('app_id', appId)
|
|
275
|
+
.single();
|
|
276
|
+
|
|
277
|
+
if (error) {
|
|
278
|
+
if (error.code === 'PGRST116') {
|
|
279
|
+
return null; // Not found
|
|
280
|
+
}
|
|
281
|
+
throw new Error(`Failed to get project: ${error.message}`);
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
return rowToProject(data as ProjectRow);
|
|
285
|
+
}
|
|
246
286
|
}
|
package/src/db/schema.sql
CHANGED
|
@@ -1,22 +1,18 @@
|
|
|
1
1
|
-- =============================================================================
|
|
2
|
-
-- Agent Foundry Studio Database Schema
|
|
2
|
+
-- Agent Foundry Studio Database Schema (Reference)
|
|
3
3
|
-- =============================================================================
|
|
4
|
-
-- This
|
|
5
|
-
--
|
|
4
|
+
-- This is a REFERENCE file showing the schema design.
|
|
5
|
+
-- Actual migrations are managed via Alembic in services/bff/alembic/versions/
|
|
6
6
|
--
|
|
7
|
-
--
|
|
8
|
-
-- 1. Enable uuid-ossp extension: CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
9
|
-
-- 2. Supabase Auth must be configured (auth.users table exists)
|
|
7
|
+
-- See: 005_add_studio_tables.py for the actual migration
|
|
10
8
|
-- =============================================================================
|
|
11
9
|
|
|
12
|
-
-- Enable UUID extension if not already enabled
|
|
13
|
-
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
|
|
14
|
-
|
|
15
10
|
-- =============================================================================
|
|
16
11
|
-- Studio Projects
|
|
17
12
|
-- =============================================================================
|
|
18
13
|
-- Represents a React/Vite project created and managed in Build Studio.
|
|
19
14
|
-- Each project belongs to a user and can optionally be forked from another project.
|
|
15
|
+
-- After first publish to Feed, links to an apps entry via app_id.
|
|
20
16
|
|
|
21
17
|
CREATE TABLE IF NOT EXISTS studio_projects (
|
|
22
18
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
@@ -29,6 +25,9 @@ CREATE TABLE IF NOT EXISTS studio_projects (
|
|
|
29
25
|
slug VARCHAR(255) NOT NULL,
|
|
30
26
|
description TEXT,
|
|
31
27
|
|
|
28
|
+
-- Link to registered app (set after first publish to Feed)
|
|
29
|
+
app_id VARCHAR(255) REFERENCES apps(id) ON DELETE SET NULL,
|
|
30
|
+
|
|
32
31
|
-- Local development
|
|
33
32
|
root_path TEXT NOT NULL, -- Local filesystem path to project root
|
|
34
33
|
|
|
@@ -44,35 +43,21 @@ CREATE TABLE IF NOT EXISTS studio_projects (
|
|
|
44
43
|
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
|
45
44
|
|
|
46
45
|
-- Ensure slug is unique per user
|
|
47
|
-
CONSTRAINT
|
|
46
|
+
CONSTRAINT uq_studio_projects_user_slug UNIQUE (user_id, slug)
|
|
48
47
|
);
|
|
49
48
|
|
|
50
|
-
--
|
|
49
|
+
-- Indexes
|
|
51
50
|
CREATE INDEX IF NOT EXISTS idx_studio_projects_user_id ON studio_projects(user_id);
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
CREATE INDEX IF NOT EXISTS
|
|
55
|
-
|
|
56
|
-
-- Trigger to auto-update updated_at
|
|
57
|
-
CREATE OR REPLACE FUNCTION update_studio_projects_updated_at()
|
|
58
|
-
RETURNS TRIGGER AS $$
|
|
59
|
-
BEGIN
|
|
60
|
-
NEW.updated_at = NOW();
|
|
61
|
-
RETURN NEW;
|
|
62
|
-
END;
|
|
63
|
-
$$ LANGUAGE plpgsql;
|
|
64
|
-
|
|
65
|
-
DROP TRIGGER IF EXISTS trigger_studio_projects_updated_at ON studio_projects;
|
|
66
|
-
CREATE TRIGGER trigger_studio_projects_updated_at
|
|
67
|
-
BEFORE UPDATE ON studio_projects
|
|
68
|
-
FOR EACH ROW
|
|
69
|
-
EXECUTE FUNCTION update_studio_projects_updated_at();
|
|
51
|
+
CREATE INDEX IF NOT EXISTS idx_studio_projects_app_id ON studio_projects(app_id) WHERE app_id IS NOT NULL;
|
|
52
|
+
CREATE INDEX IF NOT EXISTS idx_studio_projects_parent ON studio_projects(parent_project_id) WHERE parent_project_id IS NOT NULL;
|
|
53
|
+
CREATE INDEX IF NOT EXISTS idx_studio_projects_created ON studio_projects(created_at DESC);
|
|
70
54
|
|
|
71
55
|
-- =============================================================================
|
|
72
56
|
-- Studio Deployments
|
|
73
57
|
-- =============================================================================
|
|
74
58
|
-- Represents a build and upload of a project to Alibaba Cloud OSS.
|
|
75
59
|
-- Tracks the full lifecycle: pending -> building -> uploading -> published/failed
|
|
60
|
+
-- When published to Feed, links to an artifact entry via artifact_id.
|
|
76
61
|
|
|
77
62
|
CREATE TABLE IF NOT EXISTS studio_deployments (
|
|
78
63
|
id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),
|
|
@@ -93,6 +78,9 @@ CREATE TABLE IF NOT EXISTS studio_deployments (
|
|
|
93
78
|
oss_key TEXT,
|
|
94
79
|
oss_url TEXT,
|
|
95
80
|
|
|
81
|
+
-- Link to artifact (set when publishing to Feed)
|
|
82
|
+
artifact_id UUID REFERENCES artifacts(id) ON DELETE SET NULL,
|
|
83
|
+
|
|
96
84
|
-- Metrics
|
|
97
85
|
bundle_size_bytes BIGINT,
|
|
98
86
|
|
|
@@ -108,49 +96,44 @@ CREATE TABLE IF NOT EXISTS studio_deployments (
|
|
|
108
96
|
published_at TIMESTAMPTZ
|
|
109
97
|
);
|
|
110
98
|
|
|
111
|
-
--
|
|
99
|
+
-- Indexes
|
|
112
100
|
CREATE INDEX IF NOT EXISTS idx_studio_deployments_project_id ON studio_deployments(project_id);
|
|
113
|
-
|
|
114
|
-
-- Index for user's deployments
|
|
115
101
|
CREATE INDEX IF NOT EXISTS idx_studio_deployments_user_id ON studio_deployments(user_id);
|
|
116
|
-
|
|
117
|
-
-- Index for filtering by status
|
|
118
102
|
CREATE INDEX IF NOT EXISTS idx_studio_deployments_status ON studio_deployments(status);
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
CREATE INDEX IF NOT EXISTS idx_studio_deployments_project_created
|
|
122
|
-
ON studio_deployments(project_id, created_at DESC);
|
|
103
|
+
CREATE INDEX IF NOT EXISTS idx_studio_deployments_artifact ON studio_deployments(artifact_id) WHERE artifact_id IS NOT NULL;
|
|
104
|
+
CREATE INDEX IF NOT EXISTS idx_studio_deployments_project_created ON studio_deployments(project_id, created_at DESC);
|
|
123
105
|
|
|
124
106
|
-- =============================================================================
|
|
125
107
|
-- Row Level Security (RLS) Policies
|
|
126
108
|
-- =============================================================================
|
|
127
|
-
-- Enable RLS to ensure users can only access their own data.
|
|
128
109
|
|
|
129
|
-
-- Enable RLS on both tables
|
|
130
110
|
ALTER TABLE studio_projects ENABLE ROW LEVEL SECURITY;
|
|
131
111
|
ALTER TABLE studio_deployments ENABLE ROW LEVEL SECURITY;
|
|
132
112
|
|
|
133
113
|
-- Projects: Users can only see/modify their own projects
|
|
134
|
-
|
|
135
|
-
CREATE POLICY studio_projects_user_policy ON studio_projects
|
|
114
|
+
CREATE POLICY studio_projects_owner_all ON studio_projects
|
|
136
115
|
FOR ALL
|
|
137
116
|
USING (auth.uid() = user_id)
|
|
138
117
|
WITH CHECK (auth.uid() = user_id);
|
|
139
118
|
|
|
140
119
|
-- Deployments: Users can only see/modify their own deployments
|
|
141
|
-
|
|
142
|
-
CREATE POLICY studio_deployments_user_policy ON studio_deployments
|
|
120
|
+
CREATE POLICY studio_deployments_owner_all ON studio_deployments
|
|
143
121
|
FOR ALL
|
|
144
122
|
USING (auth.uid() = user_id)
|
|
145
123
|
WITH CHECK (auth.uid() = user_id);
|
|
146
124
|
|
|
147
125
|
-- =============================================================================
|
|
148
|
-
--
|
|
126
|
+
-- Integration with Existing Tables
|
|
127
|
+
-- =============================================================================
|
|
128
|
+
--
|
|
129
|
+
-- When a project is published to Feed:
|
|
130
|
+
-- 1. Create/update entry in `apps` table
|
|
131
|
+
-- 2. Create `app_versions` record
|
|
132
|
+
-- 3. Create `artifacts` record with:
|
|
133
|
+
-- - type = 'bundle'
|
|
134
|
+
-- - bucket = 'external'
|
|
135
|
+
-- - object_path = OSS URL
|
|
136
|
+
-- 4. Link deployment to artifact via artifact_id
|
|
137
|
+
-- 5. Link project to app via app_id
|
|
138
|
+
--
|
|
149
139
|
-- =============================================================================
|
|
150
|
-
|
|
151
|
-
COMMENT ON TABLE studio_projects IS 'React/Vite projects created in Agent Foundry Build Studio';
|
|
152
|
-
COMMENT ON COLUMN studio_projects.root_path IS 'Local filesystem path - only valid on the machine where project was created';
|
|
153
|
-
COMMENT ON COLUMN studio_projects.config IS 'JSON config: buildCommand, outputDir, envVars, baseUrl, viteConfig';
|
|
154
|
-
|
|
155
|
-
COMMENT ON TABLE studio_deployments IS 'Build and deployment history to Alibaba Cloud OSS';
|
|
156
|
-
COMMENT ON COLUMN studio_deployments.metadata IS 'JSON metadata: commitHash, branch, buildDurationMs, uploadDurationMs, fileCount';
|
package/src/types/deployment.ts
CHANGED
|
@@ -68,6 +68,12 @@ export interface Deployment {
|
|
|
68
68
|
/** Public access URL for the deployed app */
|
|
69
69
|
ossUrl?: string;
|
|
70
70
|
|
|
71
|
+
/**
|
|
72
|
+
* Artifact ID created when publishing to Feed.
|
|
73
|
+
* Set when user publishes deployment to AF ecosystem.
|
|
74
|
+
*/
|
|
75
|
+
artifactId?: string;
|
|
76
|
+
|
|
71
77
|
/** Total bundle size in bytes */
|
|
72
78
|
bundleSizeBytes?: number;
|
|
73
79
|
|
|
@@ -104,6 +110,7 @@ export interface UpdateDeploymentInput {
|
|
|
104
110
|
ossBucket?: string;
|
|
105
111
|
ossKey?: string;
|
|
106
112
|
ossUrl?: string;
|
|
113
|
+
artifactId?: string;
|
|
107
114
|
bundleSizeBytes?: number;
|
|
108
115
|
buildLog?: string;
|
|
109
116
|
errorMessage?: string;
|
|
@@ -145,3 +152,71 @@ export interface DeploymentProgress {
|
|
|
145
152
|
message?: string;
|
|
146
153
|
timestamp: string;
|
|
147
154
|
}
|
|
155
|
+
|
|
156
|
+
// =============================================================================
|
|
157
|
+
// Publish to Feed Types
|
|
158
|
+
// =============================================================================
|
|
159
|
+
|
|
160
|
+
/**
|
|
161
|
+
* App manifest for publishing to Feed
|
|
162
|
+
*/
|
|
163
|
+
export interface AppManifest {
|
|
164
|
+
/** App name */
|
|
165
|
+
name: string;
|
|
166
|
+
|
|
167
|
+
/** App version */
|
|
168
|
+
version: string;
|
|
169
|
+
|
|
170
|
+
/** Entry point path (default: "/index.html") */
|
|
171
|
+
entry?: string;
|
|
172
|
+
|
|
173
|
+
/** Minimum shell version required */
|
|
174
|
+
minShellVersion?: string;
|
|
175
|
+
|
|
176
|
+
/** App capabilities */
|
|
177
|
+
capabilities?: {
|
|
178
|
+
bridge?: string[];
|
|
179
|
+
network?: string[];
|
|
180
|
+
storage?: string[];
|
|
181
|
+
};
|
|
182
|
+
|
|
183
|
+
/** App permissions */
|
|
184
|
+
permissions?: Array<{
|
|
185
|
+
name: string;
|
|
186
|
+
reason: string;
|
|
187
|
+
}>;
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
/**
|
|
191
|
+
* Input for publishing a project to Feed
|
|
192
|
+
*/
|
|
193
|
+
export interface PublishInput {
|
|
194
|
+
/** Specific deployment ID to publish (defaults to latest) */
|
|
195
|
+
deploymentId?: string;
|
|
196
|
+
|
|
197
|
+
/** App manifest override */
|
|
198
|
+
manifest?: AppManifest;
|
|
199
|
+
|
|
200
|
+
/** App status in registry */
|
|
201
|
+
status?: 'canary' | 'stable';
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
/**
|
|
205
|
+
* Result of publishing to Feed
|
|
206
|
+
*/
|
|
207
|
+
export interface PublishResult {
|
|
208
|
+
/** Registered app ID */
|
|
209
|
+
appId: string;
|
|
210
|
+
|
|
211
|
+
/** Created artifact ID */
|
|
212
|
+
artifactId: string;
|
|
213
|
+
|
|
214
|
+
/** Deployment that was published */
|
|
215
|
+
deploymentId: string;
|
|
216
|
+
|
|
217
|
+
/** Share URL for the app */
|
|
218
|
+
shareUrl: string;
|
|
219
|
+
|
|
220
|
+
/** Direct entry URL (OSS) */
|
|
221
|
+
entryUrl: string;
|
|
222
|
+
}
|
package/src/types/project.ts
CHANGED
|
@@ -49,6 +49,13 @@ export interface StudioProject {
|
|
|
49
49
|
/** Optional project description */
|
|
50
50
|
description?: string;
|
|
51
51
|
|
|
52
|
+
/**
|
|
53
|
+
* Registered app ID after publishing to Feed.
|
|
54
|
+
* Format: com.agentfoundry.studio.{user_prefix}.{slug}
|
|
55
|
+
* Set after first successful publish.
|
|
56
|
+
*/
|
|
57
|
+
appId?: string;
|
|
58
|
+
|
|
52
59
|
/** Local filesystem path to project root */
|
|
53
60
|
rootPath: string;
|
|
54
61
|
|