freecodego 0.1.6-alpha.2.3 → 0.1.7-alpha.2.1
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/README.i18n.yaml +2 -2
- package/README.md +17 -7
- package/README.zh.md +17 -7
- package/cordis.patch.yml +42 -6
- package/dist/agent-team.js +13 -74
- package/dist/assets/presets/augmentcode/agent.cordis.yml +3 -2
- package/dist/assets/presets/freecodego/agent.cordis.yml +3 -2
- package/dist/auto-review.js +8 -11
- package/dist/bootstrap.js +1167 -737
- package/dist/client.cjs +1244 -290
- package/dist/harness-plugin.js +5 -0
- package/dist/schedule.js +78 -26
- package/dist/tool-agent-team.js +38 -97
- package/package.json +76 -43
- package/presets/augmentcode.patch.yml +273 -0
- package/presets/freecodego.patch.yml +255 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
// Generated by scripts/build-freecodego-bundle.mjs — do not edit.
|
|
2
|
+
// The Loader entry `freecodego-harness-plugin` loads this module and takes its
|
|
3
|
+
// default export as the plugin, so the class is re-exported from the bundle
|
|
4
|
+
// rather than bundled a second time.
|
|
5
|
+
export { FreeCodeGoHarnessPlugin as default } from './bootstrap.js'
|
package/dist/schedule.js
CHANGED
|
@@ -14522,6 +14522,24 @@ config(en_default());
|
|
|
14522
14522
|
import { SessionLogOffset } from "@deepseek-ai/dsh-session";
|
|
14523
14523
|
import { createUserMessage } from "@deepseek-ai/dsh-llm";
|
|
14524
14524
|
import { defineTool } from "@deepseek-ai/dsh-tools";
|
|
14525
|
+
var SchedulePersistenceError = class extends Error {
|
|
14526
|
+
/**
|
|
14527
|
+
* Construct a contained persistence failure.
|
|
14528
|
+
* @param cause - Rejection returned by the shared barrier, when present.
|
|
14529
|
+
*/
|
|
14530
|
+
constructor(cause) {
|
|
14531
|
+
super("Schedule persistence did not complete.", cause === void 0 ? void 0 : { cause });
|
|
14532
|
+
this.name = "SchedulePersistenceError";
|
|
14533
|
+
}
|
|
14534
|
+
};
|
|
14535
|
+
async function flushSchedulePersistence(ctx, session) {
|
|
14536
|
+
try {
|
|
14537
|
+
if (!await ctx.sessions.flush(session)) throw new SchedulePersistenceError();
|
|
14538
|
+
} catch (error51) {
|
|
14539
|
+
if (error51 instanceof SchedulePersistenceError) throw error51;
|
|
14540
|
+
throw new SchedulePersistenceError(error51);
|
|
14541
|
+
}
|
|
14542
|
+
}
|
|
14525
14543
|
var SCHEDULE_CHANGE_VERSION = 1;
|
|
14526
14544
|
var MIN_EVERY_INTERVAL_SECONDS = 300;
|
|
14527
14545
|
var MIN_FOUR_DIGIT_YEAR_MS = Date.parse("0001-01-01T00:00:00.000Z");
|
|
@@ -15073,24 +15091,6 @@ var scheduleProjectionDefinition = {
|
|
|
15073
15091
|
},
|
|
15074
15092
|
stateVersion: 2
|
|
15075
15093
|
};
|
|
15076
|
-
var SchedulePersistenceError = class extends Error {
|
|
15077
|
-
/**
|
|
15078
|
-
* Construct a contained persistence failure.
|
|
15079
|
-
* @param cause - Rejection returned by the shared barrier, when present.
|
|
15080
|
-
*/
|
|
15081
|
-
constructor(cause) {
|
|
15082
|
-
super("Schedule persistence did not complete.", cause === void 0 ? void 0 : { cause });
|
|
15083
|
-
this.name = "SchedulePersistenceError";
|
|
15084
|
-
}
|
|
15085
|
-
};
|
|
15086
|
-
async function flushSchedulePersistence(ctx, session) {
|
|
15087
|
-
try {
|
|
15088
|
-
if (!await ctx.sessions.flush(session)) throw new SchedulePersistenceError();
|
|
15089
|
-
} catch (error51) {
|
|
15090
|
-
if (error51 instanceof SchedulePersistenceError) throw error51;
|
|
15091
|
-
throw new SchedulePersistenceError(error51);
|
|
15092
|
-
}
|
|
15093
|
-
}
|
|
15094
15094
|
var tails = /* @__PURE__ */ new WeakMap();
|
|
15095
15095
|
async function runScheduleTransaction(agent, operation) {
|
|
15096
15096
|
const run = (tails.get(agent) ?? Promise.resolve()).then(operation);
|
|
@@ -15159,6 +15159,15 @@ var ScheduleRuntime = class {
|
|
|
15159
15159
|
start() {
|
|
15160
15160
|
this.requestDrive();
|
|
15161
15161
|
}
|
|
15162
|
+
/**
|
|
15163
|
+
* Active records of the exact runtime suffix, folded from the live log the
|
|
15164
|
+
* way every drive folds it: the owner answers for what its timers can fire.
|
|
15165
|
+
* @returns the active records in create order, or nothing while this runtime is stopping, faulted, or reading a corrupt stream.
|
|
15166
|
+
*/
|
|
15167
|
+
activeRecords() {
|
|
15168
|
+
if (this.stopping || this.faulted) return void 0;
|
|
15169
|
+
return this.readFolded()?.active;
|
|
15170
|
+
}
|
|
15162
15171
|
/** Recompute the live projection after a committed mutation or idle transition. */
|
|
15163
15172
|
requestDrive() {
|
|
15164
15173
|
if (this.stopping || this.faulted) return;
|
|
@@ -15299,10 +15308,7 @@ var ScheduleRuntime = class {
|
|
|
15299
15308
|
type: "text",
|
|
15300
15309
|
text: decision.kind === "one-shot" ? renderReminderFraming(decision.record) : renderEveryReminderBatchFraming(decision.reminders)
|
|
15301
15310
|
}],
|
|
15302
|
-
source: {
|
|
15303
|
-
kind: "plugin",
|
|
15304
|
-
plugin: "schedule"
|
|
15305
|
-
}
|
|
15311
|
+
source: { kind: "schedule" }
|
|
15306
15312
|
});
|
|
15307
15313
|
this.agent.followup(message);
|
|
15308
15314
|
} catch (error51) {
|
|
@@ -15790,6 +15796,49 @@ function apply(ctx) {
|
|
|
15790
15796
|
});
|
|
15791
15797
|
const runtimes = /* @__PURE__ */ new Map();
|
|
15792
15798
|
let stopping = false;
|
|
15799
|
+
const activeReminders = (sessionId) => {
|
|
15800
|
+
const agent = ctx.agents.get(sessionId);
|
|
15801
|
+
const active = agent === void 0 ? void 0 : runtimes.get(agent)?.runtime.activeRecords();
|
|
15802
|
+
return agent === void 0 || active === void 0 ? void 0 : {
|
|
15803
|
+
agent,
|
|
15804
|
+
active
|
|
15805
|
+
};
|
|
15806
|
+
};
|
|
15807
|
+
ctx.effect(() => {
|
|
15808
|
+
const stopActivity = ctx.on("workspace/session-activity", async ({ sessionId }, next) => {
|
|
15809
|
+
const reminders = activeReminders(sessionId);
|
|
15810
|
+
const rest = await next();
|
|
15811
|
+
if (reminders === void 0 || reminders.active.length === 0) return rest;
|
|
15812
|
+
return [{
|
|
15813
|
+
kind: "schedule",
|
|
15814
|
+
items: reminders.active.map((record2) => ({
|
|
15815
|
+
id: record2.id,
|
|
15816
|
+
label: record2.prompt
|
|
15817
|
+
}))
|
|
15818
|
+
}, ...rest];
|
|
15819
|
+
});
|
|
15820
|
+
const stopStop = ctx.on("workspace/session-stop", async ({ sessionId }) => {
|
|
15821
|
+
const owned = activeReminders(sessionId);
|
|
15822
|
+
if (owned === void 0) return;
|
|
15823
|
+
const { agent } = owned;
|
|
15824
|
+
await runScheduleTransaction(agent, async () => {
|
|
15825
|
+
await flushSchedulePersistence(ctx, agent.session);
|
|
15826
|
+
const active = activeReminders(sessionId)?.active ?? [];
|
|
15827
|
+
if (active.length === 0) return;
|
|
15828
|
+
for (const record2 of active) agent.session.append("schedule/change", {
|
|
15829
|
+
version: 1,
|
|
15830
|
+
operation: "delete",
|
|
15831
|
+
id: record2.id
|
|
15832
|
+
});
|
|
15833
|
+
runtimes.get(agent)?.runtime.requestDrive();
|
|
15834
|
+
await flushSchedulePersistence(ctx, agent.session);
|
|
15835
|
+
});
|
|
15836
|
+
});
|
|
15837
|
+
return () => {
|
|
15838
|
+
stopStop();
|
|
15839
|
+
stopActivity();
|
|
15840
|
+
};
|
|
15841
|
+
}, "schedule.archiveAdmission()");
|
|
15793
15842
|
ctx.effect(() => {
|
|
15794
15843
|
const stopCreated = ctx.on("agent/created", ({ agent }) => {
|
|
15795
15844
|
if (stopping || runtimes.has(agent) || !ctx.agents.roots().includes(agent)) return;
|
|
@@ -15808,18 +15857,21 @@ function apply(ctx) {
|
|
|
15808
15857
|
try {
|
|
15809
15858
|
await runtime.dispose();
|
|
15810
15859
|
} finally {
|
|
15811
|
-
if (runtimes.get(agent) === cleanup) runtimes.delete(agent);
|
|
15860
|
+
if (runtimes.get(agent)?.cleanup === cleanup) runtimes.delete(agent);
|
|
15812
15861
|
}
|
|
15813
15862
|
};
|
|
15814
15863
|
}, "schedule.runtime()");
|
|
15815
|
-
runtimes.set(agent,
|
|
15864
|
+
runtimes.set(agent, {
|
|
15865
|
+
runtime,
|
|
15866
|
+
cleanup
|
|
15867
|
+
});
|
|
15816
15868
|
});
|
|
15817
15869
|
return async () => {
|
|
15818
15870
|
stopping = true;
|
|
15819
15871
|
stopCreated();
|
|
15820
|
-
const
|
|
15872
|
+
const owned = [...runtimes.values()];
|
|
15821
15873
|
runtimes.clear();
|
|
15822
|
-
await Promise.allSettled(
|
|
15874
|
+
await Promise.allSettled(owned.map(({ cleanup }) => Promise.resolve(cleanup())));
|
|
15823
15875
|
};
|
|
15824
15876
|
}, "schedule.lifecycle()");
|
|
15825
15877
|
}
|
package/dist/tool-agent-team.js
CHANGED
|
@@ -14878,7 +14878,7 @@ var TeamRoster = class {
|
|
|
14878
14878
|
id: root.id,
|
|
14879
14879
|
name: "lead",
|
|
14880
14880
|
role: "lead",
|
|
14881
|
-
status: root
|
|
14881
|
+
status: availability(root),
|
|
14882
14882
|
...root.options.model === void 0 ? {} : { model: root.options.model },
|
|
14883
14883
|
diagnostics: []
|
|
14884
14884
|
}];
|
|
@@ -14889,7 +14889,7 @@ var TeamRoster = class {
|
|
|
14889
14889
|
id: member.id,
|
|
14890
14890
|
name: member.name,
|
|
14891
14891
|
role: "teammate",
|
|
14892
|
-
status: member.phase === "failed" ? "failed" : member.phase === "provisioning" ? "provisioning" : live
|
|
14892
|
+
status: member.phase === "failed" ? "failed" : member.phase === "provisioning" ? "provisioning" : availability(live),
|
|
14893
14893
|
description: member.description,
|
|
14894
14894
|
provider: member.provider,
|
|
14895
14895
|
context: member.context,
|
|
@@ -14946,7 +14946,7 @@ var TeamRoster = class {
|
|
|
14946
14946
|
if (target.id === membership.root.id) throw new TeamError("the Team Lead cannot interrupt itself", "TEAM_INVALID_TARGET");
|
|
14947
14947
|
const live = this.ctx.agents.get(target.id);
|
|
14948
14948
|
if (live === void 0) return { previousStatus: "inactive" };
|
|
14949
|
-
const previousStatus = live
|
|
14949
|
+
const previousStatus = availability(live);
|
|
14950
14950
|
this.ctx.subagents.interrupt(target.id, {
|
|
14951
14951
|
kind: "ancestor",
|
|
14952
14952
|
agent: caller
|
|
@@ -15128,7 +15128,7 @@ var TeamRoster = class {
|
|
|
15128
15128
|
id: member.id,
|
|
15129
15129
|
name: member.name,
|
|
15130
15130
|
role: "teammate",
|
|
15131
|
-
status: live
|
|
15131
|
+
status: availability(live),
|
|
15132
15132
|
description: member.description,
|
|
15133
15133
|
provider: member.provider,
|
|
15134
15134
|
context: member.context,
|
|
@@ -15160,6 +15160,9 @@ var TeamRoster = class {
|
|
|
15160
15160
|
return foldSubagentDescriptor(agent.session.snapshotEvents(agent.session.inheritedEventCount)) !== void 0;
|
|
15161
15161
|
}
|
|
15162
15162
|
};
|
|
15163
|
+
function availability(agent) {
|
|
15164
|
+
return agent?.status === "running" ? "running" : "inactive";
|
|
15165
|
+
}
|
|
15163
15166
|
var TeamMailbox = class {
|
|
15164
15167
|
ctx;
|
|
15165
15168
|
journal;
|
|
@@ -15500,13 +15503,11 @@ var contentBlockSchema = external_exports.lazy(() => external_exports.union([
|
|
|
15500
15503
|
name: external_exports.string(),
|
|
15501
15504
|
arguments: external_exports.string()
|
|
15502
15505
|
}).strict(),
|
|
15503
|
-
external_exports.
|
|
15504
|
-
|
|
15505
|
-
|
|
15506
|
-
|
|
15507
|
-
|
|
15508
|
-
}).strict(),
|
|
15509
|
-
external_exports.object({ type: external_exports.string().min(1) }).loose().refine((block) => !coreContentBlockTypes.has(block.type), { message: "known content block types must match their declared fields" })
|
|
15506
|
+
external_exports.custom((value) => {
|
|
15507
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) return false;
|
|
15508
|
+
const type = value.type;
|
|
15509
|
+
return typeof type === "string" && type.length > 0 && !coreContentBlockTypes.has(type);
|
|
15510
|
+
})
|
|
15510
15511
|
]));
|
|
15511
15512
|
var teamMemberSnapshotSchema = external_exports.object({
|
|
15512
15513
|
id: sessionIdSchema,
|
|
@@ -15691,7 +15692,7 @@ function applyCurrentTeamEvent(state, event) {
|
|
|
15691
15692
|
}
|
|
15692
15693
|
var teamProjectionDefinition = {
|
|
15693
15694
|
key: "agentTeam",
|
|
15694
|
-
stateVersion:
|
|
15695
|
+
stateVersion: 4,
|
|
15695
15696
|
stateSchema: teamProjectionEntrySchema,
|
|
15696
15697
|
init: (header) => emptyTeamState(header.id),
|
|
15697
15698
|
apply: (state, event) => {
|
|
@@ -16005,14 +16006,10 @@ var TeamService = (() => {
|
|
|
16005
16006
|
let _classSuper = TypertRemoteService;
|
|
16006
16007
|
let _instanceExtraInitializers = [];
|
|
16007
16008
|
let _remoteView_decorators;
|
|
16008
|
-
let _remoteCreateTask_decorators;
|
|
16009
|
-
let _remoteUpdateTask_decorators;
|
|
16010
16009
|
return class TeamService extends _classSuper {
|
|
16011
16010
|
static {
|
|
16012
16011
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
16013
16012
|
_remoteView_decorators = [Remote("view")];
|
|
16014
|
-
_remoteCreateTask_decorators = [Remote("createTask")];
|
|
16015
|
-
_remoteUpdateTask_decorators = [Remote("updateTask")];
|
|
16016
16013
|
__esDecorate(this, null, _remoteView_decorators, {
|
|
16017
16014
|
kind: "method",
|
|
16018
16015
|
name: "remoteView",
|
|
@@ -16024,28 +16021,6 @@ var TeamService = (() => {
|
|
|
16024
16021
|
},
|
|
16025
16022
|
metadata: _metadata
|
|
16026
16023
|
}, null, _instanceExtraInitializers);
|
|
16027
|
-
__esDecorate(this, null, _remoteCreateTask_decorators, {
|
|
16028
|
-
kind: "method",
|
|
16029
|
-
name: "remoteCreateTask",
|
|
16030
|
-
static: false,
|
|
16031
|
-
private: false,
|
|
16032
|
-
access: {
|
|
16033
|
-
has: (obj) => "remoteCreateTask" in obj,
|
|
16034
|
-
get: (obj) => obj.remoteCreateTask
|
|
16035
|
-
},
|
|
16036
|
-
metadata: _metadata
|
|
16037
|
-
}, null, _instanceExtraInitializers);
|
|
16038
|
-
__esDecorate(this, null, _remoteUpdateTask_decorators, {
|
|
16039
|
-
kind: "method",
|
|
16040
|
-
name: "remoteUpdateTask",
|
|
16041
|
-
static: false,
|
|
16042
|
-
private: false,
|
|
16043
|
-
access: {
|
|
16044
|
-
has: (obj) => "remoteUpdateTask" in obj,
|
|
16045
|
-
get: (obj) => obj.remoteUpdateTask
|
|
16046
|
-
},
|
|
16047
|
-
metadata: _metadata
|
|
16048
|
-
}, null, _instanceExtraInitializers);
|
|
16049
16024
|
if (_metadata) Object.defineProperty(this, Symbol.metadata, {
|
|
16050
16025
|
enumerable: true,
|
|
16051
16026
|
configurable: true,
|
|
@@ -16222,42 +16197,6 @@ var TeamService = (() => {
|
|
|
16222
16197
|
tasks: this.listTasks(agent)
|
|
16223
16198
|
};
|
|
16224
16199
|
}
|
|
16225
|
-
/**
|
|
16226
|
-
* Create one shared task through the generated Remote API.
|
|
16227
|
-
* @param agent - exact live Team member creating the task.
|
|
16228
|
-
* @param request - task text, blockers, and advisory write scopes.
|
|
16229
|
-
* @returns the revision-one task or a typed Team rejection.
|
|
16230
|
-
*/
|
|
16231
|
-
remoteCreateTask(agent, request) {
|
|
16232
|
-
return this.taskMutationResult(this.createTask(agent, request));
|
|
16233
|
-
}
|
|
16234
|
-
/**
|
|
16235
|
-
* Apply one task mutation and preserve Team rejections as business results.
|
|
16236
|
-
* @param agent - exact live Team member authorizing the mutation.
|
|
16237
|
-
* @param request - task identity, expected revision, action, and action fields.
|
|
16238
|
-
* @returns the committed task or a typed Team rejection.
|
|
16239
|
-
*/
|
|
16240
|
-
remoteUpdateTask(agent, request) {
|
|
16241
|
-
return this.taskMutationResult(this.updateTask(agent, request));
|
|
16242
|
-
}
|
|
16243
|
-
/** Preserve Team task rejections while allowing unexpected failures to reject the Remote call. */
|
|
16244
|
-
async taskMutationResult(operation) {
|
|
16245
|
-
try {
|
|
16246
|
-
return {
|
|
16247
|
-
ok: true,
|
|
16248
|
-
value: await operation
|
|
16249
|
-
};
|
|
16250
|
-
} catch (error51) {
|
|
16251
|
-
if (!(error51 instanceof TeamError)) throw error51;
|
|
16252
|
-
return {
|
|
16253
|
-
ok: false,
|
|
16254
|
-
error: {
|
|
16255
|
-
code: error51.code === "TEAM_TASK_STALE_REVISION" ? "team-task-conflict" : "team-rejected",
|
|
16256
|
-
message: error51.message
|
|
16257
|
-
}
|
|
16258
|
-
};
|
|
16259
|
-
}
|
|
16260
|
-
}
|
|
16261
16200
|
/** Queue one contained recovery pass after publication has unwound. */
|
|
16262
16201
|
scheduleRecovery(agent) {
|
|
16263
16202
|
queueMicrotask(() => {
|
|
@@ -16309,18 +16248,14 @@ The Team Lead and all teammates share the same working directory and filesystem.
|
|
|
16309
16248
|
|
|
16310
16249
|
Prefer read/edit/write for file changes. If a file operation returns FS_STALE_VERSION, read the current file, rebase your intended change onto the new content, and retry. Bash, formatters, code generators, and scripts are not fully protected by the filesystem version guard; coordinate them explicitly and have the Lead review the final diff and run tests.
|
|
16311
16250
|
|
|
16312
|
-
send_message steers a running target at its nearest step boundary
|
|
16251
|
+
Use the target returned by spawn_teammate or list_agents for send_message and interrupt_agent, or as owner when assigning or filtering shared tasks. send_message steers a running target at its nearest step boundary and starts or resumes an inactive target. inactive means no turn is executing; it does not describe task completion, success, failure, or waiting for other agents. provisioning means member creation is in progress; failed means member creation failed. A delivered peer item starts with its stable message id and sender name. A successful send is already durable even when its result says queued; do not resend it. Shared-task workflow is list, get, claim with the current revision, perform the work, then complete. Task readiness never starts an owner. Before wait_agent, use list_agents and make sure another required member is running or provisioning; use send_message first when the required member is inactive. wait_agent observes only changes after that call starts, never wakes a member, and returns noProgress immediately when no other member can produce a change. Re-list after wakeup or timeout. The Lead must wait for required teammates before giving the final answer.`;
|
|
16313
16252
|
var ACTIVE_WAIT_STATUSES = /* @__PURE__ */ new Set(["running", "provisioning"]);
|
|
16314
16253
|
var NO_ACTIVE_PEER_MESSAGE = "No other Team member is running or provisioning. wait_agent cannot make progress or wake inactive teammates. Re-list with list_agents and team_task_list, then use send_message to wake each required inactive teammate before waiting again.";
|
|
16315
16254
|
var MEMBER_VIEW_SCHEMA = {
|
|
16316
16255
|
type: "object",
|
|
16317
16256
|
additionalProperties: false,
|
|
16318
16257
|
properties: {
|
|
16319
|
-
|
|
16320
|
-
type: "string",
|
|
16321
|
-
required: true
|
|
16322
|
-
},
|
|
16323
|
-
name: {
|
|
16258
|
+
target: {
|
|
16324
16259
|
type: "string",
|
|
16325
16260
|
required: true
|
|
16326
16261
|
},
|
|
@@ -16334,7 +16269,6 @@ var MEMBER_VIEW_SCHEMA = {
|
|
|
16334
16269
|
required: true,
|
|
16335
16270
|
enum: [
|
|
16336
16271
|
"running",
|
|
16337
|
-
"idle",
|
|
16338
16272
|
"inactive",
|
|
16339
16273
|
"provisioning",
|
|
16340
16274
|
"failed"
|
|
@@ -16354,6 +16288,13 @@ var MEMBER_VIEW_SCHEMA = {
|
|
|
16354
16288
|
}
|
|
16355
16289
|
}
|
|
16356
16290
|
};
|
|
16291
|
+
function modelMember(member) {
|
|
16292
|
+
const { id: _id, name: name2, ...details } = member;
|
|
16293
|
+
return {
|
|
16294
|
+
target: name2,
|
|
16295
|
+
...details
|
|
16296
|
+
};
|
|
16297
|
+
}
|
|
16357
16298
|
var TASK_VIEW_SCHEMA = {
|
|
16358
16299
|
type: "object",
|
|
16359
16300
|
additionalProperties: false,
|
|
@@ -16464,11 +16405,7 @@ var INTERRUPT_VALUE_SCHEMA = {
|
|
|
16464
16405
|
properties: { previousStatus: {
|
|
16465
16406
|
type: "string",
|
|
16466
16407
|
required: true,
|
|
16467
|
-
enum: [
|
|
16468
|
-
"running",
|
|
16469
|
-
"idle",
|
|
16470
|
-
"inactive"
|
|
16471
|
-
]
|
|
16408
|
+
enum: ["running", "inactive"]
|
|
16472
16409
|
} }
|
|
16473
16410
|
};
|
|
16474
16411
|
var TASK_LIST_VALUE_SCHEMA = {
|
|
@@ -16537,13 +16474,17 @@ function install(agent, ctx, config2) {
|
|
|
16537
16474
|
async execute(args, exec) {
|
|
16538
16475
|
const agent2 = callingAgent(exec.agent, "spawn_teammate");
|
|
16539
16476
|
const context = args.context ?? "fresh";
|
|
16540
|
-
return await ctx.agentTeams.spawnTeammate(agent2, {
|
|
16477
|
+
return { member: modelMember((await ctx.agentTeams.spawnTeammate(agent2, {
|
|
16541
16478
|
name: args.name,
|
|
16542
16479
|
description: args.description,
|
|
16543
16480
|
prompt: [{
|
|
16544
16481
|
type: "text",
|
|
16545
16482
|
text: `<system-reminder>
|
|
16546
16483
|
You are teammate "${args.name.trim()}".
|
|
16484
|
+
Your Team Lead is named "lead".
|
|
16485
|
+
Use list_agents({}) to find your teammates and their names.
|
|
16486
|
+
To message your Team Lead, use send_message({ target: "lead", message: "..." }).
|
|
16487
|
+
To message another teammate, use send_message({ target: "<teammate name>", message: "..." }).
|
|
16547
16488
|
</system-reminder>
|
|
16548
16489
|
|
|
16549
16490
|
`
|
|
@@ -16554,17 +16495,17 @@ You are teammate "${args.name.trim()}".
|
|
|
16554
16495
|
context,
|
|
16555
16496
|
provider: context === "fork" ? config2.forkProvider : config2.freshProvider,
|
|
16556
16497
|
signal: exec.signal
|
|
16557
|
-
});
|
|
16498
|
+
})).member) };
|
|
16558
16499
|
}
|
|
16559
16500
|
})));
|
|
16560
16501
|
register(scoped.tools.register(defineTool({
|
|
16561
16502
|
name: "send_message",
|
|
16562
|
-
description: "Send one durable message to another Team member. A running target receives it at the nearest step boundary; an
|
|
16503
|
+
description: "Send one durable message to another Team member. A running target receives it at the nearest step boundary; an inactive target starts or resumes a turn.",
|
|
16563
16504
|
parameters: {
|
|
16564
16505
|
target: {
|
|
16565
16506
|
type: "string",
|
|
16566
16507
|
required: true,
|
|
16567
|
-
description: "
|
|
16508
|
+
description: "Member target returned by spawn_teammate or list_agents, including lead."
|
|
16568
16509
|
},
|
|
16569
16510
|
message: {
|
|
16570
16511
|
type: "string",
|
|
@@ -16586,11 +16527,11 @@ You are teammate "${args.name.trim()}".
|
|
|
16586
16527
|
})));
|
|
16587
16528
|
register(scoped.tools.register(defineTool({
|
|
16588
16529
|
name: "list_agents",
|
|
16589
|
-
description: "List the Lead and every durable teammate with current
|
|
16530
|
+
description: "List the Lead and every durable teammate with an addressable target and current availability. inactive means no turn is executing, not a task result. provisioning and failed describe member creation.",
|
|
16590
16531
|
parameters: {},
|
|
16591
16532
|
output: jsonOutput(MEMBER_LIST_VALUE_SCHEMA),
|
|
16592
|
-
|
|
16593
|
-
return Promise.resolve(ctx.agentTeams.listMembers(callingAgent(exec.agent, "list_agents")));
|
|
16533
|
+
execute(_args, exec) {
|
|
16534
|
+
return Promise.resolve(ctx.agentTeams.listMembers(callingAgent(exec.agent, "list_agents")).map(modelMember));
|
|
16594
16535
|
}
|
|
16595
16536
|
})));
|
|
16596
16537
|
register(scoped.tools.register(defineTool({
|
|
@@ -16621,10 +16562,10 @@ You are teammate "${args.name.trim()}".
|
|
|
16621
16562
|
parameters: { target: {
|
|
16622
16563
|
type: "string",
|
|
16623
16564
|
required: true,
|
|
16624
|
-
description: "Teammate
|
|
16565
|
+
description: "Teammate target returned by spawn_teammate or list_agents."
|
|
16625
16566
|
} },
|
|
16626
16567
|
output: jsonOutput(INTERRUPT_VALUE_SCHEMA),
|
|
16627
|
-
|
|
16568
|
+
execute(args, exec) {
|
|
16628
16569
|
return Promise.resolve(ctx.agentTeams.interrupt(callingAgent(exec.agent, "interrupt_agent"), args.target));
|
|
16629
16570
|
}
|
|
16630
16571
|
})));
|
|
@@ -16678,7 +16619,7 @@ You are teammate "${args.name.trim()}".
|
|
|
16678
16619
|
},
|
|
16679
16620
|
owner: {
|
|
16680
16621
|
type: "string",
|
|
16681
|
-
description: "Optional member
|
|
16622
|
+
description: "Optional member target from spawn_teammate or list_agents, matching ownerName; use unowned for tasks without an owner."
|
|
16682
16623
|
},
|
|
16683
16624
|
ready: {
|
|
16684
16625
|
type: "boolean",
|
|
@@ -16769,7 +16710,7 @@ You are teammate "${args.name.trim()}".
|
|
|
16769
16710
|
},
|
|
16770
16711
|
owner: {
|
|
16771
16712
|
type: "string",
|
|
16772
|
-
description: "Member
|
|
16713
|
+
description: "Member target from spawn_teammate or list_agents for Lead-only reassign; omit to unassign."
|
|
16773
16714
|
}
|
|
16774
16715
|
},
|
|
16775
16716
|
output: jsonOutput(TASK_VIEW_SCHEMA),
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "freecodego",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.7-alpha.2.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -18,13 +18,14 @@
|
|
|
18
18
|
],
|
|
19
19
|
"engines": {
|
|
20
20
|
"node": "^22.19.0 || >=24.0.0",
|
|
21
|
-
"dsh": ">=0.1.
|
|
21
|
+
"dsh": ">=0.1.7-alpha.2"
|
|
22
22
|
},
|
|
23
23
|
"type": "module",
|
|
24
24
|
"main": "./dist/bootstrap.js",
|
|
25
25
|
"exports": {
|
|
26
26
|
".": "./dist/bootstrap.js",
|
|
27
27
|
"./client": "./dist/client.cjs",
|
|
28
|
+
"./harness-plugin": "./dist/harness-plugin.js",
|
|
28
29
|
"./session-events": "./dist/session-events.js",
|
|
29
30
|
"./agent-team": "./dist/agent-team.js",
|
|
30
31
|
"./tool-agent-team": "./dist/tool-agent-team.js",
|
|
@@ -35,11 +36,11 @@
|
|
|
35
36
|
},
|
|
36
37
|
"dsh": {
|
|
37
38
|
"bundle": {
|
|
38
|
-
"patch":
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
39
|
+
"patch": [
|
|
40
|
+
"./cordis.patch.yml",
|
|
41
|
+
"./presets/freecodego.patch.yml",
|
|
42
|
+
"./presets/augmentcode.patch.yml"
|
|
43
|
+
]
|
|
43
44
|
},
|
|
44
45
|
"client": {
|
|
45
46
|
"inject": [
|
|
@@ -54,12 +55,13 @@
|
|
|
54
55
|
}
|
|
55
56
|
},
|
|
56
57
|
"freecodego": {
|
|
57
|
-
"harnessBaseline": "0.1.
|
|
58
|
+
"harnessBaseline": "0.1.7-alpha.2"
|
|
58
59
|
},
|
|
59
60
|
"license": "AGPL-3.0-only",
|
|
60
61
|
"files": [
|
|
61
62
|
"dist/bootstrap.js",
|
|
62
63
|
"dist/client.cjs",
|
|
64
|
+
"dist/harness-plugin.js",
|
|
63
65
|
"dist/session-events.js",
|
|
64
66
|
"dist/agent-team.js",
|
|
65
67
|
"dist/tool-agent-team.js",
|
|
@@ -68,6 +70,7 @@
|
|
|
68
70
|
"dist/workers/*.js",
|
|
69
71
|
"dist/assets/**/*",
|
|
70
72
|
"cordis.patch.yml",
|
|
73
|
+
"presets/*.patch.yml",
|
|
71
74
|
"README.md",
|
|
72
75
|
"LICENSE"
|
|
73
76
|
],
|
|
@@ -80,43 +83,73 @@
|
|
|
80
83
|
"zod": "^4.4.3"
|
|
81
84
|
},
|
|
82
85
|
"devDependencies": {
|
|
83
|
-
"@deepseek-ai/dsh-freecodego-agent-engine-router": "^0.1.
|
|
84
|
-
"@deepseek-ai/dsh-freecodego-harness-plugin": "^0.1.
|
|
86
|
+
"@deepseek-ai/dsh-freecodego-agent-engine-router": "^0.1.7-alpha.2",
|
|
87
|
+
"@deepseek-ai/dsh-freecodego-harness-plugin": "^0.1.7-alpha.2"
|
|
85
88
|
},
|
|
86
89
|
"peerDependencies": {
|
|
87
|
-
"@deepseek-ai/cordis": "
|
|
88
|
-
"@deepseek-ai/cordis-plugin-loader": "
|
|
89
|
-
"@deepseek-ai/
|
|
90
|
-
"@deepseek-ai/dsh-agent
|
|
91
|
-
"@deepseek-ai/dsh-
|
|
92
|
-
"@deepseek-ai/dsh-
|
|
93
|
-
"@deepseek-ai/dsh-
|
|
94
|
-
"@deepseek-ai/dsh-
|
|
95
|
-
"@deepseek-ai/dsh-
|
|
96
|
-
"@deepseek-ai/dsh-
|
|
97
|
-
"@deepseek-ai/dsh-
|
|
98
|
-
"@deepseek-ai/dsh-
|
|
99
|
-
"@deepseek-ai/dsh-client-
|
|
100
|
-
"@deepseek-ai/dsh-client-ui-
|
|
101
|
-
"@deepseek-ai/dsh-
|
|
102
|
-
"@deepseek-ai/dsh-
|
|
103
|
-
"@deepseek-ai/dsh-
|
|
104
|
-
"@deepseek-ai/dsh-
|
|
105
|
-
"@deepseek-ai/dsh-
|
|
106
|
-
"@deepseek-ai/dsh-
|
|
107
|
-
"@deepseek-ai/dsh-
|
|
108
|
-
"@deepseek-ai/dsh-
|
|
109
|
-
"@deepseek-ai/dsh-
|
|
110
|
-
"@deepseek-ai/dsh-
|
|
111
|
-
"@deepseek-ai/dsh-
|
|
112
|
-
"@deepseek-ai/dsh-
|
|
113
|
-
"@deepseek-ai/dsh-
|
|
114
|
-
"@deepseek-ai/dsh-
|
|
115
|
-
"@deepseek-ai/dsh-
|
|
116
|
-
"@deepseek-ai/dsh-
|
|
117
|
-
"@deepseek-ai/dsh-
|
|
118
|
-
"@deepseek-ai/dsh-
|
|
119
|
-
"@deepseek-ai/
|
|
90
|
+
"@deepseek-ai/cordis": ">=0.1.7-alpha.2",
|
|
91
|
+
"@deepseek-ai/cordis-plugin-loader": ">=0.1.7-alpha.2",
|
|
92
|
+
"@deepseek-ai/cosmokit": ">=0.1.7-alpha.2",
|
|
93
|
+
"@deepseek-ai/dsh-agent": ">=0.1.7-alpha.2",
|
|
94
|
+
"@deepseek-ai/dsh-agent-instructions": ">=0.1.7-alpha.2",
|
|
95
|
+
"@deepseek-ai/dsh-agent-loop": ">=0.1.7-alpha.2",
|
|
96
|
+
"@deepseek-ai/dsh-agent-preset": ">=0.1.7-alpha.2",
|
|
97
|
+
"@deepseek-ai/dsh-agent-preset-registry": ">=0.1.7-alpha.2",
|
|
98
|
+
"@deepseek-ai/dsh-api-remotes": ">=0.1.7-alpha.2",
|
|
99
|
+
"@deepseek-ai/dsh-atomic-write": ">=0.1.7-alpha.2",
|
|
100
|
+
"@deepseek-ai/dsh-attachment": ">=0.1.7-alpha.2",
|
|
101
|
+
"@deepseek-ai/dsh-brand": ">=0.1.7-alpha.2",
|
|
102
|
+
"@deepseek-ai/dsh-client-locale": ">=0.1.7-alpha.2",
|
|
103
|
+
"@deepseek-ai/dsh-client-ui-conversation": ">=0.1.7-alpha.2",
|
|
104
|
+
"@deepseek-ai/dsh-client-ui-primitives": ">=0.1.7-alpha.2",
|
|
105
|
+
"@deepseek-ai/dsh-client-ui-renderer": ">=0.1.7-alpha.2",
|
|
106
|
+
"@deepseek-ai/dsh-client-ui-session": ">=0.1.7-alpha.2",
|
|
107
|
+
"@deepseek-ai/dsh-client-ui-settings": ">=0.1.7-alpha.2",
|
|
108
|
+
"@deepseek-ai/dsh-command-compact": ">=0.1.7-alpha.2",
|
|
109
|
+
"@deepseek-ai/dsh-command-goal": ">=0.1.7-alpha.2",
|
|
110
|
+
"@deepseek-ai/dsh-compaction-basic": ">=0.1.7-alpha.2",
|
|
111
|
+
"@deepseek-ai/dsh-compaction-tool-result-pruner": ">=0.1.7-alpha.2",
|
|
112
|
+
"@deepseek-ai/dsh-credentials": ">=0.1.7-alpha.2",
|
|
113
|
+
"@deepseek-ai/dsh-home-paths": ">=0.1.7-alpha.2",
|
|
114
|
+
"@deepseek-ai/dsh-llm": ">=0.1.7-alpha.2",
|
|
115
|
+
"@deepseek-ai/dsh-llm-deepseek": ">=0.1.7-alpha.2",
|
|
116
|
+
"@deepseek-ai/dsh-lsp": ">=0.1.7-alpha.2",
|
|
117
|
+
"@deepseek-ai/dsh-lsp-stdio": ">=0.1.7-alpha.2",
|
|
118
|
+
"@deepseek-ai/dsh-mcp-client": ">=0.1.7-alpha.2",
|
|
119
|
+
"@deepseek-ai/dsh-permission-presets": ">=0.1.7-alpha.2",
|
|
120
|
+
"@deepseek-ai/dsh-persona": ">=0.1.7-alpha.2",
|
|
121
|
+
"@deepseek-ai/dsh-plan-mode": ">=0.1.7-alpha.2",
|
|
122
|
+
"@deepseek-ai/dsh-plugin-manager": ">=0.1.7-alpha.2",
|
|
123
|
+
"@deepseek-ai/dsh-sandbox-policy": ">=0.1.7-alpha.2",
|
|
124
|
+
"@deepseek-ai/dsh-scope": ">=0.1.7-alpha.2",
|
|
125
|
+
"@deepseek-ai/dsh-session": ">=0.1.7-alpha.2",
|
|
126
|
+
"@deepseek-ai/dsh-settings": ">=0.1.7-alpha.2",
|
|
127
|
+
"@deepseek-ai/dsh-skill-filesystem": ">=0.1.7-alpha.2",
|
|
128
|
+
"@deepseek-ai/dsh-subagent": ">=0.1.7-alpha.2",
|
|
129
|
+
"@deepseek-ai/dsh-token-meter": ">=0.1.7-alpha.2",
|
|
130
|
+
"@deepseek-ai/dsh-tool-ask-user": ">=0.1.7-alpha.2",
|
|
131
|
+
"@deepseek-ai/dsh-tool-bash": ">=0.1.7-alpha.2",
|
|
132
|
+
"@deepseek-ai/dsh-tool-fs": ">=0.1.7-alpha.2",
|
|
133
|
+
"@deepseek-ai/dsh-tool-fs-search": ">=0.1.7-alpha.2",
|
|
134
|
+
"@deepseek-ai/dsh-tool-goal": ">=0.1.7-alpha.2",
|
|
135
|
+
"@deepseek-ai/dsh-tool-jobs": ">=0.1.7-alpha.2",
|
|
136
|
+
"@deepseek-ai/dsh-tool-lsp": ">=0.1.7-alpha.2",
|
|
137
|
+
"@deepseek-ai/dsh-tool-present": ">=0.1.7-alpha.2",
|
|
138
|
+
"@deepseek-ai/dsh-tool-pwsh": ">=0.1.7-alpha.2",
|
|
139
|
+
"@deepseek-ai/dsh-tool-ralph": ">=0.1.7-alpha.2",
|
|
140
|
+
"@deepseek-ai/dsh-tool-skill": ">=0.1.7-alpha.2",
|
|
141
|
+
"@deepseek-ai/dsh-tool-subagent": ">=0.1.7-alpha.2",
|
|
142
|
+
"@deepseek-ai/dsh-tool-subagent-control": ">=0.1.7-alpha.2",
|
|
143
|
+
"@deepseek-ai/dsh-tool-todo": ">=0.1.7-alpha.2",
|
|
144
|
+
"@deepseek-ai/dsh-tool-web": ">=0.1.7-alpha.2",
|
|
145
|
+
"@deepseek-ai/dsh-tool-workflow": ">=0.1.7-alpha.2",
|
|
146
|
+
"@deepseek-ai/dsh-tools": ">=0.1.7-alpha.2",
|
|
147
|
+
"@deepseek-ai/dsh-typert-protocol": ">=0.1.7-alpha.2",
|
|
148
|
+
"@deepseek-ai/dsh-user-approval": ">=0.1.7-alpha.2",
|
|
149
|
+
"@deepseek-ai/dsh-user-questions": ">=0.1.7-alpha.2",
|
|
150
|
+
"@deepseek-ai/dsh-util-values": ">=0.1.7-alpha.2",
|
|
151
|
+
"@deepseek-ai/dsh-workflow-ptc": ">=0.1.7-alpha.2",
|
|
152
|
+
"@deepseek-ai/schemastery": ">=0.1.7-alpha.2",
|
|
120
153
|
"react": "*"
|
|
121
154
|
},
|
|
122
155
|
"scripts": {}
|