@runa-ai/runa-cli 0.5.45 → 0.5.47
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/dist/commands/ci/utils/app-runtime.d.ts +2 -0
- package/dist/commands/ci/utils/app-runtime.d.ts.map +1 -1
- package/dist/commands/db/utils/schema-sync.d.ts.map +1 -1
- package/dist/commands/dev/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev/contract.d.ts +1 -0
- package/dist/commands/dev/contract.d.ts.map +1 -1
- package/dist/commands/dev/machine.d.ts +1 -0
- package/dist/commands/dev/machine.d.ts.map +1 -1
- package/dist/commands/template-check/config.d.ts.map +1 -1
- package/dist/index.js +83 -25
- package/dist/internal/vuln-checker/analyzers/secret-analyzer.d.ts.map +1 -1
- package/package.json +3 -3
|
@@ -23,6 +23,8 @@ export declare function startAppBackground(params: {
|
|
|
23
23
|
tmpDir: string;
|
|
24
24
|
/** App mode: 'dev' for development (hot reload), 'start' for production. Default: 'start' */
|
|
25
25
|
mode?: AppMode;
|
|
26
|
+
/** Stream output to terminal in addition to log file. Default: false */
|
|
27
|
+
stream?: boolean;
|
|
26
28
|
}): Promise<{
|
|
27
29
|
pid: number;
|
|
28
30
|
cleanupStreams: () => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-runtime.d.ts","sourceRoot":"","sources":["../../../../src/commands/ci/utils/app-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"app-runtime.d.ts","sourceRoot":"","sources":["../../../../src/commands/ci/utils/app-runtime.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AA+GH,wBAAsB,aAAa,CAAC,MAAM,EAAE;IAC1C,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC,GAAG,OAAO,CAAC,IAAI,CAAC,CAMhB;AAiHD;;;;GAIG;AACH,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;AA4DtC,wBAAsB,kBAAkB,CAAC,MAAM,EAAE;IAC/C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,6FAA6F;IAC7F,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CA+DvD;AAED,wBAAsB,eAAe,CAAC,MAAM,EAAE;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,IAAI,CAAC,CAOhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-sync.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/utils/schema-sync.ts"],"names":[],"mappings":"AA0KA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAErC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,KAAK,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;CACJ;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,MAAM,EACrB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC;IACT,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC5C,CAAC,
|
|
1
|
+
{"version":3,"file":"schema-sync.d.ts","sourceRoot":"","sources":["../../../../src/commands/db/utils/schema-sync.ts"],"names":[],"mappings":"AA0KA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,QAAQ;IACvB,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAErC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mBAAmB,EAAE,KAAK,CAAC;QACzB,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,YAAY,EAAE,MAAM,EAAE,CAAC;QACvB,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC,CAAC;CACJ;AAMD;;;;;;;;;;;GAWG;AACH,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,MAAM,EACrB,WAAW,GAAE,MAAsB,GAClC,OAAO,CAAC;IACT,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC5C,CAAC,CA6CD;AAED;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC,GACA,OAAO,CAAC;IACT,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CACtC,CAAC,CAoDD;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE;IACjC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC5B,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACtB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACrC,uEAAuE;IACvE,0BAA0B,CAAC,EAAE,MAAM,EAAE,CAAC;CACvC,GAAG,QAAQ,CA0DX;AAMD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,8BAA8B,CAC5C,aAAa,EAAE,MAAM,EACrB,WAAW,GAAE,MAAsB,GAClC,MAAM,EAAE,CA0CV"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../../src/commands/dev/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuMpC,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"dev.d.ts","sourceRoot":"","sources":["../../../../src/commands/dev/commands/dev.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAuMpC,eAAO,MAAM,UAAU,SAmBnB,CAAC"}
|
|
@@ -18,6 +18,7 @@ export declare const DevInputSchema: z.ZodObject<{
|
|
|
18
18
|
skipDb: z.ZodDefault<z.ZodBoolean>;
|
|
19
19
|
skipApp: z.ZodDefault<z.ZodBoolean>;
|
|
20
20
|
verbose: z.ZodDefault<z.ZodBoolean>;
|
|
21
|
+
stream: z.ZodDefault<z.ZodBoolean>;
|
|
21
22
|
targetDir: z.ZodOptional<z.ZodString>;
|
|
22
23
|
}, z.core.$strict>;
|
|
23
24
|
export type DevInput = z.infer<typeof DevInputSchema>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,eAAO,MAAM,cAAc
|
|
1
|
+
{"version":3,"file":"contract.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/contract.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;GAEG;AACH,eAAO,MAAM,cAAc;;;;;;;kBAehB,CAAC;AAEZ,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAMtD;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;EAAgE,CAAC;AAElG,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAMlE;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;kBAajB,CAAC;AAEZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAS1D,OAAO,KAAK,EAAE,UAAU,EAAY,QAAQ,EAAa,MAAM,YAAY,CAAC;AAsF5E,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../../src/commands/dev/machine.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAiB,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAS1D,OAAO,KAAK,EAAE,UAAU,EAAY,QAAQ,EAAa,MAAM,YAAY,CAAC;AAsF5E,UAAU,aAAa;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAoCD,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAoBD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAIH,QAAQ;cAAY,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;EA8K5C,CAAC;AAMH,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC;AAC3C,MAAM,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,UAAU,CAAC,CAAC;AAM1D;;GAEG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAa1D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAEzD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAE7D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/template-check/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,2CAA4C,CAAC;AAMzE;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/template-check/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,eAAe,2CAA4C,CAAC;AAMzE;;;;GAIG;AACH,eAAO,MAAM,eAAe,EAAE,SAAS,MAAM,EAuEnC,CAAC;AAEX;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAwDvC,CAAC;AAMX;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EvB,CAAC;AAMX;;;;;;GAMG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,MAAM,EA6DjD,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -929,7 +929,7 @@ var CLI_VERSION, HAS_ADMIN_COMMAND;
|
|
|
929
929
|
var init_version = __esm({
|
|
930
930
|
"src/version.ts"() {
|
|
931
931
|
init_esm_shims();
|
|
932
|
-
CLI_VERSION = "0.5.
|
|
932
|
+
CLI_VERSION = "0.5.47";
|
|
933
933
|
HAS_ADMIN_COMMAND = false;
|
|
934
934
|
}
|
|
935
935
|
});
|
|
@@ -1905,6 +1905,14 @@ function calculateConfidence(pattern) {
|
|
|
1905
1905
|
"github-token",
|
|
1906
1906
|
// ghp_/gho_/etc prefix is unique
|
|
1907
1907
|
"github-oauth",
|
|
1908
|
+
"openai-api-key",
|
|
1909
|
+
// sk- prefix with length constraint
|
|
1910
|
+
"openai-project-key",
|
|
1911
|
+
// sk-proj- prefix is unique
|
|
1912
|
+
"anthropic-api-key",
|
|
1913
|
+
// sk-ant-api prefix is unique
|
|
1914
|
+
"google-api-key",
|
|
1915
|
+
// AIza prefix is unique to Google (Gemini, Vertex AI, etc.)
|
|
1908
1916
|
"stripe-secret",
|
|
1909
1917
|
// sk_live_ prefix is unique
|
|
1910
1918
|
"stripe-test",
|
|
@@ -1926,8 +1934,6 @@ function calculateConfidence(pattern) {
|
|
|
1926
1934
|
return 0.95;
|
|
1927
1935
|
}
|
|
1928
1936
|
const mediumConfidencePatterns = [
|
|
1929
|
-
"google-api-key",
|
|
1930
|
-
// AIza prefix is fairly unique
|
|
1931
1937
|
"google-oauth",
|
|
1932
1938
|
"database-url",
|
|
1933
1939
|
// Has structure but could be example
|
|
@@ -2150,13 +2156,13 @@ var init_secret_analyzer = __esm({
|
|
|
2150
2156
|
description: "GitHub OAuth Token detected",
|
|
2151
2157
|
cweId: CWE.HARDCODED_CREDENTIALS
|
|
2152
2158
|
},
|
|
2153
|
-
// Google
|
|
2159
|
+
// Google / Gemini
|
|
2154
2160
|
{
|
|
2155
2161
|
id: "google-api-key",
|
|
2156
|
-
name: "Google API Key",
|
|
2162
|
+
name: "Google / Gemini API Key",
|
|
2157
2163
|
pattern: /AIza[0-9A-Za-z\-_]{35}/g,
|
|
2158
|
-
severity: "
|
|
2159
|
-
description: "Google API Key detected",
|
|
2164
|
+
severity: "critical",
|
|
2165
|
+
description: "Google API Key detected (used by Gemini, Vertex AI, Maps, etc.)",
|
|
2160
2166
|
cweId: CWE.HARDCODED_CREDENTIALS
|
|
2161
2167
|
},
|
|
2162
2168
|
{
|
|
@@ -2190,7 +2196,12 @@ var init_secret_analyzer = __esm({
|
|
|
2190
2196
|
{
|
|
2191
2197
|
id: "supabase-service-role",
|
|
2192
2198
|
name: "Supabase Service Role Key",
|
|
2193
|
-
|
|
2199
|
+
// Supabase JWT: header.payload.signature
|
|
2200
|
+
// Header: {"alg":"HS256","typ":"JWT"} (fixed)
|
|
2201
|
+
// Payload prefix: {"iss":"supabase","ref": (24 bytes, 3-byte aligned = stable base64url)
|
|
2202
|
+
// Service role marker: role":"service_role" = cm9sZSI6InNlcnZpY2Vfcm9sZSI (stable)
|
|
2203
|
+
// Variable content between prefix and marker covers the encoded project ref
|
|
2204
|
+
pattern: /eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6[A-Za-z0-9_-]+cm9sZSI6InNlcnZpY2Vfcm9sZSI[A-Za-z0-9_-]*\.[A-Za-z0-9_-]+/g,
|
|
2194
2205
|
severity: "critical",
|
|
2195
2206
|
description: "Supabase Service Role Key detected",
|
|
2196
2207
|
cweId: CWE.HARDCODED_CREDENTIALS
|
|
@@ -2354,6 +2365,26 @@ var init_secret_analyzer = __esm({
|
|
|
2354
2365
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
2355
2366
|
// AI Service API Keys (2024-2026 patterns)
|
|
2356
2367
|
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
2368
|
+
{
|
|
2369
|
+
id: "openai-api-key",
|
|
2370
|
+
name: "OpenAI API Key",
|
|
2371
|
+
// Format: sk-{48+ alphanumeric chars} (real keys are typically 51 chars)
|
|
2372
|
+
// SECURITY: Bounded quantifier to prevent ReDoS
|
|
2373
|
+
pattern: /sk-[a-zA-Z0-9]{48,200}/g,
|
|
2374
|
+
severity: "critical",
|
|
2375
|
+
description: "OpenAI API key detected",
|
|
2376
|
+
cweId: CWE.HARDCODED_CREDENTIALS
|
|
2377
|
+
},
|
|
2378
|
+
{
|
|
2379
|
+
id: "openai-project-key",
|
|
2380
|
+
name: "OpenAI Project Key",
|
|
2381
|
+
// Format: sk-proj-{48+ alphanumeric/dash/underscore chars}
|
|
2382
|
+
// SECURITY: Bounded quantifier to prevent ReDoS
|
|
2383
|
+
pattern: /sk-proj-[a-zA-Z0-9_-]{48,200}/g,
|
|
2384
|
+
severity: "critical",
|
|
2385
|
+
description: "OpenAI Project API key detected",
|
|
2386
|
+
cweId: CWE.HARDCODED_CREDENTIALS
|
|
2387
|
+
},
|
|
2357
2388
|
{
|
|
2358
2389
|
id: "anthropic-api-key",
|
|
2359
2390
|
name: "Anthropic API Key",
|
|
@@ -7432,6 +7463,8 @@ z.object({
|
|
|
7432
7463
|
skipApp: z.boolean().default(false),
|
|
7433
7464
|
/** Show detailed output */
|
|
7434
7465
|
verbose: z.boolean().default(false),
|
|
7466
|
+
/** Stream app output to terminal (in addition to log file). Default: true */
|
|
7467
|
+
stream: z.boolean().default(true),
|
|
7435
7468
|
/** Target directory (defaults to cwd) */
|
|
7436
7469
|
targetDir: z.string().optional()
|
|
7437
7470
|
}).strict();
|
|
@@ -7653,9 +7686,9 @@ async function executePrSetupBase(input3, ensureTmpDir) {
|
|
|
7653
7686
|
// src/commands/ci/utils/app-runtime.ts
|
|
7654
7687
|
init_esm_shims();
|
|
7655
7688
|
function pipeChildOutputToLog(params) {
|
|
7656
|
-
const sources = [
|
|
7657
|
-
|
|
7658
|
-
);
|
|
7689
|
+
const sources = [];
|
|
7690
|
+
if (params.stdout) sources.push({ stream: params.stdout, isStderr: false });
|
|
7691
|
+
if (params.stderr) sources.push({ stream: params.stderr, isStderr: true });
|
|
7659
7692
|
if (sources.length === 0) {
|
|
7660
7693
|
params.logStream.end();
|
|
7661
7694
|
return { cleanup: () => {
|
|
@@ -7669,10 +7702,14 @@ function pipeChildOutputToLog(params) {
|
|
|
7669
7702
|
params.logStream.end();
|
|
7670
7703
|
}
|
|
7671
7704
|
};
|
|
7672
|
-
for (const source of sources) {
|
|
7705
|
+
for (const { stream: source, isStderr } of sources) {
|
|
7673
7706
|
const onData = (chunk) => {
|
|
7674
7707
|
if (cleanedUp) return;
|
|
7675
7708
|
const canContinue = params.logStream.write(chunk);
|
|
7709
|
+
if (params.streamToTerminal) {
|
|
7710
|
+
const terminalStream = isStderr ? process.stderr : process.stdout;
|
|
7711
|
+
terminalStream.write(chunk);
|
|
7712
|
+
}
|
|
7676
7713
|
if (!canContinue) {
|
|
7677
7714
|
source.pause();
|
|
7678
7715
|
params.logStream.once("drain", () => {
|
|
@@ -7690,7 +7727,7 @@ function pipeChildOutputToLog(params) {
|
|
|
7690
7727
|
const cleanup = () => {
|
|
7691
7728
|
if (cleanedUp) return;
|
|
7692
7729
|
cleanedUp = true;
|
|
7693
|
-
for (const source of sources) {
|
|
7730
|
+
for (const { stream: source } of sources) {
|
|
7694
7731
|
source.removeAllListeners("data");
|
|
7695
7732
|
source.removeAllListeners("end");
|
|
7696
7733
|
source.removeAllListeners("close");
|
|
@@ -7789,18 +7826,17 @@ async function readPackageScripts(pkgPath) {
|
|
|
7789
7826
|
}
|
|
7790
7827
|
function determineAppCommand(mode, isMonorepo2, rootScripts, appScripts, repoRoot, appDir, port) {
|
|
7791
7828
|
const ciScriptName = mode === "dev" ? "dev:ci" : "start:ci";
|
|
7792
|
-
const defaultScriptName = mode;
|
|
7793
7829
|
const nextCommand = mode === "dev" ? "dev" : "start";
|
|
7794
7830
|
const rootHasCiScript = Boolean(rootScripts?.[ciScriptName]);
|
|
7795
|
-
const rootHasDefaultScript = Boolean(rootScripts?.[defaultScriptName]);
|
|
7796
7831
|
const appHasCiScript = Boolean(appScripts?.[ciScriptName]);
|
|
7797
|
-
const
|
|
7832
|
+
const rootHasDefaultScript = mode === "start" && Boolean(rootScripts?.["start"]);
|
|
7833
|
+
const appHasDefaultScript = mode === "start" && Boolean(appScripts?.["start"]);
|
|
7798
7834
|
if (isMonorepo2 && (rootHasCiScript || rootHasDefaultScript)) {
|
|
7799
|
-
const scriptName = rootHasCiScript ? ciScriptName :
|
|
7835
|
+
const scriptName = rootHasCiScript ? ciScriptName : "start";
|
|
7800
7836
|
return { command: ["pnpm", scriptName], useRootScript: true };
|
|
7801
7837
|
}
|
|
7802
7838
|
if (appHasCiScript || appHasDefaultScript) {
|
|
7803
|
-
const scriptName = appHasCiScript ? ciScriptName :
|
|
7839
|
+
const scriptName = appHasCiScript ? ciScriptName : "start";
|
|
7804
7840
|
const dirArgs2 = isMonorepo2 ? ["-C", path10__default.relative(repoRoot, appDir)] : [];
|
|
7805
7841
|
return { command: ["pnpm", ...dirArgs2, scriptName], useRootScript: false };
|
|
7806
7842
|
}
|
|
@@ -7852,7 +7888,8 @@ async function startAppBackground(params) {
|
|
|
7852
7888
|
const { cleanup: cleanupStreams } = pipeChildOutputToLog({
|
|
7853
7889
|
stdout: child.stdout,
|
|
7854
7890
|
stderr: child.stderr,
|
|
7855
|
-
logStream: out
|
|
7891
|
+
logStream: out,
|
|
7892
|
+
streamToTerminal: params.stream
|
|
7856
7893
|
});
|
|
7857
7894
|
const pid = child.pid ?? -1;
|
|
7858
7895
|
await writeFile(path10__default.join(params.tmpDir, "app.pid"), `${pid}
|
|
@@ -7999,7 +8036,7 @@ var e2eMeta2 = {
|
|
|
7999
8036
|
};
|
|
8000
8037
|
var appStartActor = fromPromise(
|
|
8001
8038
|
async ({ input: input3 }) => {
|
|
8002
|
-
const { repoRoot, appDir, port, tmpDir } = input3;
|
|
8039
|
+
const { repoRoot, appDir, port, tmpDir, stream } = input3;
|
|
8003
8040
|
const fullTmpDir = path10__default.join(repoRoot, tmpDir);
|
|
8004
8041
|
await mkdir(fullTmpDir, { recursive: true });
|
|
8005
8042
|
const result = await startAppBackground({
|
|
@@ -8008,7 +8045,8 @@ var appStartActor = fromPromise(
|
|
|
8008
8045
|
port,
|
|
8009
8046
|
env: process.env,
|
|
8010
8047
|
tmpDir: fullTmpDir,
|
|
8011
|
-
mode: "dev"
|
|
8048
|
+
mode: "dev",
|
|
8049
|
+
stream
|
|
8012
8050
|
});
|
|
8013
8051
|
await waitForAppReady({
|
|
8014
8052
|
port,
|
|
@@ -8047,7 +8085,7 @@ var devMachine = setup({
|
|
|
8047
8085
|
id: "dev",
|
|
8048
8086
|
initial: "idle",
|
|
8049
8087
|
context: ({ input: input3 }) => {
|
|
8050
|
-
const repoRoot = input3.repoRoot;
|
|
8088
|
+
const repoRoot = input3.repoRoot ?? process.cwd();
|
|
8051
8089
|
return {
|
|
8052
8090
|
input: input3.input,
|
|
8053
8091
|
repoRoot,
|
|
@@ -8141,7 +8179,8 @@ var devMachine = setup({
|
|
|
8141
8179
|
repoRoot: context.repoRoot,
|
|
8142
8180
|
appDir: detected?.appDir ?? context.repoRoot,
|
|
8143
8181
|
port: context.input.port,
|
|
8144
|
-
tmpDir: context.tmpDir
|
|
8182
|
+
tmpDir: context.tmpDir,
|
|
8183
|
+
stream: context.input.stream
|
|
8145
8184
|
};
|
|
8146
8185
|
},
|
|
8147
8186
|
onDone: {
|
|
@@ -8344,12 +8383,13 @@ async function runDevAction(options, cmd) {
|
|
|
8344
8383
|
);
|
|
8345
8384
|
}
|
|
8346
8385
|
}
|
|
8347
|
-
var devCommand = new Command("dev").description("Start development server (Supabase + Next.js)").option("--port <number>", "Port for Next.js dev server", (val) => Number.parseInt(val, 10), 3e3).option("--skip-db", "Skip Supabase start").option("--skip-app", "Start Supabase only (no app server)").option("--verbose", "Show detailed output").option("--target-dir <path>", "Target directory (defaults to repo root)").action(async (options, cmd) => {
|
|
8386
|
+
var devCommand = new Command("dev").description("Start development server (Supabase + Next.js)").option("--port <number>", "Port for Next.js dev server", (val) => Number.parseInt(val, 10), 3e3).option("--skip-db", "Skip Supabase start").option("--skip-app", "Start Supabase only (no app server)").option("--verbose", "Show detailed output").option("--no-stream", "Disable streaming app output to terminal (log to file only)").option("--target-dir <path>", "Target directory (defaults to repo root)").action(async (options, cmd) => {
|
|
8348
8387
|
const input3 = {
|
|
8349
8388
|
port: options.port,
|
|
8350
8389
|
skipDb: options.skipDb ?? false,
|
|
8351
8390
|
skipApp: options.skipApp ?? false,
|
|
8352
8391
|
verbose: options.verbose ?? false,
|
|
8392
|
+
stream: options.stream ?? true,
|
|
8353
8393
|
targetDir: options.targetDir
|
|
8354
8394
|
};
|
|
8355
8395
|
await runDevAction(input3, cmd);
|
|
@@ -19823,7 +19863,14 @@ function uniqueSorted(values) {
|
|
|
19823
19863
|
async function extractSchemaTablesAndEnums(dbPackagePath, projectRoot = process.cwd()) {
|
|
19824
19864
|
const validatedSchemaPath = validateSchemaPath(dbPackagePath, projectRoot);
|
|
19825
19865
|
const jiti = createJiti(projectRoot, { interopDefault: true });
|
|
19826
|
-
|
|
19866
|
+
let schemaModule;
|
|
19867
|
+
try {
|
|
19868
|
+
schemaModule = await jiti.import(validatedSchemaPath);
|
|
19869
|
+
} catch (error) {
|
|
19870
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
19871
|
+
const hint = errorMessage.includes("unknown is not defined") ? "\n\nHint: Add 'unknown' to drizzle-orm/pg-core imports:\n import { unknown, ... } from 'drizzle-orm/pg-core'" : "";
|
|
19872
|
+
throw new Error(`Failed to load schema from ${validatedSchemaPath}: ${errorMessage}${hint}`);
|
|
19873
|
+
}
|
|
19827
19874
|
const expectedTables = /* @__PURE__ */ new Set();
|
|
19828
19875
|
const expectedEnums = /* @__PURE__ */ new Map();
|
|
19829
19876
|
for (const value of Object.values(schemaModule)) {
|
|
@@ -32785,7 +32832,18 @@ var RUNA_ONLY_FILES = [
|
|
|
32785
32832
|
"packages/database/scripts/check-plpgsql.ts",
|
|
32786
32833
|
"packages/database/scripts/run-splinter.ts",
|
|
32787
32834
|
"packages/database/scripts/seed-generators/index.ts",
|
|
32835
|
+
"packages/database/scripts/seed-generators/loader.ts",
|
|
32836
|
+
"packages/database/scripts/seed-generators/types.ts",
|
|
32788
32837
|
"packages/database/scripts/seed-plugins/supabase-auth.ts",
|
|
32838
|
+
"packages/database/scripts/seed-data-sources/api-source.ts",
|
|
32839
|
+
"packages/database/scripts/seed-data-sources/csv-source.ts",
|
|
32840
|
+
"packages/database/scripts/seed-data-sources/index.ts",
|
|
32841
|
+
"packages/database/scripts/seed-data-sources/json-source.ts",
|
|
32842
|
+
"packages/database/scripts/seed-data-sources/types.ts",
|
|
32843
|
+
"packages/database/scripts/seed-hooks/index.ts",
|
|
32844
|
+
"packages/database/scripts/seed-hooks/types.ts",
|
|
32845
|
+
"packages/database/scripts/seed-utils/index.ts",
|
|
32846
|
+
"packages/database/scripts/seed-utils/security.ts",
|
|
32789
32847
|
// === runa-repo Specific Tests ===
|
|
32790
32848
|
"packages/database/tests/00_system-schemas.sql",
|
|
32791
32849
|
"packages/database/tests/01_table-helpers.sql",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"secret-analyzer.d.ts","sourceRoot":"","sources":["../../../../src/internal/vuln-checker/analyzers/secret-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAoB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"secret-analyzer.d.ts","sourceRoot":"","sources":["../../../../src/internal/vuln-checker/analyzers/secret-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAKH,OAAO,KAAK,EAAE,QAAQ,EAAE,eAAe,EAAE,QAAQ,EAAE,OAAO,EAAoB,MAAM,aAAa,CAAC;AAulClG;;GAEG;AACH,qBAAa,cAAe,YAAW,QAAQ;IAC7C,IAAI,SAAoB;IACxB,UAAU,EAAE,QAAQ,EAAE,CAAc;IAE9B,OAAO,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAkB7C,cAAc;IAY5B,OAAO,CAAC,UAAU;CAGnB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@runa-ai/runa-cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.47",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "AI-powered DevOps CLI",
|
|
6
6
|
"type": "module",
|
|
@@ -53,8 +53,8 @@
|
|
|
53
53
|
"typescript": "5.9.3",
|
|
54
54
|
"xstate": "5.25.0",
|
|
55
55
|
"zod": "4.3.5",
|
|
56
|
-
"@runa-ai/runa
|
|
57
|
-
"@runa-ai/runa": "0.5.
|
|
56
|
+
"@runa-ai/runa": "0.5.44",
|
|
57
|
+
"@runa-ai/runa-xstate-test-plugin": "0.5.35"
|
|
58
58
|
},
|
|
59
59
|
"engines": {
|
|
60
60
|
"node": ">=20.0.0"
|