@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.
@@ -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;AAmGH,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;AAwDtC,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;CAChB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,IAAI,CAAA;CAAE,CAAC,CA8DvD;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
+ {"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,CAoCD;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
+ {"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,SAiBnB,CAAC"}
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;;;;;;kBAahB,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
+ {"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"}
@@ -30,6 +30,7 @@ interface AppStartInput {
30
30
  appDir: string;
31
31
  port: number;
32
32
  tmpDir: string;
33
+ stream: boolean;
33
34
  }
34
35
  interface AppStartOutput {
35
36
  pid: number;
@@ -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;CAChB;AAED,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAmCD,UAAU,aAAa;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAoBD,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WAIH,QAAQ;cAAY,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;EA6K5C,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
+ {"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,EA4DnC,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"}
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.45";
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: "high",
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
- pattern: /eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9\.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Ilth-z0-9XXsyMH0iLCJyb2xlIjoic2VydmljZV9yb2xlIi/g,
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 = [params.stdout, params.stderr].filter(
7657
- (s) => s != null
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 appHasDefaultScript = Boolean(appScripts?.[defaultScriptName]);
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 : defaultScriptName;
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 : defaultScriptName;
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
- const schemaModule = await jiti.import(validatedSchemaPath);
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;AA2jClG;;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"}
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.45",
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-xstate-test-plugin": "0.5.35",
57
- "@runa-ai/runa": "0.5.44"
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"