@kody-ade/kody-engine 0.4.604 → 0.4.605

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/bin/kody.js CHANGED
@@ -15,7 +15,7 @@ var init_package = __esm({
15
15
  "package.json"() {
16
16
  package_default = {
17
17
  name: "@kody-ade/kody-engine",
18
- version: "0.4.604",
18
+ version: "0.4.605",
19
19
  description: "kody \u2014 autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative implementation profiles.",
20
20
  license: "MIT",
21
21
  type: "module",
@@ -18481,6 +18481,36 @@ async function saveAccountRepositoryAuth(targetUrl, cookie, auth) {
18481
18481
  });
18482
18482
  if (!response.ok) throw new Error(`app repository setup returned ${response.status}`);
18483
18483
  }
18484
+ async function prepareAccountCredentials(ctx, profile, input) {
18485
+ const cookie = browserSessionCookieHeader(profile, input.targetUrl);
18486
+ if (!cookie) {
18487
+ appendAuthMessage(ctx, "Auth: QA account credentials could not be prepared because the app session is missing.");
18488
+ return false;
18489
+ }
18490
+ const origin = browserOrigin(input.targetUrl);
18491
+ for (const name of input.names) {
18492
+ if (!/^[A-Z][A-Z0-9_]{0,127}$/.test(name)) {
18493
+ appendAuthMessage(ctx, "Auth: QA account credentials contain an invalid credential name.");
18494
+ return false;
18495
+ }
18496
+ const credential = await resolveRuntimeSecret(name, ctx);
18497
+ if (!credential.value) {
18498
+ appendAuthMessage(ctx, `Auth: QA account setup is incomplete because no \`${name}\` secret was found.`);
18499
+ return false;
18500
+ }
18501
+ const response = await fetch(`${origin}/api/kody/account/credentials`, {
18502
+ method: "PUT",
18503
+ headers: { "content-type": "application/json", cookie, origin },
18504
+ body: JSON.stringify({ name, value: credential.value })
18505
+ });
18506
+ if (!response.ok) {
18507
+ appendAuthMessage(ctx, `Auth: QA account credential setup returned ${response.status}.`);
18508
+ return false;
18509
+ }
18510
+ }
18511
+ appendAuthMessage(ctx, "Auth: the QA account's required model credentials are already prepared by the engine.");
18512
+ return true;
18513
+ }
18484
18514
  function mergeStorageStates(existingPath, nextPath) {
18485
18515
  if (existingPath === nextPath || !fs48.existsSync(existingPath)) return;
18486
18516
  const existing = JSON.parse(fs48.readFileSync(existingPath, "utf-8"));
@@ -18872,6 +18902,12 @@ var init_prepareSimpleCapabilityRuntime = __esm({
18872
18902
  login: String(ctx.data.qaLogin ?? ""),
18873
18903
  targetUrl
18874
18904
  });
18905
+ if (requirements.qaAccountCredentials?.length) {
18906
+ await prepareAccountCredentials(ctx, profile, {
18907
+ names: requirements.qaAccountCredentials,
18908
+ targetUrl
18909
+ });
18910
+ }
18875
18911
  }
18876
18912
  if (requirements.githubTestToken) {
18877
18913
  const capabilityInput = ctx.data.capabilityInput && typeof ctx.data.capabilityInput === "object" && !Array.isArray(ctx.data.capabilityInput) ? ctx.data.capabilityInput : {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kody-ade/kody-engine",
3
- "version": "0.4.604",
3
+ "version": "0.4.605",
4
4
  "description": "kody — autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative implementation profiles.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -82,6 +82,7 @@ jobs:
82
82
  GH_PAT: ${{ secrets.GH_PAT }}
83
83
  KODY_TOKEN: ${{ secrets.KODY_TOKEN }}
84
84
  E2E_GITHUB_TOKEN: ${{ secrets.E2E_GITHUB_TOKEN }}
85
+ OPENROUTER_API_KEY: ${{ secrets.OPENROUTER_API_KEY }}
85
86
  KODY_APP_ID: ${{ secrets.KODY_APP_ID }}
86
87
  KODY_APP_PRIVATE_KEY: ${{ secrets.KODY_APP_PRIVATE_KEY }}
87
88
  SESSION_ID: ${{ inputs.sessionId }}