@chatpanel/events 0.98.0 → 0.98.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/model-picker.js +2 -2
- package/package.json +1 -1
- package/recruit.js +3 -3
package/model-picker.js
CHANGED
|
@@ -102,9 +102,9 @@ export function groupModels(models, { selectedId = '' } = {}) {
|
|
|
102
102
|
if (agents.length) {
|
|
103
103
|
sections.push({
|
|
104
104
|
key: 'agents',
|
|
105
|
-
// Naming
|
|
105
|
+
// Naming (naming-revamp.md): the CLI coding agents are AGENT TOOLS — a runtime one
|
|
106
106
|
// of the user's own agents can be given as its engine. The key and kind are code.
|
|
107
|
-
label: '
|
|
107
|
+
label: 'Agent Tools',
|
|
108
108
|
kind: 'agent',
|
|
109
109
|
items: agents.slice().sort(availableFirst).map(decorate),
|
|
110
110
|
});
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chatpanel/events",
|
|
3
|
-
"version": "0.98.
|
|
3
|
+
"version": "0.98.1",
|
|
4
4
|
"description": "The canonical ChatPanel event-log and capability contracts — typed durable facts, clock-free deterministic linearization, schema upcasting, and the invariants the replay harness asserts. Pure, dependency-free ESM shared by the ChatPanel extension, gateway and bridge.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
package/recruit.js
CHANGED
|
@@ -143,7 +143,7 @@ export function needForJob(job, { reach = 'any' } = {}) {
|
|
|
143
143
|
const capabilities = [];
|
|
144
144
|
const why = [];
|
|
145
145
|
if (tools.length || grants.length) { capabilities.push('tools'); why.push('the job uses tools'); }
|
|
146
|
-
if (harness) why.push(`a work grant (${grants.filter((g) => WORK_GRANTS.includes(g)).join(', ')}) needs
|
|
146
|
+
if (harness) why.push(`a work grant (${grants.filter((g) => WORK_GRANTS.includes(g)).join(', ')}) needs an agent tool`);
|
|
147
147
|
const r = REACH_RANK[reach] != null ? reach : 'any';
|
|
148
148
|
if (r !== 'any') why.push(`reach ≤ ${r} (the project's privacy setting)`);
|
|
149
149
|
return { capabilities, harness, reach: r, why };
|
|
@@ -155,7 +155,7 @@ const meets = (row, need, policy) => {
|
|
|
155
155
|
const why = [];
|
|
156
156
|
if (row.available === false) why.push('unavailable right now');
|
|
157
157
|
if (REACH_RANK[row.reach] > REACH_RANK[need.reach]) why.push(`reach ${row.reach} exceeds ${need.reach}`);
|
|
158
|
-
if (need.harness && row.engine.kind !== 'harness') why.push('not
|
|
158
|
+
if (need.harness && row.engine.kind !== 'harness') why.push('not an agent tool');
|
|
159
159
|
const missing = need.capabilities.filter((c) => !row.capabilities.includes(c));
|
|
160
160
|
// A harness brings its own tools; the capability list of a bridge agent is the host's guess.
|
|
161
161
|
if (missing.length && !(row.engine.kind === 'harness' && missing.every((c) => c === 'tools'))) why.push(`lacks ${missing.join(', ')}`);
|
|
@@ -222,7 +222,7 @@ export function routeFor(agent, job, { rows = [], summary = null, need = null, r
|
|
|
222
222
|
const policy = spec.policy || {};
|
|
223
223
|
const rejected = [];
|
|
224
224
|
const cleared = list.filter((r) => { const why = meets(r, n, policy); if (why.length) rejected.push(`${r.key}: ${why.join('; ')}`); return !why.length; });
|
|
225
|
-
if (!cleared.length) return none([`no engine clears ${n.harness ? '
|
|
225
|
+
if (!cleared.length) return none([`no engine clears ${n.harness ? 'an agent tool with ' : ''}${n.capabilities.join(', ') || 'the requirements'}${n.reach !== 'any' ? ` within reach ${n.reach}` : ''}${policy.prefer ? ` under ${policy.prefer}` : ''}`, ...rejected.slice(0, 4)]);
|
|
226
226
|
const ordered = orderByPolicy(cleared, policy.prefer || 'balanced', summary);
|
|
227
227
|
let pick = ordered[0];
|
|
228
228
|
let exploration = false;
|