@kody-ade/kody-engine 0.4.161 → 0.4.163
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 +22 -24
- package/package.json +1 -1
package/dist/bin/kody.js
CHANGED
|
@@ -1061,7 +1061,7 @@ var init_loadPriorArt = __esm({
|
|
|
1061
1061
|
// package.json
|
|
1062
1062
|
var package_default = {
|
|
1063
1063
|
name: "@kody-ade/kody-engine",
|
|
1064
|
-
version: "0.4.
|
|
1064
|
+
version: "0.4.163",
|
|
1065
1065
|
description: "kody \u2014 autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
|
|
1066
1066
|
license: "MIT",
|
|
1067
1067
|
type: "module",
|
|
@@ -9141,7 +9141,7 @@ function composeAuthBlock(authProfile, login, password) {
|
|
|
9141
9141
|
return `Auth: a saved Playwright \`storageState.json\` is available at \`${authProfile}\`. Pass it to the browser via the \`storageState\` parameter so the session starts pre-authenticated.`;
|
|
9142
9142
|
}
|
|
9143
9143
|
if (login && password) {
|
|
9144
|
-
return `Auth: log in once at the app's login page. Username: \`${login}\` \xB7 Password: \`${password}\`. Re-use the session afterwards.`;
|
|
9144
|
+
return `Auth: log in once at the app's login page. Username: \`${login}\` \xB7 Password: \`${password}\`. Type each field key-by-key (Playwright \`locator.pressSequentially()\` / the MCP \`browser_type\` tool), NOT a one-shot \`fill()\` or value assignment: pasting a value in a single step often fails to fire the login form's framework onChange handler, so the form submits empty and you get a FALSE "invalid email or password". After typing, confirm the field shows the value before clicking submit; if the first attempt is rejected, re-type key-by-key before treating the credentials as wrong. Re-use the session afterwards.`;
|
|
9145
9145
|
}
|
|
9146
9146
|
if (login) {
|
|
9147
9147
|
return `Auth: username \`${login}\` is configured but no \`LOGIN_PASSWORD\` secret was found. Note auth-gated surfaces as gaps.`;
|
|
@@ -13474,6 +13474,24 @@ async function runExecutable(profileName, input) {
|
|
|
13474
13474
|
}
|
|
13475
13475
|
}
|
|
13476
13476
|
}
|
|
13477
|
+
var MAX_CHAIN_HOPS = 60;
|
|
13478
|
+
async function runExecutableChain(profileName, input) {
|
|
13479
|
+
let result = await runExecutable(profileName, input);
|
|
13480
|
+
for (let hops = 1; result.nextDispatch && hops <= MAX_CHAIN_HOPS; hops++) {
|
|
13481
|
+
const next = result.nextDispatch;
|
|
13482
|
+
process.stdout.write(`\u2192 kody: in-process hand-off \u2192 ${next.executable} (hop ${hops}/${MAX_CHAIN_HOPS})
|
|
13483
|
+
|
|
13484
|
+
`);
|
|
13485
|
+
result = await runExecutable(next.executable, { ...input, cliArgs: next.cliArgs });
|
|
13486
|
+
}
|
|
13487
|
+
if (result.nextDispatch) {
|
|
13488
|
+
process.stderr.write(
|
|
13489
|
+
`[kody] in-process hand-off cap (${MAX_CHAIN_HOPS}) reached; not running ${result.nextDispatch.executable}
|
|
13490
|
+
`
|
|
13491
|
+
);
|
|
13492
|
+
}
|
|
13493
|
+
return result;
|
|
13494
|
+
}
|
|
13477
13495
|
function clearStampedLifecycleLabels(profile, ctx) {
|
|
13478
13496
|
const target = ctx.args.issue ?? ctx.args.pr;
|
|
13479
13497
|
if (typeof target !== "number" || !Number.isFinite(target)) return;
|
|
@@ -14353,33 +14371,13 @@ ${CI_HELP}`);
|
|
|
14353
14371
|
`);
|
|
14354
14372
|
try {
|
|
14355
14373
|
const config = earlyConfig ?? loadConfig(cwd);
|
|
14356
|
-
|
|
14374
|
+
const result = await runExecutableChain(dispatch2.executable, {
|
|
14357
14375
|
cliArgs: dispatch2.cliArgs,
|
|
14358
14376
|
cwd,
|
|
14359
14377
|
config,
|
|
14360
14378
|
verbose: args.verbose,
|
|
14361
14379
|
quiet: args.quiet
|
|
14362
14380
|
});
|
|
14363
|
-
const MAX_CHAIN_HOPS = 60;
|
|
14364
|
-
for (let hops = 1; result.nextDispatch && hops <= MAX_CHAIN_HOPS; hops++) {
|
|
14365
|
-
const next = result.nextDispatch;
|
|
14366
|
-
process.stdout.write(`\u2192 kody: in-process hand-off \u2192 ${next.executable} (hop ${hops}/${MAX_CHAIN_HOPS})
|
|
14367
|
-
|
|
14368
|
-
`);
|
|
14369
|
-
result = await runExecutable(next.executable, {
|
|
14370
|
-
cliArgs: next.cliArgs,
|
|
14371
|
-
cwd,
|
|
14372
|
-
config,
|
|
14373
|
-
verbose: args.verbose,
|
|
14374
|
-
quiet: args.quiet
|
|
14375
|
-
});
|
|
14376
|
-
}
|
|
14377
|
-
if (result.nextDispatch) {
|
|
14378
|
-
process.stderr.write(
|
|
14379
|
-
`[kody] in-process hand-off cap (${MAX_CHAIN_HOPS}) reached; not running ${result.nextDispatch.executable}
|
|
14380
|
-
`
|
|
14381
|
-
);
|
|
14382
|
-
}
|
|
14383
14381
|
if (result.exitCode !== 0 && result.exitCode !== 1 && result.exitCode !== 2) {
|
|
14384
14382
|
postFailureTail(issueNumber, cwd, result.reason || `exit ${result.exitCode}`);
|
|
14385
14383
|
}
|
|
@@ -14987,7 +14985,7 @@ ${HELP_TEXT}`);
|
|
|
14987
14985
|
const configlessCommands = /* @__PURE__ */ new Set(["init", "goal-scheduler", "brain-serve"]);
|
|
14988
14986
|
const skipConfig = configlessCommands.has(args.executableName ?? "");
|
|
14989
14987
|
try {
|
|
14990
|
-
const result = await
|
|
14988
|
+
const result = await runExecutableChain(args.executableName, {
|
|
14991
14989
|
cliArgs: args.cliArgs ?? {},
|
|
14992
14990
|
cwd,
|
|
14993
14991
|
skipConfig,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kody-ade/kody-engine",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.163",
|
|
4
4
|
"description": "kody — autonomous development engine. Single-session Claude Code agent behind a generic executor + declarative executable profiles.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|