@frontera-sdk/cli 1.53.17 → 1.53.19
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@frontera-sdk/cli",
|
|
3
|
-
"version": "1.53.
|
|
3
|
+
"version": "1.53.19",
|
|
4
4
|
"description": "The frontera CLI — scaffold, pull, save and deploy Frontera apps and automations.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"frontera",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
}
|
|
32
32
|
},
|
|
33
33
|
"scripts": {
|
|
34
|
-
"test": "bun test",
|
|
34
|
+
"test": "bun test --parallel",
|
|
35
35
|
"typecheck": "../../node_modules/typescript7/bin/tsc --noEmit",
|
|
36
36
|
"sync:sdk": "bun run scripts/sync-sdk.ts",
|
|
37
37
|
"sync:kit": "bun run scripts/sync-kit.ts",
|
|
@@ -40,8 +40,8 @@
|
|
|
40
40
|
"dependencies": {
|
|
41
41
|
"@anthropic-ai/claude-agent-sdk": "^0.3.251",
|
|
42
42
|
"@faker-js/faker": "10.6.0",
|
|
43
|
-
"@frontera-sdk/core": "1.53.
|
|
44
|
-
"@frontera-sdk/functions": "1.53.
|
|
43
|
+
"@frontera-sdk/core": "1.53.19",
|
|
44
|
+
"@frontera-sdk/functions": "1.53.19",
|
|
45
45
|
"ai": "^6.0.319",
|
|
46
46
|
"axe-core": "4.12.1",
|
|
47
47
|
"gray-matter": "^4.0.3",
|
|
@@ -49,7 +49,7 @@
|
|
|
49
49
|
"yaml": "^2.9.0"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@frontera-sdk/forge-contracts": "1.53.
|
|
52
|
+
"@frontera-sdk/forge-contracts": "1.53.19",
|
|
53
53
|
"@types/bun": "^1.3.14",
|
|
54
54
|
"typescript": "^5.9.3"
|
|
55
55
|
}
|
package/src/commands/app/dev.ts
CHANGED
|
@@ -43,8 +43,9 @@ export function appPort(raw: string | undefined): number {
|
|
|
43
43
|
async function waitForApp(origin: string, process: Bun.Subprocess): Promise<void> {
|
|
44
44
|
const deadline = Date.now() + READY_TIMEOUT_MS
|
|
45
45
|
while (Date.now() < deadline) {
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
// A server killed by a signal (Ctrl+C, a group TERM) has a signalCode and no exitCode.
|
|
47
|
+
if (process.exitCode !== null || process.signalCode !== null) {
|
|
48
|
+
throw new CliError(`App dev server exited with ${process.signalCode ?? `code ${process.exitCode}`}`, {
|
|
48
49
|
code: 'FAILURE',
|
|
49
50
|
hint: 'run `bun run dev` directly to inspect the framework error',
|
|
50
51
|
})
|
|
@@ -321,7 +322,8 @@ export const appDev: Command = {
|
|
|
321
322
|
forgetDevServer(home, project.slug, process.pid)
|
|
322
323
|
stop()
|
|
323
324
|
// Once the framework's server has exited (or after a while, whatever it does), what it wrote goes back.
|
|
324
|
-
|
|
325
|
+
// Unref'd: a pending wait would hold this process open for the whole STOP_WAIT_MS after the server exited.
|
|
326
|
+
await Promise.race([child.exited, new Promise((resolve) => setTimeout(resolve, STOP_WAIT_MS).unref())])
|
|
325
327
|
const { putBack, left } = kept.atStop()
|
|
326
328
|
for (const line of [putBackLine(putBack, 'stopped'), leftLine(left)]) if (line) ctx.output.note(`[dev] ${line}`)
|
|
327
329
|
if (aside) ctx.output.note(`[dev] ${aside.restore()}`)
|
|
@@ -208,12 +208,19 @@ export function settingEffect(line: string): SettingEffect | null {
|
|
|
208
208
|
|
|
209
209
|
/**
|
|
210
210
|
* Feature flags that change nothing about how the project runs locally, so a
|
|
211
|
-
* different value is not a difference to report
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
* for development).
|
|
211
|
+
* different value is not a difference to report: the retired flags, which an
|
|
212
|
+
* older platform still reports and an older CLI recorded. The surface flags
|
|
213
|
+
* only showed or hid navigation; personal Grok now follows the deployment.
|
|
215
214
|
*/
|
|
216
|
-
export const NOT_A_DIFFERENCE_HERE: ReadonlySet<string> = new Set([
|
|
215
|
+
export const NOT_A_DIFFERENCE_HERE: ReadonlySet<string> = new Set([
|
|
216
|
+
'blueprint.authoring',
|
|
217
|
+
'blueprint.enabled',
|
|
218
|
+
'apps.enabled',
|
|
219
|
+
'copilot.enabled',
|
|
220
|
+
'workflows.enabled',
|
|
221
|
+
'xaiSubscription.enabled',
|
|
222
|
+
'xaiSubscription.sessionsEnabled',
|
|
223
|
+
])
|
|
217
224
|
|
|
218
225
|
type Call = (method: string, path: string, body?: unknown) => Promise<{ status: number; body: unknown }>
|
|
219
226
|
|
package/src/local/local-seed.ts
CHANGED
|
@@ -381,9 +381,8 @@ export async function ensureProviderModels(args: { serviceUrl: string; password:
|
|
|
381
381
|
}
|
|
382
382
|
|
|
383
383
|
/**
|
|
384
|
-
* Make Blueprint usable in a fresh local organization:
|
|
385
|
-
*
|
|
386
|
-
* Blueprint CLI loop (`pull`, `plan`, `apply`) and Studio's Blueprint section
|
|
384
|
+
* Make Blueprint usable in a fresh local organization: the lifecycle
|
|
385
|
+
* adopted, so the Blueprint CLI loop (`pull`, `plan`, `apply`) and Studio's Blueprint section
|
|
387
386
|
* work from the first start. The seeded owner is already the Steward.
|
|
388
387
|
*/
|
|
389
388
|
export async function ensureBlueprint(args: { serviceUrl: string; password: string; organizationId: string; logFile: string }): Promise<void> {
|
|
@@ -393,13 +392,6 @@ export async function ensureBlueprint(args: { serviceUrl: string; password: stri
|
|
|
393
392
|
} catch {
|
|
394
393
|
return
|
|
395
394
|
}
|
|
396
|
-
const flag = await call(args.serviceUrl, '/v1/config/feature-flags', {
|
|
397
|
-
method: 'PUT',
|
|
398
|
-
token,
|
|
399
|
-
orgId: args.organizationId,
|
|
400
|
-
body: { key: 'blueprint.authoring', value: true },
|
|
401
|
-
})
|
|
402
|
-
if (flag.status >= 300) log(args.logFile, `turning on Blueprint authoring answered ${flag.status}`)
|
|
403
395
|
const lifecycle = await call(args.serviceUrl, '/v1/blueprint/lifecycle', { token, orgId: args.organizationId })
|
|
404
396
|
if (lifecycle.status === 404) {
|
|
405
397
|
const adopted = await call(args.serviceUrl, '/v1/blueprint/lifecycle/adopt', { token, orgId: args.organizationId, body: {} })
|