@caupulican/pi-adaptative 0.90.4 → 0.90.6
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/CHANGELOG.md +12 -0
- package/dist/core/autonomy/lane-tracker.d.ts +5 -0
- package/dist/core/autonomy/lane-tracker.d.ts.map +1 -1
- package/dist/core/autonomy/lane-tracker.js +8 -0
- package/dist/core/autonomy/lane-tracker.js.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.d.ts +2 -0
- package/dist/core/delegation/worker-authority-resolver.d.ts.map +1 -1
- package/dist/core/delegation/worker-authority-resolver.js +23 -3
- package/dist/core/delegation/worker-authority-resolver.js.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.d.ts +1 -1
- package/dist/core/delegation/worker-delegation-controller.d.ts.map +1 -1
- package/dist/core/delegation/worker-delegation-controller.js +48 -13
- package/dist/core/delegation/worker-delegation-controller.js.map +1 -1
- package/dist/core/delegation/worker-lane-projection.d.ts.map +1 -1
- package/dist/core/delegation/worker-lane-projection.js +6 -0
- package/dist/core/delegation/worker-lane-projection.js.map +1 -1
- package/dist/core/delegation/worker-profile-resolver.d.ts +28 -1
- package/dist/core/delegation/worker-profile-resolver.d.ts.map +1 -1
- package/dist/core/delegation/worker-profile-resolver.js +38 -9
- package/dist/core/delegation/worker-profile-resolver.js.map +1 -1
- package/dist/core/orchestration/worker-model-pins.d.ts +28 -0
- package/dist/core/orchestration/worker-model-pins.d.ts.map +1 -0
- package/dist/core/orchestration/worker-model-pins.js +141 -0
- package/dist/core/orchestration/worker-model-pins.js.map +1 -0
- package/dist/core/provider-tool-text.d.ts.map +1 -1
- package/dist/core/provider-tool-text.js +29 -13
- package/dist/core/provider-tool-text.js.map +1 -1
- package/dist/core/runtime-builder.d.ts.map +1 -1
- package/dist/core/runtime-builder.js +1 -0
- package/dist/core/runtime-builder.js.map +1 -1
- package/dist/core/settings-manager.d.ts +4 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js +24 -0
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/tools/delegate-status.d.ts +2 -0
- package/dist/core/tools/delegate-status.d.ts.map +1 -1
- package/dist/core/tools/delegate-status.js +7 -0
- package/dist/core/tools/delegate-status.js.map +1 -1
- package/dist/core/tools/delegate.d.ts +6 -0
- package/dist/core/tools/delegate.d.ts.map +1 -1
- package/dist/core/tools/delegate.js +38 -6
- package/dist/core/tools/delegate.js.map +1 -1
- package/docs/settings.md +31 -0
- package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
- package/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/examples/extensions/sandbox/package-lock.json +2 -2
- package/examples/extensions/sandbox/package.json +1 -1
- package/examples/extensions/with-deps/package-lock.json +2 -2
- package/examples/extensions/with-deps/package.json +1 -1
- package/npm-shrinkwrap.json +12 -12
- package/package.json +4 -4
|
@@ -11,6 +11,8 @@ export interface DelegateStatusLaneView {
|
|
|
11
11
|
laneId: string;
|
|
12
12
|
label?: string;
|
|
13
13
|
profileId?: string;
|
|
14
|
+
modelRef?: string;
|
|
15
|
+
thinkingLevel?: NonNullable<LaneRecord["thinkingLevel"]>;
|
|
14
16
|
type: LaneRecord["type"];
|
|
15
17
|
status: LaneRecord["status"];
|
|
16
18
|
reasonCode?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate-status.d.ts","sourceRoot":"","sources":["../../../src/core/tools/delegate-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,KAAK,EAAE,uBAAuB,EAAyB,MAAM,0BAA0B,CAAC;AAI/F,eAAO,MAAM,8BAA8B,+hBACkf,CAAC;AAE9hB,eAAO,MAAM,uBAAuB,YAAI,QAAQ,EAAE,QAAQ,CAAU,CAAC;AAErE,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5E,MAAM,WAAW,mBAAmB;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,sBAAsB;IACtC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;IACzB,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,IAAI,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC/C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,KAAK,CAAC,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,6BAA6B,GACtC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,sBAAsB,GAAG,aAAa,GAAG,kBAAkB,CAAA;CAAE,CAAC;AAEtF,MAAM,WAAW,0BAA0B;IAC1C,cAAc,IAAI,UAAU,EAAE,CAAC;IAC/B,uBAAuB,IAAI,WAAW,EAAE,CAAC;IACzC,uBAAuB,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,6BAA6B,CAAC;CAC3E;
|
|
1
|
+
{"version":3,"file":"delegate-status.d.ts","sourceRoot":"","sources":["../../../src/core/tools/delegate-status.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,9 @@ function formattedRecordStatus(record) {
|
|
|
19
19
|
}
|
|
20
20
|
function formatRecord(record, claim) {
|
|
21
21
|
const lines = [`${record.laneId}: ${formattedRecordStatus(record)}`];
|
|
22
|
+
if (record.modelRef) {
|
|
23
|
+
lines.push(`effective model: ${record.modelRef}; thinking: ${record.thinkingLevel ?? "unknown"}`);
|
|
24
|
+
}
|
|
22
25
|
if (record.status === "queued")
|
|
23
26
|
lines.push(WORKER_QUEUED_CAVEMAN_GUIDANCE);
|
|
24
27
|
if (record.reasonCode === "worker_blocked") {
|
|
@@ -48,6 +51,8 @@ function laneView(record, claim) {
|
|
|
48
51
|
laneId: record.laneId,
|
|
49
52
|
...(record.label ? { label: record.label } : {}),
|
|
50
53
|
...(record.profileId ? { profileId: record.profileId } : {}),
|
|
54
|
+
...(record.modelRef ? { modelRef: record.modelRef } : {}),
|
|
55
|
+
...(record.thinkingLevel ? { thinkingLevel: record.thinkingLevel } : {}),
|
|
51
56
|
type: record.type,
|
|
52
57
|
status: record.status,
|
|
53
58
|
...(record.reasonCode ? { reasonCode: record.reasonCode } : {}),
|
|
@@ -58,6 +63,8 @@ function lanePanelRow(view, details) {
|
|
|
58
63
|
const meta = [
|
|
59
64
|
view.label ? view.laneId : undefined,
|
|
60
65
|
view.profileId ? `profile ${view.profileId}` : undefined,
|
|
66
|
+
view.modelRef ? `model ${view.modelRef}` : undefined,
|
|
67
|
+
view.thinkingLevel ? `thinking ${view.thinkingLevel}` : undefined,
|
|
61
68
|
view.type === "tmux-worker" ? "tmux" : undefined,
|
|
62
69
|
view.reasonCode,
|
|
63
70
|
view.unreviewed ? "review required" : undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate-status.js","sourceRoot":"","sources":["../../../src/core/tools/delegate-status.ts"],"names":[],"mappings":"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","sourcesContent":["import type { WorkerClaim } from \"../autonomy/contracts.ts\";\nimport type { LaneRecord } from \"../autonomy/lane-tracker.ts\";\nimport { WORKER_COMPLETION_ERROR_CAVEMAN_GUIDANCE } from \"../delegation/worker-terminal-handoff-coordinator.ts\";\nimport type { OrchestrationPanelModel, OrchestrationPanelRow } from \"./orchestration-panel.ts\";\n\nconst MAX_WORKER_CONTROL_ID_CHARS = 512;\n\nexport const WORKER_QUEUED_CAVEMAN_GUIDANCE =\n\t\"CAVEMAN MODE - MANDATORY: queued is admitted durable nonterminal state, not stall or harness failure. Host starts it event-driven when dependencies, capacity, or safety reservations clear. Never poll, interrupt, or cancel a healthy running worker to force the queue. For genuine parallel read-only work, start a fresh worker whose authority.toolNames omits write and edit; write-capable workers may serialize. If you start a fresh narrower replacement, cancel this queued agent after the replacement starts; otherwise both tasks will run.\";\n\nexport const DELEGATE_STATUS_ACTIONS = [\"status\", \"review\"] as const;\n\nexport type DelegateStatusAction = (typeof DELEGATE_STATUS_ACTIONS)[number];\n\nexport interface DelegateStatusInput {\n\tlaneId?: string;\n}\n\nexport interface DelegateStatusLaneView {\n\tlaneId: string;\n\tlabel?: string;\n\tprofileId?: string;\n\ttype: LaneRecord[\"type\"];\n\tstatus: LaneRecord[\"status\"];\n\treasonCode?: string;\n\tunreviewed: boolean;\n}\n\nexport interface DelegateStatusToolDetails {\n\tstarted: boolean;\n\taction: DelegateStatusAction;\n\tkind: \"overview\" | \"lane\" | \"review\" | \"error\";\n\tcount?: number;\n\tqueued?: number;\n\trunning?: number;\n\tterminal?: number;\n\tunreviewedCount?: number;\n\tunreviewedLaneIds?: readonly string[];\n\tlanes?: readonly DelegateStatusLaneView[];\n\tlaneId?: string;\n\tstatus?: LaneRecord[\"status\"];\n\tunreviewed?: boolean;\n\treviewed?: boolean;\n\treviewedAt?: string;\n\treason?: string;\n\tclaimSummary?: string;\n\tchangedFiles?: readonly string[];\n\tblockers?: readonly string[];\n}\n\nexport type AcknowledgeWorkerReviewResult =\n\t| { ok: true; requestId: string; reviewedAt: string }\n\t| { ok: false; reason: \"unknown_worker_claim\" | \"not_flagged\" | \"already_reviewed\" };\n\nexport interface DelegateStatusDependencies {\n\tgetLaneRecords(): LaneRecord[];\n\tgetWorkerClaimSnapshots(): WorkerClaim[];\n\tacknowledgeWorkerReview?(requestId: string): AcknowledgeWorkerReviewResult;\n}\n\nfunction isUnreviewed(claim: WorkerClaim | undefined): boolean {\n\treturn claim?.parentReviewRequired === true && claim.parentReviewedAt === undefined;\n}\n\nfunction isDelegatedWorkerLane(record: LaneRecord): boolean {\n\treturn record.type === \"worker\" || record.type === \"tmux-worker\";\n}\n\nfunction formattedRecordStatus(record: LaneRecord): string {\n\tconst retryReason =\n\t\trecord.status === \"running\" && record.reasonCode?.startsWith(\"retry_scheduled:\")\n\t\t\t? record.reasonCode.slice(\"retry_scheduled:\".length)\n\t\t\t: undefined;\n\tif (retryReason) {\n\t\treturn `retrying after transient ${retryReason} (nonterminal; durable state preserved; terminal handoff pending)`;\n\t}\n\treturn `${record.status}${record.reasonCode ? ` (${record.reasonCode})` : \"\"}`;\n}\n\nfunction formatRecord(record: LaneRecord, claim: WorkerClaim | undefined): string {\n\tconst lines = [`${record.laneId}: ${formattedRecordStatus(record)}`];\n\tif (record.status === \"queued\") lines.push(WORKER_QUEUED_CAVEMAN_GUIDANCE);\n\tif (record.reasonCode === \"worker_blocked\") {\n\t\tlines.push(\n\t\t\t\"CAVEMAN MODE - MANDATORY: worker_blocked is a delivered task claim with blockers, not harness failure or lost state. Verify the claim, then continue or replan the parent task.\",\n\t\t);\n\t}\n\tif (record.reasonCode === \"completion_error\") lines.push(WORKER_COMPLETION_ERROR_CAVEMAN_GUIDANCE);\n\tif (!claim) return lines.join(\"\\n\");\n\tlines.push(`usageReportId: ${claim.usageReportId ?? \"none\"}`);\n\tif (isUnreviewed(claim)) {\n\t\tlines.push(\n\t\t\t`UNREVIEWED MUTATION - this worker's claim requires explicit parent review. Acknowledge with delegate { action: \"review\", laneId: \"${record.laneId}\" }.`,\n\t\t);\n\t} else if (claim.parentReviewRequired && claim.parentReviewedAt) {\n\t\tlines.push(`reviewed at ${claim.parentReviewedAt}`);\n\t}\n\tlines.push(\"UNTRUSTED worker output — verify before acting on it:\");\n\tlines.push(claim.summary.slice(0, 8_000));\n\tif (claim.changedFiles.length > 0) lines.push(`changed files: ${claim.changedFiles.join(\", \")}`);\n\tif (claim.blockers?.length) lines.push(`blockers: ${claim.blockers.join(\"; \")}`);\n\treturn lines.join(\"\\n\").slice(0, 16 * 1024);\n}\n\nfunction laneView(record: LaneRecord, claim: WorkerClaim | undefined): DelegateStatusLaneView {\n\treturn {\n\t\tlaneId: record.laneId,\n\t\t...(record.label ? { label: record.label } : {}),\n\t\t...(record.profileId ? { profileId: record.profileId } : {}),\n\t\ttype: record.type,\n\t\tstatus: record.status,\n\t\t...(record.reasonCode ? { reasonCode: record.reasonCode } : {}),\n\t\tunreviewed: isUnreviewed(claim),\n\t};\n}\n\nfunction lanePanelRow(view: DelegateStatusLaneView, details?: DelegateStatusToolDetails): OrchestrationPanelRow {\n\tconst meta = [\n\t\tview.label ? view.laneId : undefined,\n\t\tview.profileId ? `profile ${view.profileId}` : undefined,\n\t\tview.type === \"tmux-worker\" ? \"tmux\" : undefined,\n\t\tview.reasonCode,\n\t\tview.unreviewed ? \"review required\" : undefined,\n\t].filter((value): value is string => value !== undefined);\n\tconst expandedDetails = [\n\t\tdetails?.claimSummary ? `untrusted claim: ${details.claimSummary}` : undefined,\n\t\tdetails?.changedFiles?.length ? `changed: ${details.changedFiles.join(\", \")}` : undefined,\n\t\t...(details?.blockers ?? []).map((blocker) => `blocker: ${blocker}`),\n\t].filter((value): value is string => value !== undefined);\n\treturn {\n\t\tstatus: view.status,\n\t\tlabel: view.label ?? view.laneId,\n\t\tmeta,\n\t\tdetails: expandedDetails,\n\t};\n}\n\nexport function delegateStatusPanelModel(details: DelegateStatusToolDetails): OrchestrationPanelModel {\n\tif (details.kind === \"error\") {\n\t\treturn {\n\t\t\tlabel: \"workers\",\n\t\t\taction: \"status\",\n\t\t\tstatus: \"error\",\n\t\t\temptyText: details.reason ?? \"Worker status is unavailable.\",\n\t\t};\n\t}\n\tif (details.kind === \"review\") {\n\t\treturn {\n\t\t\tlabel: \"workers\",\n\t\t\taction: details.reviewed ? \"reviewed\" : \"review required\",\n\t\t\tstatus: details.reviewed ? \"success\" : \"warning\",\n\t\t\trows: details.laneId\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstatus: details.reviewed ? \"reviewed\" : \"blocked\",\n\t\t\t\t\t\t\tlabel: details.laneId,\n\t\t\t\t\t\t\tmeta: details.reviewedAt ? [`reviewed ${details.reviewedAt}`] : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: undefined,\n\t\t\temptyText: details.reason,\n\t\t};\n\t}\n\tconst lanes = details.lanes ?? [];\n\tconst rows = lanes.map((view) => lanePanelRow(view, details.kind === \"lane\" ? details : undefined));\n\tconst running = details.running ?? lanes.filter((lane) => lane.status === \"running\").length;\n\tconst queued = details.queued ?? lanes.filter((lane) => lane.status === \"queued\").length;\n\tconst terminal = details.terminal ?? lanes.length - running - queued;\n\tconst unreviewed = details.unreviewedCount ?? lanes.filter((lane) => lane.unreviewed).length;\n\treturn {\n\t\tlabel: \"workers\",\n\t\taction: details.kind === \"lane\" ? \"lane\" : \"status\",\n\t\tstatus: unreviewed > 0 ? \"warning\" : running + queued > 0 ? \"running\" : lanes.length > 0 ? \"success\" : \"idle\",\n\t\tsummary: [\n\t\t\trunning ? `${running} running` : undefined,\n\t\t\tqueued ? `${queued} queued` : undefined,\n\t\t\tterminal ? `${terminal} terminal` : undefined,\n\t\t].filter((value): value is string => value !== undefined),\n\t\trows,\n\t\temptyText: \"No worker lanes.\",\n\t\tnotices:\n\t\t\tunreviewed > 0\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstatus: \"warning\",\n\t\t\t\t\t\t\ttext: `${unreviewed} worker mutation${unreviewed === 1 ? \"\" : \"s\"} awaiting parent review.`,\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: undefined,\n\t};\n}\n\nexport function executeDelegateStatusAction(\n\taction: DelegateStatusAction,\n\tinput: DelegateStatusInput,\n\tdeps: DelegateStatusDependencies,\n): { content: Array<{ type: \"text\"; text: string }>; details: DelegateStatusToolDetails } {\n\tif (action === \"review\") {\n\t\tif (!input.laneId?.trim()) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"delegate review requires laneId\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"review\", reviewed: false, reason: \"missing_lane_id\" },\n\t\t\t};\n\t\t}\n\t\tif (input.laneId.length > MAX_WORKER_CONTROL_ID_CHARS) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"delegate review laneId is invalid\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"review\", reviewed: false, reason: \"invalid_lane_id\" },\n\t\t\t};\n\t\t}\n\t\tconst laneId = input.laneId.trim();\n\t\tif (!deps.acknowledgeWorkerReview) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"review acknowledgement is not available in this session\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"review\", reviewed: false, reason: \"review_unsupported\" },\n\t\t\t};\n\t\t}\n\t\tconst outcome = deps.acknowledgeWorkerReview(laneId);\n\t\tif (!outcome.ok) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: `review not acknowledged (${laneId}): ${outcome.reason}` }],\n\t\t\t\tdetails: { started: false, action, kind: \"review\", laneId, reviewed: false, reason: outcome.reason },\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `reviewed ${laneId} at ${outcome.reviewedAt} — notice cleared` }],\n\t\t\tdetails: { started: true, action, kind: \"review\", laneId, reviewed: true, reviewedAt: outcome.reviewedAt },\n\t\t};\n\t}\n\n\tconst records = deps.getLaneRecords().filter(isDelegatedWorkerLane);\n\tconst claims = new Map(deps.getWorkerClaimSnapshots().map((claim) => [claim.requestId, claim]));\n\tconst unreviewedRecords = records.filter((record) => isUnreviewed(claims.get(record.laneId)));\n\n\tif (input.laneId !== undefined) {\n\t\tif (input.laneId.length > MAX_WORKER_CONTROL_ID_CHARS || !input.laneId.trim()) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"worker lane id is invalid\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"error\", reason: \"invalid_lane_id\" },\n\t\t\t};\n\t\t}\n\t\tconst laneId = input.laneId.trim();\n\t\tconst record = records.find((candidate) => candidate.laneId === laneId);\n\t\tif (!record) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"unknown_worker_lane\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"error\", reason: \"unknown_worker_lane\" },\n\t\t\t};\n\t\t}\n\t\tconst claim = claims.get(record.laneId);\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: formatRecord(record, claim) }],\n\t\t\tdetails: {\n\t\t\t\tstarted: true,\n\t\t\t\taction,\n\t\t\t\tkind: \"lane\",\n\t\t\t\tlaneId: record.laneId,\n\t\t\t\tstatus: record.status,\n\t\t\t\tunreviewed: isUnreviewed(claim),\n\t\t\t\tlanes: [laneView(record, claim)],\n\t\t\t\tclaimSummary: claim?.summary.slice(0, 8_000),\n\t\t\t\tchangedFiles: claim?.changedFiles.slice(0, 64),\n\t\t\t\tblockers: claim?.blockers?.slice(0, 16),\n\t\t\t},\n\t\t};\n\t}\n\n\tconst recentRecords = records.slice(-10);\n\tconst recentLaneIds = new Set(recentRecords.map((record) => record.laneId));\n\tconst queued = records.filter((record) => record.status === \"queued\").length;\n\tconst running = records.filter((record) => record.status === \"running\").length;\n\tconst terminal = records.length - queued - running;\n\tconst recent = recentRecords.map((record) => formatRecord(record, claims.get(record.laneId)).slice(0, 2_048));\n\tconst olderUnreviewed = unreviewedRecords.filter((record) => !recentLaneIds.has(record.laneId));\n\tconst displayedRecords = [...recentRecords, ...olderUnreviewed.slice(0, 10)].filter(\n\t\t(record, index, all) => all.findIndex((candidate) => candidate.laneId === record.laneId) === index,\n\t);\n\tconst overviewLines = [`workers: ${running} running, ${queued} queued, ${terminal} terminal`];\n\tif (unreviewedRecords.length > 0) {\n\t\tconst visibleUnreviewedIds = unreviewedRecords.slice(0, 64).map((record) => record.laneId);\n\t\tconst omitted = unreviewedRecords.length - visibleUnreviewedIds.length;\n\t\toverviewLines.push(\n\t\t\t`${unreviewedRecords.length} unreviewed worker mutation${unreviewedRecords.length === 1 ? \"\" : \"s\"} pending review: ${visibleUnreviewedIds.join(\", \")}${omitted > 0 ? `, and ${omitted} more` : \"\"}. Acknowledge each with delegate { action: \"review\", laneId }.`,\n\t\t);\n\t}\n\tconst olderUnreviewedText =\n\t\tolderUnreviewed.length > 0\n\t\t\t? `\\n\\nOlder unreviewed workers (outside the recent list):\\n${olderUnreviewed\n\t\t\t\t\t.slice(0, 10)\n\t\t\t\t\t.map((record) => formatRecord(record, claims.get(record.laneId)).slice(0, 2_048))\n\t\t\t\t\t.join(\"\\n\\n\")}`\n\t\t\t: \"\";\n\tconst overview = overviewLines.join(\"\\n\");\n\treturn {\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext:\n\t\t\t\t\trecent.length > 0\n\t\t\t\t\t\t? `${overview}\\n\\n${recent.join(\"\\n\\n\")}${olderUnreviewedText}`.slice(0, 16 * 1024)\n\t\t\t\t\t\t: \"No worker lanes.\",\n\t\t\t},\n\t\t],\n\t\tdetails: {\n\t\t\tstarted: true,\n\t\t\taction,\n\t\t\tkind: \"overview\",\n\t\t\tcount: recent.length,\n\t\t\tqueued,\n\t\t\trunning,\n\t\t\tterminal,\n\t\t\tunreviewedCount: unreviewedRecords.length,\n\t\t\tunreviewedLaneIds: unreviewedRecords.slice(0, 64).map((record) => record.laneId),\n\t\t\tlanes: displayedRecords.map((record) => laneView(record, claims.get(record.laneId))),\n\t\t},\n\t};\n}\n"]}
|
|
1
|
+
{"version":3,"file":"delegate-status.js","sourceRoot":"","sources":["../../../src/core/tools/delegate-status.ts"],"names":[],"mappings":"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","sourcesContent":["import type { WorkerClaim } from \"../autonomy/contracts.ts\";\nimport type { LaneRecord } from \"../autonomy/lane-tracker.ts\";\nimport { WORKER_COMPLETION_ERROR_CAVEMAN_GUIDANCE } from \"../delegation/worker-terminal-handoff-coordinator.ts\";\nimport type { OrchestrationPanelModel, OrchestrationPanelRow } from \"./orchestration-panel.ts\";\n\nconst MAX_WORKER_CONTROL_ID_CHARS = 512;\n\nexport const WORKER_QUEUED_CAVEMAN_GUIDANCE =\n\t\"CAVEMAN MODE - MANDATORY: queued is admitted durable nonterminal state, not stall or harness failure. Host starts it event-driven when dependencies, capacity, or safety reservations clear. Never poll, interrupt, or cancel a healthy running worker to force the queue. For genuine parallel read-only work, start a fresh worker whose authority.toolNames omits write and edit; write-capable workers may serialize. If you start a fresh narrower replacement, cancel this queued agent after the replacement starts; otherwise both tasks will run.\";\n\nexport const DELEGATE_STATUS_ACTIONS = [\"status\", \"review\"] as const;\n\nexport type DelegateStatusAction = (typeof DELEGATE_STATUS_ACTIONS)[number];\n\nexport interface DelegateStatusInput {\n\tlaneId?: string;\n}\n\nexport interface DelegateStatusLaneView {\n\tlaneId: string;\n\tlabel?: string;\n\tprofileId?: string;\n\tmodelRef?: string;\n\tthinkingLevel?: NonNullable<LaneRecord[\"thinkingLevel\"]>;\n\ttype: LaneRecord[\"type\"];\n\tstatus: LaneRecord[\"status\"];\n\treasonCode?: string;\n\tunreviewed: boolean;\n}\n\nexport interface DelegateStatusToolDetails {\n\tstarted: boolean;\n\taction: DelegateStatusAction;\n\tkind: \"overview\" | \"lane\" | \"review\" | \"error\";\n\tcount?: number;\n\tqueued?: number;\n\trunning?: number;\n\tterminal?: number;\n\tunreviewedCount?: number;\n\tunreviewedLaneIds?: readonly string[];\n\tlanes?: readonly DelegateStatusLaneView[];\n\tlaneId?: string;\n\tstatus?: LaneRecord[\"status\"];\n\tunreviewed?: boolean;\n\treviewed?: boolean;\n\treviewedAt?: string;\n\treason?: string;\n\tclaimSummary?: string;\n\tchangedFiles?: readonly string[];\n\tblockers?: readonly string[];\n}\n\nexport type AcknowledgeWorkerReviewResult =\n\t| { ok: true; requestId: string; reviewedAt: string }\n\t| { ok: false; reason: \"unknown_worker_claim\" | \"not_flagged\" | \"already_reviewed\" };\n\nexport interface DelegateStatusDependencies {\n\tgetLaneRecords(): LaneRecord[];\n\tgetWorkerClaimSnapshots(): WorkerClaim[];\n\tacknowledgeWorkerReview?(requestId: string): AcknowledgeWorkerReviewResult;\n}\n\nfunction isUnreviewed(claim: WorkerClaim | undefined): boolean {\n\treturn claim?.parentReviewRequired === true && claim.parentReviewedAt === undefined;\n}\n\nfunction isDelegatedWorkerLane(record: LaneRecord): boolean {\n\treturn record.type === \"worker\" || record.type === \"tmux-worker\";\n}\n\nfunction formattedRecordStatus(record: LaneRecord): string {\n\tconst retryReason =\n\t\trecord.status === \"running\" && record.reasonCode?.startsWith(\"retry_scheduled:\")\n\t\t\t? record.reasonCode.slice(\"retry_scheduled:\".length)\n\t\t\t: undefined;\n\tif (retryReason) {\n\t\treturn `retrying after transient ${retryReason} (nonterminal; durable state preserved; terminal handoff pending)`;\n\t}\n\treturn `${record.status}${record.reasonCode ? ` (${record.reasonCode})` : \"\"}`;\n}\n\nfunction formatRecord(record: LaneRecord, claim: WorkerClaim | undefined): string {\n\tconst lines = [`${record.laneId}: ${formattedRecordStatus(record)}`];\n\tif (record.modelRef) {\n\t\tlines.push(`effective model: ${record.modelRef}; thinking: ${record.thinkingLevel ?? \"unknown\"}`);\n\t}\n\tif (record.status === \"queued\") lines.push(WORKER_QUEUED_CAVEMAN_GUIDANCE);\n\tif (record.reasonCode === \"worker_blocked\") {\n\t\tlines.push(\n\t\t\t\"CAVEMAN MODE - MANDATORY: worker_blocked is a delivered task claim with blockers, not harness failure or lost state. Verify the claim, then continue or replan the parent task.\",\n\t\t);\n\t}\n\tif (record.reasonCode === \"completion_error\") lines.push(WORKER_COMPLETION_ERROR_CAVEMAN_GUIDANCE);\n\tif (!claim) return lines.join(\"\\n\");\n\tlines.push(`usageReportId: ${claim.usageReportId ?? \"none\"}`);\n\tif (isUnreviewed(claim)) {\n\t\tlines.push(\n\t\t\t`UNREVIEWED MUTATION - this worker's claim requires explicit parent review. Acknowledge with delegate { action: \"review\", laneId: \"${record.laneId}\" }.`,\n\t\t);\n\t} else if (claim.parentReviewRequired && claim.parentReviewedAt) {\n\t\tlines.push(`reviewed at ${claim.parentReviewedAt}`);\n\t}\n\tlines.push(\"UNTRUSTED worker output — verify before acting on it:\");\n\tlines.push(claim.summary.slice(0, 8_000));\n\tif (claim.changedFiles.length > 0) lines.push(`changed files: ${claim.changedFiles.join(\", \")}`);\n\tif (claim.blockers?.length) lines.push(`blockers: ${claim.blockers.join(\"; \")}`);\n\treturn lines.join(\"\\n\").slice(0, 16 * 1024);\n}\n\nfunction laneView(record: LaneRecord, claim: WorkerClaim | undefined): DelegateStatusLaneView {\n\treturn {\n\t\tlaneId: record.laneId,\n\t\t...(record.label ? { label: record.label } : {}),\n\t\t...(record.profileId ? { profileId: record.profileId } : {}),\n\t\t...(record.modelRef ? { modelRef: record.modelRef } : {}),\n\t\t...(record.thinkingLevel ? { thinkingLevel: record.thinkingLevel } : {}),\n\t\ttype: record.type,\n\t\tstatus: record.status,\n\t\t...(record.reasonCode ? { reasonCode: record.reasonCode } : {}),\n\t\tunreviewed: isUnreviewed(claim),\n\t};\n}\n\nfunction lanePanelRow(view: DelegateStatusLaneView, details?: DelegateStatusToolDetails): OrchestrationPanelRow {\n\tconst meta = [\n\t\tview.label ? view.laneId : undefined,\n\t\tview.profileId ? `profile ${view.profileId}` : undefined,\n\t\tview.modelRef ? `model ${view.modelRef}` : undefined,\n\t\tview.thinkingLevel ? `thinking ${view.thinkingLevel}` : undefined,\n\t\tview.type === \"tmux-worker\" ? \"tmux\" : undefined,\n\t\tview.reasonCode,\n\t\tview.unreviewed ? \"review required\" : undefined,\n\t].filter((value): value is string => value !== undefined);\n\tconst expandedDetails = [\n\t\tdetails?.claimSummary ? `untrusted claim: ${details.claimSummary}` : undefined,\n\t\tdetails?.changedFiles?.length ? `changed: ${details.changedFiles.join(\", \")}` : undefined,\n\t\t...(details?.blockers ?? []).map((blocker) => `blocker: ${blocker}`),\n\t].filter((value): value is string => value !== undefined);\n\treturn {\n\t\tstatus: view.status,\n\t\tlabel: view.label ?? view.laneId,\n\t\tmeta,\n\t\tdetails: expandedDetails,\n\t};\n}\n\nexport function delegateStatusPanelModel(details: DelegateStatusToolDetails): OrchestrationPanelModel {\n\tif (details.kind === \"error\") {\n\t\treturn {\n\t\t\tlabel: \"workers\",\n\t\t\taction: \"status\",\n\t\t\tstatus: \"error\",\n\t\t\temptyText: details.reason ?? \"Worker status is unavailable.\",\n\t\t};\n\t}\n\tif (details.kind === \"review\") {\n\t\treturn {\n\t\t\tlabel: \"workers\",\n\t\t\taction: details.reviewed ? \"reviewed\" : \"review required\",\n\t\t\tstatus: details.reviewed ? \"success\" : \"warning\",\n\t\t\trows: details.laneId\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstatus: details.reviewed ? \"reviewed\" : \"blocked\",\n\t\t\t\t\t\t\tlabel: details.laneId,\n\t\t\t\t\t\t\tmeta: details.reviewedAt ? [`reviewed ${details.reviewedAt}`] : undefined,\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: undefined,\n\t\t\temptyText: details.reason,\n\t\t};\n\t}\n\tconst lanes = details.lanes ?? [];\n\tconst rows = lanes.map((view) => lanePanelRow(view, details.kind === \"lane\" ? details : undefined));\n\tconst running = details.running ?? lanes.filter((lane) => lane.status === \"running\").length;\n\tconst queued = details.queued ?? lanes.filter((lane) => lane.status === \"queued\").length;\n\tconst terminal = details.terminal ?? lanes.length - running - queued;\n\tconst unreviewed = details.unreviewedCount ?? lanes.filter((lane) => lane.unreviewed).length;\n\treturn {\n\t\tlabel: \"workers\",\n\t\taction: details.kind === \"lane\" ? \"lane\" : \"status\",\n\t\tstatus: unreviewed > 0 ? \"warning\" : running + queued > 0 ? \"running\" : lanes.length > 0 ? \"success\" : \"idle\",\n\t\tsummary: [\n\t\t\trunning ? `${running} running` : undefined,\n\t\t\tqueued ? `${queued} queued` : undefined,\n\t\t\tterminal ? `${terminal} terminal` : undefined,\n\t\t].filter((value): value is string => value !== undefined),\n\t\trows,\n\t\temptyText: \"No worker lanes.\",\n\t\tnotices:\n\t\t\tunreviewed > 0\n\t\t\t\t? [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tstatus: \"warning\",\n\t\t\t\t\t\t\ttext: `${unreviewed} worker mutation${unreviewed === 1 ? \"\" : \"s\"} awaiting parent review.`,\n\t\t\t\t\t\t},\n\t\t\t\t\t]\n\t\t\t\t: undefined,\n\t};\n}\n\nexport function executeDelegateStatusAction(\n\taction: DelegateStatusAction,\n\tinput: DelegateStatusInput,\n\tdeps: DelegateStatusDependencies,\n): { content: Array<{ type: \"text\"; text: string }>; details: DelegateStatusToolDetails } {\n\tif (action === \"review\") {\n\t\tif (!input.laneId?.trim()) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"delegate review requires laneId\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"review\", reviewed: false, reason: \"missing_lane_id\" },\n\t\t\t};\n\t\t}\n\t\tif (input.laneId.length > MAX_WORKER_CONTROL_ID_CHARS) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"delegate review laneId is invalid\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"review\", reviewed: false, reason: \"invalid_lane_id\" },\n\t\t\t};\n\t\t}\n\t\tconst laneId = input.laneId.trim();\n\t\tif (!deps.acknowledgeWorkerReview) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"review acknowledgement is not available in this session\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"review\", reviewed: false, reason: \"review_unsupported\" },\n\t\t\t};\n\t\t}\n\t\tconst outcome = deps.acknowledgeWorkerReview(laneId);\n\t\tif (!outcome.ok) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: `review not acknowledged (${laneId}): ${outcome.reason}` }],\n\t\t\t\tdetails: { started: false, action, kind: \"review\", laneId, reviewed: false, reason: outcome.reason },\n\t\t\t};\n\t\t}\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: `reviewed ${laneId} at ${outcome.reviewedAt} — notice cleared` }],\n\t\t\tdetails: { started: true, action, kind: \"review\", laneId, reviewed: true, reviewedAt: outcome.reviewedAt },\n\t\t};\n\t}\n\n\tconst records = deps.getLaneRecords().filter(isDelegatedWorkerLane);\n\tconst claims = new Map(deps.getWorkerClaimSnapshots().map((claim) => [claim.requestId, claim]));\n\tconst unreviewedRecords = records.filter((record) => isUnreviewed(claims.get(record.laneId)));\n\n\tif (input.laneId !== undefined) {\n\t\tif (input.laneId.length > MAX_WORKER_CONTROL_ID_CHARS || !input.laneId.trim()) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"worker lane id is invalid\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"error\", reason: \"invalid_lane_id\" },\n\t\t\t};\n\t\t}\n\t\tconst laneId = input.laneId.trim();\n\t\tconst record = records.find((candidate) => candidate.laneId === laneId);\n\t\tif (!record) {\n\t\t\treturn {\n\t\t\t\tcontent: [{ type: \"text\", text: \"unknown_worker_lane\" }],\n\t\t\t\tdetails: { started: false, action, kind: \"error\", reason: \"unknown_worker_lane\" },\n\t\t\t};\n\t\t}\n\t\tconst claim = claims.get(record.laneId);\n\t\treturn {\n\t\t\tcontent: [{ type: \"text\", text: formatRecord(record, claim) }],\n\t\t\tdetails: {\n\t\t\t\tstarted: true,\n\t\t\t\taction,\n\t\t\t\tkind: \"lane\",\n\t\t\t\tlaneId: record.laneId,\n\t\t\t\tstatus: record.status,\n\t\t\t\tunreviewed: isUnreviewed(claim),\n\t\t\t\tlanes: [laneView(record, claim)],\n\t\t\t\tclaimSummary: claim?.summary.slice(0, 8_000),\n\t\t\t\tchangedFiles: claim?.changedFiles.slice(0, 64),\n\t\t\t\tblockers: claim?.blockers?.slice(0, 16),\n\t\t\t},\n\t\t};\n\t}\n\n\tconst recentRecords = records.slice(-10);\n\tconst recentLaneIds = new Set(recentRecords.map((record) => record.laneId));\n\tconst queued = records.filter((record) => record.status === \"queued\").length;\n\tconst running = records.filter((record) => record.status === \"running\").length;\n\tconst terminal = records.length - queued - running;\n\tconst recent = recentRecords.map((record) => formatRecord(record, claims.get(record.laneId)).slice(0, 2_048));\n\tconst olderUnreviewed = unreviewedRecords.filter((record) => !recentLaneIds.has(record.laneId));\n\tconst displayedRecords = [...recentRecords, ...olderUnreviewed.slice(0, 10)].filter(\n\t\t(record, index, all) => all.findIndex((candidate) => candidate.laneId === record.laneId) === index,\n\t);\n\tconst overviewLines = [`workers: ${running} running, ${queued} queued, ${terminal} terminal`];\n\tif (unreviewedRecords.length > 0) {\n\t\tconst visibleUnreviewedIds = unreviewedRecords.slice(0, 64).map((record) => record.laneId);\n\t\tconst omitted = unreviewedRecords.length - visibleUnreviewedIds.length;\n\t\toverviewLines.push(\n\t\t\t`${unreviewedRecords.length} unreviewed worker mutation${unreviewedRecords.length === 1 ? \"\" : \"s\"} pending review: ${visibleUnreviewedIds.join(\", \")}${omitted > 0 ? `, and ${omitted} more` : \"\"}. Acknowledge each with delegate { action: \"review\", laneId }.`,\n\t\t);\n\t}\n\tconst olderUnreviewedText =\n\t\tolderUnreviewed.length > 0\n\t\t\t? `\\n\\nOlder unreviewed workers (outside the recent list):\\n${olderUnreviewed\n\t\t\t\t\t.slice(0, 10)\n\t\t\t\t\t.map((record) => formatRecord(record, claims.get(record.laneId)).slice(0, 2_048))\n\t\t\t\t\t.join(\"\\n\\n\")}`\n\t\t\t: \"\";\n\tconst overview = overviewLines.join(\"\\n\");\n\treturn {\n\t\tcontent: [\n\t\t\t{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext:\n\t\t\t\t\trecent.length > 0\n\t\t\t\t\t\t? `${overview}\\n\\n${recent.join(\"\\n\\n\")}${olderUnreviewedText}`.slice(0, 16 * 1024)\n\t\t\t\t\t\t: \"No worker lanes.\",\n\t\t\t},\n\t\t],\n\t\tdetails: {\n\t\t\tstarted: true,\n\t\t\taction,\n\t\t\tkind: \"overview\",\n\t\t\tcount: recent.length,\n\t\t\tqueued,\n\t\t\trunning,\n\t\t\tterminal,\n\t\t\tunreviewedCount: unreviewedRecords.length,\n\t\t\tunreviewedLaneIds: unreviewedRecords.slice(0, 64).map((record) => record.laneId),\n\t\t\tlanes: displayedRecords.map((record) => laneView(record, claims.get(record.laneId))),\n\t\t},\n\t};\n}\n"]}
|
|
@@ -4,7 +4,9 @@ import { type WorkerAgentBroadcastTargetResult, type WorkerAgentControlPort } fr
|
|
|
4
4
|
import type { WorkerDelegationRequest } from "../delegation/worker-delegation-request.ts";
|
|
5
5
|
import type { WorkerRunOutcome } from "../delegation/worker-runner.ts";
|
|
6
6
|
import type { ToolDefinition } from "../extensions/types.ts";
|
|
7
|
+
import { type OrchestrationThinkingLevel } from "../orchestration/contracts.ts";
|
|
7
8
|
import type { TaskProfileWriterPort } from "../orchestration/task-profile-writer.ts";
|
|
9
|
+
import type { WorkerModelPinPolicy } from "../orchestration/worker-model-pins.ts";
|
|
8
10
|
import { type DelegateStatusDependencies, type DelegateStatusToolDetails } from "./delegate-status.ts";
|
|
9
11
|
import { type DelegateProfileToolDetails } from "./profile-writer.ts";
|
|
10
12
|
export declare const DELEGATE_ACTIONS: readonly ["start", "tasks", "list", "transcript", "wait", "wait_many", "interrupt", "resume", "retire", "cancel", "send", "broadcast", "follow_up", "inbox", "inbox_wait", "inbox_ack", "reply", "status", "review", "profile_inspect", "profile_create"];
|
|
@@ -81,6 +83,8 @@ export interface DelegateDispatchToolDetails {
|
|
|
81
83
|
agentIdsOmitted?: number;
|
|
82
84
|
skipReason?: string;
|
|
83
85
|
profileId?: string;
|
|
86
|
+
modelRef?: string;
|
|
87
|
+
thinkingLevel?: OrchestrationThinkingLevel;
|
|
84
88
|
laneId?: string;
|
|
85
89
|
label?: string;
|
|
86
90
|
status?: LaneRecord["status"];
|
|
@@ -118,6 +122,8 @@ export interface DelegateToolDependencies {
|
|
|
118
122
|
role: string;
|
|
119
123
|
description: string;
|
|
120
124
|
}[];
|
|
125
|
+
/** Active owner settings only; omitted/absent preserves the existing lean prompt verbatim. */
|
|
126
|
+
workerModelPinPolicy?: WorkerModelPinPolicy;
|
|
121
127
|
workerAgentControl?: WorkerAgentControlPort;
|
|
122
128
|
/** Root-only bounded lane inspection and durable mutation-review acknowledgement. */
|
|
123
129
|
status?: DelegateStatusDependencies;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../../src/core/tools/delegate.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,MAAM,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAGN,KAAK,gCAAgC,EACrC,KAAK,sBAAsB,EAC3B,MAAM,uCAAuC,CAAC;AAE/C,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAC;AAC1F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"delegate.d.ts","sourceRoot":"","sources":["../../../src/core/tools/delegate.ts"],"names":[],"mappings":"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"}
|
|
@@ -309,6 +309,8 @@ function delegatePanelModel(details) {
|
|
|
309
309
|
const rowStatus = laneStatus;
|
|
310
310
|
const meta = [
|
|
311
311
|
details.profileId ? `profile ${details.profileId}` : undefined,
|
|
312
|
+
details.modelRef ? `model ${details.modelRef}` : undefined,
|
|
313
|
+
details.thinkingLevel ? `thinking ${details.thinkingLevel}` : undefined,
|
|
312
314
|
details.reasonCode,
|
|
313
315
|
details.accepted === undefined ? undefined : details.accepted ? "accepted" : "not accepted",
|
|
314
316
|
details.costUsd === undefined ? undefined : `$${details.costUsd.toFixed(4)}`,
|
|
@@ -384,6 +386,14 @@ function orchestrationProfileGuidelines(profiles) {
|
|
|
384
386
|
...(omitted > 0 ? [`${omitted} omitted; inspect owner profile catalog.`] : []),
|
|
385
387
|
];
|
|
386
388
|
}
|
|
389
|
+
function workerModelPinAuthorityGuideline(policy) {
|
|
390
|
+
if (!policy || policy.status === "absent")
|
|
391
|
+
return undefined;
|
|
392
|
+
if (policy.status === "invalid") {
|
|
393
|
+
return "CAVEMAN MODE - MANDATORY: invalid pins block fresh starts. Never retry; report the configuration error.";
|
|
394
|
+
}
|
|
395
|
+
return "CAVEMAN MODE - MANDATORY: pins win fresh model/thinking. Choose role; never evade/retry; start reports binding.";
|
|
396
|
+
}
|
|
387
397
|
function normalizeDelegateCaller(value) {
|
|
388
398
|
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
389
399
|
throw new TypeError("A valid delegate caller is required.");
|
|
@@ -555,6 +565,12 @@ function workerTaskSessionJson(view) {
|
|
|
555
565
|
}), "skip");
|
|
556
566
|
}
|
|
557
567
|
function delegateStartSkipText(reason) {
|
|
568
|
+
if (reason === "worker_model_pins_invalid") {
|
|
569
|
+
return "delegate not started: CAVEMAN MODE - MANDATORY: worker_model_pins_invalid is an owner configuration error. Fresh workers are blocked. Do not retry, remove authority fields, or select a fallback; report that the user must repair workerDelegation.modelPins.";
|
|
570
|
+
}
|
|
571
|
+
if (reason.includes("worker_model_pin_unavailable:")) {
|
|
572
|
+
return `delegate not started: CAVEMAN MODE - MANDATORY: ${reason} means the owner-pinned model cannot be used. Fail closed. Do not retry another model, omit fields, or fall back; report the exact role and let the user repair availability or configuration.`;
|
|
573
|
+
}
|
|
558
574
|
if (reason === "orchestration_profile_not_found") {
|
|
559
575
|
return "delegate not started: CAVEMAN MODE - MANDATORY: orchestration_profile_not_found is expected routing policy, not harness failure. Retry once with profileId omitted to use adaptive authority, or use an exact listed profile; never invent profile IDs.";
|
|
560
576
|
}
|
|
@@ -579,6 +595,13 @@ export function createDelegateToolDefinition(deps) {
|
|
|
579
595
|
const caller = normalizeDelegateCaller(deps.caller);
|
|
580
596
|
const isAsyncWiring = deps.startWorkerDelegation !== undefined;
|
|
581
597
|
const profileGuidelines = orchestrationProfileGuidelines(deps.orchestrationProfiles);
|
|
598
|
+
const modelPinAuthorityGuideline = workerModelPinAuthorityGuideline(deps.workerModelPinPolicy);
|
|
599
|
+
const basePromptGuidelines = isAsyncWiring
|
|
600
|
+
? ASYNC_DELEGATE_PROMPT_GUIDELINES
|
|
601
|
+
: SYNCHRONOUS_DELEGATE_PROMPT_GUIDELINES;
|
|
602
|
+
const promptGuidelines = modelPinAuthorityGuideline
|
|
603
|
+
? basePromptGuidelines.map((guideline) => guideline.startsWith("authority selects model/") ? modelPinAuthorityGuideline : guideline)
|
|
604
|
+
: basePromptGuidelines;
|
|
582
605
|
const availableActions = availableDelegateActions(caller, deps);
|
|
583
606
|
const unifiedActionDescription = [
|
|
584
607
|
availableActions.includes("status") ? "status inspects bounded claims; review acknowledges mutations" : undefined,
|
|
@@ -593,10 +616,7 @@ export function createDelegateToolDefinition(deps) {
|
|
|
593
616
|
label: "delegate",
|
|
594
617
|
description: `${isAsyncWiring ? ASYNC_DELEGATE_DESCRIPTION : SYNCHRONOUS_DELEGATE_DESCRIPTION}${unifiedActionDescription ? ` ${unifiedActionDescription}.` : ""}`,
|
|
595
618
|
promptSnippet: "Coordinate persistent workers with bounded authority.",
|
|
596
|
-
promptGuidelines: [
|
|
597
|
-
...profileGuidelines,
|
|
598
|
-
...(isAsyncWiring ? ASYNC_DELEGATE_PROMPT_GUIDELINES : SYNCHRONOUS_DELEGATE_PROMPT_GUIDELINES),
|
|
599
|
-
],
|
|
619
|
+
promptGuidelines: [...profileGuidelines, ...promptGuidelines],
|
|
600
620
|
parameters: createDelegateSchema(availableActions),
|
|
601
621
|
renderShell: "self",
|
|
602
622
|
renderCall() {
|
|
@@ -1354,11 +1374,14 @@ export function createDelegateToolDefinition(deps) {
|
|
|
1354
1374
|
followed.record.status === "queued" ||
|
|
1355
1375
|
followed.record.status === "running";
|
|
1356
1376
|
const acceptanceState = followed.skipReason ?? (followed.started ? "started" : "wake pending");
|
|
1377
|
+
const effectiveBinding = followed.record?.modelRef
|
|
1378
|
+
? `; effective model ${followed.record.modelRef}, thinking ${followed.record.thinkingLevel ?? "unknown"}`
|
|
1379
|
+
: "";
|
|
1357
1380
|
return {
|
|
1358
1381
|
content: [
|
|
1359
1382
|
{
|
|
1360
1383
|
type: "text",
|
|
1361
|
-
text: `worker ${reuseAgentId} durably accepted task message ${followed.messageId} on its persistent context (lane ${followed.record?.laneId ?? "queued"}; ${acceptanceState})${followed.record?.status === "queued" || followed.record === undefined ? `\n${WORKER_QUEUED_CAVEMAN_GUIDANCE}` : ""}`,
|
|
1384
|
+
text: `worker ${reuseAgentId} durably accepted task message ${followed.messageId} on its persistent context (lane ${followed.record?.laneId ?? "queued"}; ${acceptanceState}${effectiveBinding})${followed.record?.status === "queued" || followed.record === undefined ? `\n${WORKER_QUEUED_CAVEMAN_GUIDANCE}` : ""}`,
|
|
1362
1385
|
},
|
|
1363
1386
|
],
|
|
1364
1387
|
details: {
|
|
@@ -1367,6 +1390,8 @@ export function createDelegateToolDefinition(deps) {
|
|
|
1367
1390
|
agentId: reuseAgentId,
|
|
1368
1391
|
laneId: followed.record?.laneId,
|
|
1369
1392
|
status: followed.record?.status,
|
|
1393
|
+
modelRef: followed.record?.modelRef,
|
|
1394
|
+
thinkingLevel: followed.record?.thinkingLevel,
|
|
1370
1395
|
accepted: true,
|
|
1371
1396
|
messageId: followed.messageId,
|
|
1372
1397
|
queued,
|
|
@@ -1418,7 +1443,7 @@ export function createDelegateToolDefinition(deps) {
|
|
|
1418
1443
|
content: [
|
|
1419
1444
|
{
|
|
1420
1445
|
type: "text",
|
|
1421
|
-
text: `delegate started (${started.record.status}) — stable agentId ${started.record.laneId}, task laneId ${started.record.laneId}; the owning parent will receive its terminal handoff, then use delegate status or bounded raw transcript pages${started.record.status === "queued" ? `\n${WORKER_QUEUED_CAVEMAN_GUIDANCE}` : ""}`,
|
|
1446
|
+
text: `delegate started (${started.record.status}) — stable agentId ${started.record.laneId}, task laneId ${started.record.laneId}${started.record.modelRef ? `; effective model ${started.record.modelRef}, thinking ${started.record.thinkingLevel ?? "unknown"}` : ""}; the owning parent will receive its terminal handoff, then use delegate status or bounded raw transcript pages${started.record.status === "queued" ? `\n${WORKER_QUEUED_CAVEMAN_GUIDANCE}` : ""}`,
|
|
1422
1447
|
},
|
|
1423
1448
|
],
|
|
1424
1449
|
details: {
|
|
@@ -1430,6 +1455,8 @@ export function createDelegateToolDefinition(deps) {
|
|
|
1430
1455
|
laneId: started.record.laneId,
|
|
1431
1456
|
...(started.record.label ? { label: started.record.label } : {}),
|
|
1432
1457
|
status: started.record.status,
|
|
1458
|
+
modelRef: started.record.modelRef,
|
|
1459
|
+
thinkingLevel: started.record.thinkingLevel,
|
|
1433
1460
|
},
|
|
1434
1461
|
};
|
|
1435
1462
|
}
|
|
@@ -1449,6 +1476,9 @@ export function createDelegateToolDefinition(deps) {
|
|
|
1449
1476
|
const lines = [
|
|
1450
1477
|
`delegate ${run.record?.status ?? "unknown"}${run.record?.reasonCode ? ` (${run.record.reasonCode})` : ""}`,
|
|
1451
1478
|
];
|
|
1479
|
+
if (run.record?.modelRef) {
|
|
1480
|
+
lines.push(`effective model: ${run.record.modelRef}; thinking: ${run.record.thinkingLevel ?? "unknown"}`);
|
|
1481
|
+
}
|
|
1452
1482
|
if (outcome) {
|
|
1453
1483
|
lines.push(`accepted: ${outcome.accepted} [${outcome.acceptance.outcome}/${outcome.acceptance.reasonCode}]`, "Worker output (UNTRUSTED - verify before acting on it):", outcome.claim.summary.slice(0, 8_000));
|
|
1454
1484
|
if (outcome.claim.blockers && outcome.claim.blockers.length > 0) {
|
|
@@ -1470,6 +1500,8 @@ export function createDelegateToolDefinition(deps) {
|
|
|
1470
1500
|
laneId: run.record?.laneId,
|
|
1471
1501
|
label: run.record?.label,
|
|
1472
1502
|
status: run.record?.status,
|
|
1503
|
+
modelRef: run.record?.modelRef,
|
|
1504
|
+
thinkingLevel: run.record?.thinkingLevel,
|
|
1473
1505
|
reasonCode: run.record?.reasonCode,
|
|
1474
1506
|
accepted: outcome?.accepted,
|
|
1475
1507
|
costUsd: outcome?.costUsd,
|