heyio 4.3.1 → 4.3.2
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/daemon/cli.js +31 -6
- package/dist/daemon/index.js +30 -6
- package/package.json +1 -1
package/dist/daemon/cli.js
CHANGED
|
@@ -80,7 +80,7 @@ var init_constants = __esm({
|
|
|
80
80
|
"packages/shared/dist/constants.js"() {
|
|
81
81
|
"use strict";
|
|
82
82
|
APP_NAME = "io";
|
|
83
|
-
APP_VERSION = "4.3.
|
|
83
|
+
APP_VERSION = "4.3.2";
|
|
84
84
|
API_PORT = 7777;
|
|
85
85
|
API_HOST = "0.0.0.0";
|
|
86
86
|
DEFAULT_MODEL = "gpt-4.1-mini";
|
|
@@ -69899,7 +69899,7 @@ async function executeAgentTask(member, task, worktreePath, options2) {
|
|
|
69899
69899
|
try {
|
|
69900
69900
|
client2 = new CopilotClient3({ workingDirectory: worktreePath });
|
|
69901
69901
|
await client2.start();
|
|
69902
|
-
const model = member.model
|
|
69902
|
+
const model = member.model ? stripVendorPrefix(member.model) : await selectModelForTask(task.description);
|
|
69903
69903
|
const session = await client2.createSession({
|
|
69904
69904
|
model,
|
|
69905
69905
|
workingDirectory: worktreePath,
|
|
@@ -70316,7 +70316,7 @@ Return strict JSON:
|
|
|
70316
70316
|
try {
|
|
70317
70317
|
client2 = new CopilotClient5({ workingDirectory: worktreePath });
|
|
70318
70318
|
await client2.start();
|
|
70319
|
-
const model = qaMember.model
|
|
70319
|
+
const model = qaMember.model ? stripVendorPrefix(qaMember.model) : await selectModelForTask(`QA review: ${objective.description}`);
|
|
70320
70320
|
const session = await client2.createSession({
|
|
70321
70321
|
model,
|
|
70322
70322
|
workingDirectory: worktreePath,
|
|
@@ -70394,6 +70394,7 @@ var init_qa = __esm({
|
|
|
70394
70394
|
"use strict";
|
|
70395
70395
|
init_dist();
|
|
70396
70396
|
init_event_bus();
|
|
70397
|
+
init_registry();
|
|
70397
70398
|
init_model_selector();
|
|
70398
70399
|
init_roles();
|
|
70399
70400
|
init_store2();
|
|
@@ -70450,7 +70451,7 @@ Return strict JSON:
|
|
|
70450
70451
|
try {
|
|
70451
70452
|
client2 = new CopilotClient6();
|
|
70452
70453
|
await client2.start();
|
|
70453
|
-
const model = teamLead.model
|
|
70454
|
+
const model = teamLead.model ? stripVendorPrefix(teamLead.model) : await selectModelForTask(`Code review: ${objective.description}`);
|
|
70454
70455
|
const session = await client2.createSession({
|
|
70455
70456
|
model,
|
|
70456
70457
|
onPermissionRequest: approveAll6,
|
|
@@ -70487,6 +70488,7 @@ You are conducting a final coordination review before QA.`
|
|
|
70487
70488
|
var init_review = __esm({
|
|
70488
70489
|
"packages/daemon/src/execution/review.ts"() {
|
|
70489
70490
|
"use strict";
|
|
70491
|
+
init_registry();
|
|
70490
70492
|
init_model_selector();
|
|
70491
70493
|
init_roles();
|
|
70492
70494
|
}
|
|
@@ -71088,11 +71090,21 @@ async function handleAddSquadMember(rawArgs) {
|
|
|
71088
71090
|
if (!squad) {
|
|
71089
71091
|
throw new Error(`Squad ${squadId} was not found.`);
|
|
71090
71092
|
}
|
|
71093
|
+
let validatedModel = null;
|
|
71094
|
+
if (model) {
|
|
71095
|
+
validatedModel = stripVendorPrefix(model);
|
|
71096
|
+
const pricing = await getModelPricing(validatedModel);
|
|
71097
|
+
if (!pricing) {
|
|
71098
|
+
throw new Error(
|
|
71099
|
+
`Model "${model}" is not available. Use a model from the pricing database (e.g. gpt-4.1-mini, gpt-4.1, claude-sonnet-4, o4-mini). Omit the model field to use dynamic selection.`
|
|
71100
|
+
);
|
|
71101
|
+
}
|
|
71102
|
+
}
|
|
71091
71103
|
const member = await addMember(squadId, {
|
|
71092
71104
|
role,
|
|
71093
71105
|
name,
|
|
71094
71106
|
systemPrompt,
|
|
71095
|
-
model:
|
|
71107
|
+
model: validatedModel
|
|
71096
71108
|
});
|
|
71097
71109
|
eventBus.emit(EVENT_NAMES.SQUAD_MEMBER_UPDATED, { squadId, member });
|
|
71098
71110
|
return {
|
|
@@ -71210,10 +71222,22 @@ async function handleUpdateSquadMember(rawArgs) {
|
|
|
71210
71222
|
if (!member || member.squadId !== squadId) {
|
|
71211
71223
|
throw new Error(`Member ${memberId} was not found in squad ${squadId}.`);
|
|
71212
71224
|
}
|
|
71225
|
+
let validatedModel = void 0;
|
|
71226
|
+
if (model === "") {
|
|
71227
|
+
validatedModel = null;
|
|
71228
|
+
} else if (model) {
|
|
71229
|
+
validatedModel = stripVendorPrefix(model);
|
|
71230
|
+
const pricing = await getModelPricing(validatedModel);
|
|
71231
|
+
if (!pricing) {
|
|
71232
|
+
throw new Error(
|
|
71233
|
+
`Model "${model}" is not available. Use a model from the pricing database (e.g. gpt-4.1-mini, gpt-4.1, claude-sonnet-4, o4-mini). Set to empty string to clear and use dynamic selection.`
|
|
71234
|
+
);
|
|
71235
|
+
}
|
|
71236
|
+
}
|
|
71213
71237
|
const updated = await updateMember(memberId, {
|
|
71214
71238
|
role,
|
|
71215
71239
|
systemPrompt,
|
|
71216
|
-
model:
|
|
71240
|
+
model: validatedModel
|
|
71217
71241
|
});
|
|
71218
71242
|
if (!updated) {
|
|
71219
71243
|
throw new Error(`Failed to update member ${memberId}.`);
|
|
@@ -71303,6 +71327,7 @@ var init_squad2 = __esm({
|
|
|
71303
71327
|
init_event_bus();
|
|
71304
71328
|
init_instances2();
|
|
71305
71329
|
init_runner();
|
|
71330
|
+
init_models();
|
|
71306
71331
|
init_manager2();
|
|
71307
71332
|
init_store2();
|
|
71308
71333
|
execAsync8 = promisify8(exec8);
|
package/dist/daemon/index.js
CHANGED
|
@@ -79,7 +79,7 @@ var init_constants = __esm({
|
|
|
79
79
|
"packages/shared/dist/constants.js"() {
|
|
80
80
|
"use strict";
|
|
81
81
|
APP_NAME = "io";
|
|
82
|
-
APP_VERSION = "4.3.
|
|
82
|
+
APP_VERSION = "4.3.2";
|
|
83
83
|
API_PORT = 7777;
|
|
84
84
|
API_HOST = "0.0.0.0";
|
|
85
85
|
DEFAULT_MODEL = "gpt-4.1-mini";
|
|
@@ -82696,7 +82696,7 @@ async function executeAgentTask(member, task, worktreePath, options2) {
|
|
|
82696
82696
|
try {
|
|
82697
82697
|
client2 = new CopilotClient3({ workingDirectory: worktreePath });
|
|
82698
82698
|
await client2.start();
|
|
82699
|
-
const model = member.model
|
|
82699
|
+
const model = member.model ? stripVendorPrefix(member.model) : await selectModelForTask(task.description);
|
|
82700
82700
|
const session = await client2.createSession({
|
|
82701
82701
|
model,
|
|
82702
82702
|
workingDirectory: worktreePath,
|
|
@@ -83036,6 +83036,7 @@ init_dist();
|
|
|
83036
83036
|
import { exec as exec6 } from "node:child_process";
|
|
83037
83037
|
import { promisify as promisify6 } from "node:util";
|
|
83038
83038
|
import { CopilotClient as CopilotClient5, approveAll as approveAll5 } from "@github/copilot-sdk";
|
|
83039
|
+
init_registry();
|
|
83039
83040
|
var execAsync6 = promisify6(exec6);
|
|
83040
83041
|
var GIT_DIFF_MAX_BUFFER = 10 * 1024 * 1024;
|
|
83041
83042
|
function extractJsonObject2(content) {
|
|
@@ -83077,7 +83078,7 @@ Return strict JSON:
|
|
|
83077
83078
|
try {
|
|
83078
83079
|
client2 = new CopilotClient5({ workingDirectory: worktreePath });
|
|
83079
83080
|
await client2.start();
|
|
83080
|
-
const model = qaMember.model
|
|
83081
|
+
const model = qaMember.model ? stripVendorPrefix(qaMember.model) : await selectModelForTask(`QA review: ${objective.description}`);
|
|
83081
83082
|
const session = await client2.createSession({
|
|
83082
83083
|
model,
|
|
83083
83084
|
workingDirectory: worktreePath,
|
|
@@ -83151,6 +83152,7 @@ async function handleQARejection(objectiveId, feedback) {
|
|
|
83151
83152
|
}
|
|
83152
83153
|
|
|
83153
83154
|
// packages/daemon/src/execution/review.ts
|
|
83155
|
+
init_registry();
|
|
83154
83156
|
import { CopilotClient as CopilotClient6, approveAll as approveAll6 } from "@github/copilot-sdk";
|
|
83155
83157
|
function extractJsonObject3(content) {
|
|
83156
83158
|
const fenced = content.match(/```(?:json)?\s*([\s\S]*?)```/i);
|
|
@@ -83198,7 +83200,7 @@ Return strict JSON:
|
|
|
83198
83200
|
try {
|
|
83199
83201
|
client2 = new CopilotClient6();
|
|
83200
83202
|
await client2.start();
|
|
83201
|
-
const model = teamLead.model
|
|
83203
|
+
const model = teamLead.model ? stripVendorPrefix(teamLead.model) : await selectModelForTask(`Code review: ${objective.description}`);
|
|
83202
83204
|
const session = await client2.createSession({
|
|
83203
83205
|
model,
|
|
83204
83206
|
onPermissionRequest: approveAll6,
|
|
@@ -83948,11 +83950,21 @@ async function handleAddSquadMember(rawArgs) {
|
|
|
83948
83950
|
if (!squad) {
|
|
83949
83951
|
throw new Error(`Squad ${squadId} was not found.`);
|
|
83950
83952
|
}
|
|
83953
|
+
let validatedModel = null;
|
|
83954
|
+
if (model) {
|
|
83955
|
+
validatedModel = stripVendorPrefix(model);
|
|
83956
|
+
const pricing = await getModelPricing(validatedModel);
|
|
83957
|
+
if (!pricing) {
|
|
83958
|
+
throw new Error(
|
|
83959
|
+
`Model "${model}" is not available. Use a model from the pricing database (e.g. gpt-4.1-mini, gpt-4.1, claude-sonnet-4, o4-mini). Omit the model field to use dynamic selection.`
|
|
83960
|
+
);
|
|
83961
|
+
}
|
|
83962
|
+
}
|
|
83951
83963
|
const member = await addMember(squadId, {
|
|
83952
83964
|
role,
|
|
83953
83965
|
name,
|
|
83954
83966
|
systemPrompt,
|
|
83955
|
-
model:
|
|
83967
|
+
model: validatedModel
|
|
83956
83968
|
});
|
|
83957
83969
|
eventBus.emit(EVENT_NAMES.SQUAD_MEMBER_UPDATED, { squadId, member });
|
|
83958
83970
|
return {
|
|
@@ -84070,10 +84082,22 @@ async function handleUpdateSquadMember(rawArgs) {
|
|
|
84070
84082
|
if (!member || member.squadId !== squadId) {
|
|
84071
84083
|
throw new Error(`Member ${memberId} was not found in squad ${squadId}.`);
|
|
84072
84084
|
}
|
|
84085
|
+
let validatedModel = void 0;
|
|
84086
|
+
if (model === "") {
|
|
84087
|
+
validatedModel = null;
|
|
84088
|
+
} else if (model) {
|
|
84089
|
+
validatedModel = stripVendorPrefix(model);
|
|
84090
|
+
const pricing = await getModelPricing(validatedModel);
|
|
84091
|
+
if (!pricing) {
|
|
84092
|
+
throw new Error(
|
|
84093
|
+
`Model "${model}" is not available. Use a model from the pricing database (e.g. gpt-4.1-mini, gpt-4.1, claude-sonnet-4, o4-mini). Set to empty string to clear and use dynamic selection.`
|
|
84094
|
+
);
|
|
84095
|
+
}
|
|
84096
|
+
}
|
|
84073
84097
|
const updated = await updateMember(memberId, {
|
|
84074
84098
|
role,
|
|
84075
84099
|
systemPrompt,
|
|
84076
|
-
model:
|
|
84100
|
+
model: validatedModel
|
|
84077
84101
|
});
|
|
84078
84102
|
if (!updated) {
|
|
84079
84103
|
throw new Error(`Failed to update member ${memberId}.`);
|