@ai-matrx/agents 0.59.228 → 0.59.230
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 +18 -1
- package/dist/catalog/native/index.cjs +74 -79
- package/dist/catalog/native/index.js +74 -79
- package/dist/catalog/react/index.cjs +75 -83
- package/dist/catalog/react/index.js +75 -83
- package/dist/mandates/index.cjs +2 -2
- package/dist/mandates/index.d.cts +4 -4
- package/dist/mandates/index.d.ts +4 -4
- package/dist/mandates/index.js +2 -2
- package/dist/models/index.cjs +19 -9
- package/dist/models/index.d.cts +4 -1
- package/dist/models/index.d.ts +4 -1
- package/dist/models/index.js +19 -9
- package/dist/models/react/index.cjs +0 -3
- package/dist/models/react/index.js +1 -4
- package/dist/quick/index.cjs +205 -82
- package/dist/quick/index.d.cts +110 -45
- package/dist/quick/index.d.ts +110 -45
- package/dist/quick/index.js +205 -82
- package/package.json +4 -4
package/dist/quick/index.cjs
CHANGED
|
@@ -20,49 +20,205 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// quick/index.ts
|
|
21
21
|
var quick_exports = {};
|
|
22
22
|
__export(quick_exports, {
|
|
23
|
-
QUICK_AGENT_BOUNDS: () => QUICK_AGENT_BOUNDS,
|
|
24
|
-
QUICK_AGENT_DEFAULT_SETTINGS: () => QUICK_AGENT_DEFAULT_SETTINGS,
|
|
25
23
|
QUICK_AGENT_KIND: () => QUICK_AGENT_KIND,
|
|
24
|
+
QUICK_AGENT_KNOBS: () => QUICK_AGENT_KNOBS,
|
|
26
25
|
QUICK_AGENT_TAG: () => QUICK_AGENT_TAG,
|
|
27
|
-
buildQuickAgentRow: () => buildQuickAgentRow,
|
|
28
|
-
buildQuickAgentUpdate: () => buildQuickAgentUpdate,
|
|
29
26
|
clampQuickAgentSettings: () => clampQuickAgentSettings,
|
|
30
|
-
|
|
31
|
-
deleteQuickAgent: () => deleteQuickAgent,
|
|
27
|
+
defaultQuickAgentSettings: () => defaultQuickAgentSettings,
|
|
32
28
|
isQuickAgentSummary: () => isQuickAgentSummary,
|
|
33
29
|
listMyQuickAgents: () => listMyQuickAgents,
|
|
30
|
+
listQuickAgents: () => listQuickAgents,
|
|
31
|
+
quickAgentFields: () => quickAgentFields,
|
|
34
32
|
quickAgentFromRow: () => quickAgentFromRow,
|
|
35
33
|
quickAgentMessages: () => quickAgentMessages,
|
|
36
34
|
quickAgentProblems: () => quickAgentProblems,
|
|
37
35
|
quickAgentSettingsJson: () => quickAgentSettingsJson,
|
|
38
36
|
readQuickAgent: () => readQuickAgent,
|
|
39
|
-
|
|
37
|
+
resolveQuickAgentLimits: () => resolveQuickAgentLimits,
|
|
38
|
+
sliderStep: () => sliderStep,
|
|
40
39
|
withoutQuickAgents: () => withoutQuickAgents
|
|
41
40
|
});
|
|
42
41
|
module.exports = __toCommonJS(quick_exports);
|
|
43
42
|
|
|
43
|
+
// catalog/selectors.ts
|
|
44
|
+
function memoize1(fn) {
|
|
45
|
+
let lastA;
|
|
46
|
+
let last;
|
|
47
|
+
let has = false;
|
|
48
|
+
return (a) => {
|
|
49
|
+
if (!has || lastA !== a) {
|
|
50
|
+
last = fn(a);
|
|
51
|
+
lastA = a;
|
|
52
|
+
has = true;
|
|
53
|
+
}
|
|
54
|
+
return last;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
function memoize2(fn) {
|
|
58
|
+
let lastA;
|
|
59
|
+
let lastB;
|
|
60
|
+
let last;
|
|
61
|
+
let has = false;
|
|
62
|
+
return (a, b) => {
|
|
63
|
+
if (!has || lastA !== a || lastB !== b) {
|
|
64
|
+
last = fn(a, b);
|
|
65
|
+
lastA = a;
|
|
66
|
+
lastB = b;
|
|
67
|
+
has = true;
|
|
68
|
+
}
|
|
69
|
+
return last;
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
var selectAllAgentCategories = memoize1(
|
|
73
|
+
(agents) => {
|
|
74
|
+
const cats = /* @__PURE__ */ new Set();
|
|
75
|
+
for (const a of agents) {
|
|
76
|
+
if (a.agentType === "user" && a.category) cats.add(a.category);
|
|
77
|
+
}
|
|
78
|
+
return Array.from(cats).sort();
|
|
79
|
+
}
|
|
80
|
+
);
|
|
81
|
+
var selectAllSystemAgentCategories = memoize1(
|
|
82
|
+
(agents) => {
|
|
83
|
+
const cats = /* @__PURE__ */ new Set();
|
|
84
|
+
for (const a of agents) {
|
|
85
|
+
if (a.agentType === "builtin" && a.category) cats.add(a.category);
|
|
86
|
+
}
|
|
87
|
+
return Array.from(cats).sort();
|
|
88
|
+
}
|
|
89
|
+
);
|
|
90
|
+
var selectAllAgentTags = memoize1(
|
|
91
|
+
(agents) => {
|
|
92
|
+
const tags = /* @__PURE__ */ new Set();
|
|
93
|
+
for (const a of agents) {
|
|
94
|
+
if (a.agentType === "user") a.tags?.forEach((t) => tags.add(t));
|
|
95
|
+
}
|
|
96
|
+
return Array.from(tags).sort();
|
|
97
|
+
}
|
|
98
|
+
);
|
|
99
|
+
var selectAllSystemAgentTags = memoize1(
|
|
100
|
+
(agents) => {
|
|
101
|
+
const tags = /* @__PURE__ */ new Set();
|
|
102
|
+
for (const a of agents) {
|
|
103
|
+
if (a.agentType === "builtin") a.tags?.forEach((t) => tags.add(t));
|
|
104
|
+
}
|
|
105
|
+
return Array.from(tags).sort();
|
|
106
|
+
}
|
|
107
|
+
);
|
|
108
|
+
var selectUserTypeAgents = memoize1(
|
|
109
|
+
(agents) => agents.filter((a) => a.agentType === "user")
|
|
110
|
+
);
|
|
111
|
+
var selectBuiltinTypeAgents = memoize1(
|
|
112
|
+
(agents) => agents.filter((a) => a.agentType === "builtin")
|
|
113
|
+
);
|
|
114
|
+
function agentMatchesArchiveFilter(agent, archFilter) {
|
|
115
|
+
if (archFilter === "active") return !agent.isArchived;
|
|
116
|
+
if (archFilter === "archived") return Boolean(agent.isArchived);
|
|
117
|
+
return true;
|
|
118
|
+
}
|
|
119
|
+
function countBuiltinRows(agents, archFilter) {
|
|
120
|
+
let n = 0;
|
|
121
|
+
for (const a of agents) {
|
|
122
|
+
if (a.agentType !== "builtin") continue;
|
|
123
|
+
if (!agentMatchesArchiveFilter(a, archFilter)) continue;
|
|
124
|
+
n += 1;
|
|
125
|
+
}
|
|
126
|
+
return n;
|
|
127
|
+
}
|
|
128
|
+
function countUserRows(agents, archFilter, predicate) {
|
|
129
|
+
let n = 0;
|
|
130
|
+
for (const a of agents) {
|
|
131
|
+
if (a.agentType !== "user") continue;
|
|
132
|
+
if (!agentMatchesArchiveFilter(a, archFilter)) continue;
|
|
133
|
+
if (predicate(a)) n += 1;
|
|
134
|
+
}
|
|
135
|
+
return n;
|
|
136
|
+
}
|
|
137
|
+
var isOwned = (a) => a.isOwner === true;
|
|
138
|
+
var isShared = (a) => a.isOwner === false && a.accessLevel != null;
|
|
139
|
+
var isAny = () => true;
|
|
140
|
+
var isFavorite = (a) => Boolean(a.isFavorite);
|
|
141
|
+
var selectAgentTabCounts = memoize2(
|
|
142
|
+
(agents, archFilter) => ({
|
|
143
|
+
mine: countUserRows(agents, archFilter, isOwned),
|
|
144
|
+
shared: countUserRows(agents, archFilter, isShared),
|
|
145
|
+
all: countUserRows(agents, archFilter, isAny),
|
|
146
|
+
system: countBuiltinRows(agents, archFilter)
|
|
147
|
+
})
|
|
148
|
+
);
|
|
149
|
+
var selectTotalUserAgentsCount = memoize1(
|
|
150
|
+
(agents) => countUserRows(agents, "active", isAny)
|
|
151
|
+
);
|
|
152
|
+
var selectTotalOwnedAgentsCount = memoize1(
|
|
153
|
+
(agents) => countUserRows(agents, "active", isOwned)
|
|
154
|
+
);
|
|
155
|
+
var selectTotalSharedAgentsCount = memoize1(
|
|
156
|
+
(agents) => countUserRows(agents, "active", isShared)
|
|
157
|
+
);
|
|
158
|
+
var selectTotalBuiltinAgentsCount = memoize1(
|
|
159
|
+
(agents) => countBuiltinRows(agents, "active")
|
|
160
|
+
);
|
|
161
|
+
var selectTotalFavoriteAgentsCount = memoize1(
|
|
162
|
+
(agents) => countUserRows(agents, "active", isFavorite)
|
|
163
|
+
);
|
|
164
|
+
|
|
44
165
|
// quick/shape.ts
|
|
45
166
|
var QUICK_AGENT_KIND = "quick";
|
|
46
167
|
var QUICK_AGENT_TAG = "kind:quick";
|
|
47
|
-
var
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
168
|
+
var QUICK_AGENT_KNOBS = {
|
|
169
|
+
temperatureMax: { feature: "agents.quick", key: "temperature_max" },
|
|
170
|
+
temperatureDefault: { feature: "agents.quick", key: "temperature_default" },
|
|
171
|
+
topPDefault: { feature: "agents.quick", key: "top_p_default" },
|
|
172
|
+
maxOutputMin: { feature: "agents.quick", key: "max_output_min" },
|
|
173
|
+
maxOutputMax: { feature: "agents.quick", key: "max_output_max" },
|
|
174
|
+
maxOutputDefault: { feature: "agents.quick", key: "max_output_default" }
|
|
51
175
|
};
|
|
52
|
-
var
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
176
|
+
var isNum = (v) => typeof v === "number" && Number.isFinite(v);
|
|
177
|
+
function sliderStep(min, max) {
|
|
178
|
+
const raw = (max - min) / 100;
|
|
179
|
+
if (!(raw > 0)) return 1;
|
|
180
|
+
const pow = 10 ** Math.floor(Math.log10(raw));
|
|
181
|
+
const unit = raw / pow;
|
|
182
|
+
const nice = unit <= 1 ? 1 : unit <= 2 ? 2 : unit <= 5 ? 5 : 10;
|
|
183
|
+
return Number((nice * pow).toPrecision(6));
|
|
184
|
+
}
|
|
185
|
+
function limit(min, max, rest, whole) {
|
|
186
|
+
const step = whole ? Math.max(1, Math.round(sliderStep(min, max))) : sliderStep(min, max);
|
|
187
|
+
return { min, max, step, default: Math.min(max, Math.max(min, rest)) };
|
|
188
|
+
}
|
|
189
|
+
function resolveQuickAgentLimits(model, knobs) {
|
|
190
|
+
const t = model?.temperature;
|
|
191
|
+
const p = model?.top_p;
|
|
192
|
+
const m = model?.max_output_tokens;
|
|
193
|
+
const tMin = isNum(t?.min) ? t.min : 0;
|
|
194
|
+
const tMax = isNum(t?.max) ? t.max : knobs.temperatureMax;
|
|
195
|
+
const tRest = isNum(t?.default) ? t.default : knobs.temperatureDefault;
|
|
196
|
+
const pMin = isNum(p?.min) ? p.min : 0;
|
|
197
|
+
const pMax = isNum(p?.max) ? p.max : 1;
|
|
198
|
+
const pRest = isNum(p?.default) ? p.default : knobs.topPDefault;
|
|
199
|
+
const mMin = isNum(m?.min) ? m.min : knobs.maxOutputMin;
|
|
200
|
+
const mMax = isNum(m?.max) ? m.max : knobs.maxOutputMax;
|
|
201
|
+
const mRest = isNum(m?.default) ? m.default : knobs.maxOutputDefault;
|
|
202
|
+
if (!isNum(tMax) || !isNum(tRest) || !isNum(pRest) || !isNum(mMin) || !isNum(mMax) || !isNum(mRest)) return null;
|
|
203
|
+
if (tMax <= tMin || pMax <= pMin || mMax <= mMin) return null;
|
|
204
|
+
return {
|
|
205
|
+
temperature: limit(tMin, tMax, tRest, false),
|
|
206
|
+
topP: limit(pMin, pMax, pRest, false),
|
|
207
|
+
maxOutputTokens: limit(mMin, mMax, mRest, true)
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
function defaultQuickAgentSettings(limits) {
|
|
211
|
+
return { temperature: limits.temperature.default, topP: limits.topP.default, maxOutputTokens: limits.maxOutputTokens.default };
|
|
212
|
+
}
|
|
57
213
|
function clamp(value, bound) {
|
|
58
214
|
if (!Number.isFinite(value)) return bound.min;
|
|
59
215
|
return Math.min(bound.max, Math.max(bound.min, value));
|
|
60
216
|
}
|
|
61
|
-
function clampQuickAgentSettings(settings) {
|
|
217
|
+
function clampQuickAgentSettings(settings, limits) {
|
|
62
218
|
return {
|
|
63
|
-
temperature: clamp(settings.temperature,
|
|
64
|
-
topP: clamp(settings.topP,
|
|
65
|
-
maxOutputTokens: Math.round(clamp(settings.maxOutputTokens,
|
|
219
|
+
temperature: clamp(settings.temperature, limits.temperature),
|
|
220
|
+
topP: clamp(settings.topP, limits.topP),
|
|
221
|
+
maxOutputTokens: Math.round(clamp(settings.maxOutputTokens, limits.maxOutputTokens))
|
|
66
222
|
};
|
|
67
223
|
}
|
|
68
224
|
function quickAgentProblems(def) {
|
|
@@ -73,44 +229,31 @@ function quickAgentProblems(def) {
|
|
|
73
229
|
return problems;
|
|
74
230
|
}
|
|
75
231
|
function quickAgentSettingsJson(settings) {
|
|
76
|
-
|
|
77
|
-
return { stream: true, temperature: s.temperature, top_p: s.topP, max_output_tokens: s.maxOutputTokens };
|
|
232
|
+
return { stream: true, temperature: settings.temperature, top_p: settings.topP, max_output_tokens: settings.maxOutputTokens };
|
|
78
233
|
}
|
|
79
234
|
function quickAgentMessages(systemPrompt) {
|
|
80
235
|
return [{ role: "system", content: [{ type: "text", text: systemPrompt }] }];
|
|
81
236
|
}
|
|
82
|
-
function
|
|
237
|
+
function quickAgentFields(def) {
|
|
83
238
|
return {
|
|
84
|
-
agent_type: "user",
|
|
85
239
|
name: def.name.trim(),
|
|
86
|
-
description: null,
|
|
87
240
|
tags: [QUICK_AGENT_TAG],
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
241
|
+
isActive: true,
|
|
242
|
+
isArchived: false,
|
|
243
|
+
modelId: def.modelId,
|
|
91
244
|
messages: quickAgentMessages(def.systemPrompt),
|
|
92
245
|
settings: quickAgentSettingsJson(def.settings),
|
|
93
|
-
tools: []
|
|
94
|
-
metadata: { kind: QUICK_AGENT_KIND },
|
|
95
|
-
created_by: owner.userId,
|
|
96
|
-
organization_id: owner.organizationId
|
|
97
|
-
};
|
|
98
|
-
}
|
|
99
|
-
function buildQuickAgentUpdate(def) {
|
|
100
|
-
return {
|
|
101
|
-
name: def.name.trim(),
|
|
102
|
-
model_id: def.modelId,
|
|
103
|
-
messages: quickAgentMessages(def.systemPrompt),
|
|
104
|
-
settings: quickAgentSettingsJson(def.settings)
|
|
246
|
+
tools: []
|
|
105
247
|
};
|
|
106
248
|
}
|
|
107
249
|
function num(value, fallback) {
|
|
108
250
|
return typeof value === "number" && Number.isFinite(value) ? value : fallback;
|
|
109
251
|
}
|
|
110
|
-
function quickAgentFromRow(row) {
|
|
252
|
+
function quickAgentFromRow(row, defaults) {
|
|
111
253
|
if (!row) return null;
|
|
112
254
|
const metadata = row["metadata"];
|
|
113
|
-
|
|
255
|
+
const tags = Array.isArray(row["tags"]) ? row["tags"] : [];
|
|
256
|
+
if (metadata?.["kind"] !== QUICK_AGENT_KIND && !tags.includes(QUICK_AGENT_TAG)) return null;
|
|
114
257
|
const messages = Array.isArray(row["messages"]) ? row["messages"] : [];
|
|
115
258
|
const system = messages.find((m) => m["role"] === "system");
|
|
116
259
|
const parts = Array.isArray(system?.["content"]) ? system?.["content"] : [];
|
|
@@ -121,55 +264,35 @@ function quickAgentFromRow(row) {
|
|
|
121
264
|
name: typeof row["name"] === "string" ? row["name"] : "",
|
|
122
265
|
systemPrompt,
|
|
123
266
|
modelId: typeof row["model_id"] === "string" ? row["model_id"] : "",
|
|
124
|
-
settings:
|
|
125
|
-
temperature: num(raw["temperature"],
|
|
126
|
-
topP: num(raw["top_p"],
|
|
127
|
-
maxOutputTokens: num(raw["max_output_tokens"],
|
|
128
|
-
}
|
|
267
|
+
settings: {
|
|
268
|
+
temperature: num(raw["temperature"], defaults.temperature),
|
|
269
|
+
topP: num(raw["top_p"], defaults.topP),
|
|
270
|
+
maxOutputTokens: num(raw["max_output_tokens"], defaults.maxOutputTokens)
|
|
271
|
+
}
|
|
129
272
|
};
|
|
130
273
|
}
|
|
131
274
|
function isQuickAgentSummary(row) {
|
|
132
275
|
return row.tags.includes(QUICK_AGENT_TAG);
|
|
133
276
|
}
|
|
277
|
+
function listQuickAgents(rows, userId) {
|
|
278
|
+
const live = (row) => isQuickAgentSummary(row) && !row.isArchived && row.isActive !== false;
|
|
279
|
+
const user = selectUserTypeAgents(rows).filter(live);
|
|
280
|
+
const mine = userId ? user.filter((row) => row.createdBy === userId) : [];
|
|
281
|
+
const organization = user.filter((row) => !mine.includes(row));
|
|
282
|
+
const system = selectBuiltinTypeAgents(rows).filter(live);
|
|
283
|
+
return { mine, organization, system };
|
|
284
|
+
}
|
|
134
285
|
function listMyQuickAgents(rows, userId) {
|
|
135
|
-
|
|
136
|
-
return
|
|
286
|
+
const lanes = listQuickAgents(rows, userId);
|
|
287
|
+
return [...lanes.mine, ...lanes.organization, ...lanes.system];
|
|
137
288
|
}
|
|
138
289
|
function withoutQuickAgents(rows) {
|
|
139
290
|
return rows.filter((row) => !isQuickAgentSummary(row));
|
|
140
291
|
}
|
|
141
292
|
|
|
142
|
-
// quick/
|
|
143
|
-
function
|
|
144
|
-
const
|
|
145
|
-
if (
|
|
146
|
-
|
|
147
|
-
function fail(error) {
|
|
148
|
-
throw new Error(error?.message ?? "The agent could not be saved.");
|
|
149
|
-
}
|
|
150
|
-
var table = (client) => client.schema("agent").from("definition");
|
|
151
|
-
async function createQuickAgent(client, def, owner) {
|
|
152
|
-
refuse(def);
|
|
153
|
-
const { data, error } = await table(client).insert(buildQuickAgentRow(def, owner)).select().single();
|
|
154
|
-
if (error) fail(error);
|
|
155
|
-
const saved = quickAgentFromRow(data);
|
|
156
|
-
if (!saved) fail(null);
|
|
157
|
-
return saved;
|
|
158
|
-
}
|
|
159
|
-
async function updateQuickAgent(client, id, def) {
|
|
160
|
-
refuse(def);
|
|
161
|
-
const { data, error } = await table(client).update(buildQuickAgentUpdate(def)).eq("id", id).select().single();
|
|
162
|
-
if (error) fail(error);
|
|
163
|
-
const saved = quickAgentFromRow(data);
|
|
164
|
-
if (!saved) fail(null);
|
|
165
|
-
return saved;
|
|
166
|
-
}
|
|
167
|
-
async function deleteQuickAgent(client, id) {
|
|
168
|
-
const { error } = await table(client).update({ deleted_at: (/* @__PURE__ */ new Date()).toISOString() }).eq("id", id);
|
|
169
|
-
if (error) fail(error);
|
|
170
|
-
}
|
|
171
|
-
async function readQuickAgent(client, id) {
|
|
172
|
-
const { data, error } = await table(client).select("id,name,model_id,messages,settings,metadata").eq("id", id).is("deleted_at", null).maybeSingle();
|
|
173
|
-
if (error) fail(error);
|
|
174
|
-
return quickAgentFromRow(data);
|
|
293
|
+
// quick/reads.ts
|
|
294
|
+
async function readQuickAgent(client, id, defaults) {
|
|
295
|
+
const { data, error } = await client.schema("agent").from("definition").select("id,name,model_id,messages,settings,tags,metadata").eq("id", id).is("deleted_at", null).maybeSingle();
|
|
296
|
+
if (error) throw new Error(error.message ?? "The agent could not be read.");
|
|
297
|
+
return quickAgentFromRow(data, defaults);
|
|
175
298
|
}
|
package/dist/quick/index.d.cts
CHANGED
|
@@ -6,12 +6,13 @@ import { A as AgentSummary } from '../types-DZhDqrVE.cjs';
|
|
|
6
6
|
* A quick agent is a named bundle of exactly: name, system prompt, model and three settings
|
|
7
7
|
* (temperature, top-p, max output tokens). It is an ordinary `agent.definition` row — one agent
|
|
8
8
|
* table, one permission model, no second prompt store — marked `kind: quick` so the big catalog
|
|
9
|
-
* can hide or group it. This entry owns the shape and the pure builders/selectors;
|
|
10
|
-
*
|
|
9
|
+
* can hide or group it. This entry owns the shape and the pure builders/selectors; the WRITES go
|
|
10
|
+
* through chat's one agent-definition write path (`agents/redux/agent-definition/definition-writes`),
|
|
11
|
+
* never a second one here.
|
|
11
12
|
*
|
|
12
|
-
* The marker
|
|
13
|
-
*
|
|
14
|
-
* metadata
|
|
13
|
+
* The marker is the `kind:quick` tag: it rides every catalog row, so a list can filter without a
|
|
14
|
+
* second read — exactly how `chat-agent` marks presets. (Rows saved before the shared write path also
|
|
15
|
+
* carry `metadata.kind = "quick"`; both read as quick.)
|
|
15
16
|
*/
|
|
16
17
|
|
|
17
18
|
declare const QUICK_AGENT_KIND: "quick";
|
|
@@ -34,26 +35,81 @@ interface QuickAgentDefinition {
|
|
|
34
35
|
interface QuickAgent extends QuickAgentDefinition {
|
|
35
36
|
id: string;
|
|
36
37
|
}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
38
|
+
/** One setting's slider: where it starts, where it stops, where a new agent rests. */
|
|
39
|
+
interface QuickAgentSettingLimit {
|
|
40
|
+
min: number;
|
|
41
|
+
max: number;
|
|
42
|
+
step: number;
|
|
43
|
+
default: number;
|
|
44
|
+
}
|
|
45
|
+
interface QuickAgentLimits {
|
|
46
|
+
temperature: QuickAgentSettingLimit;
|
|
47
|
+
topP: QuickAgentSettingLimit;
|
|
48
|
+
maxOutputTokens: QuickAgentSettingLimit;
|
|
49
|
+
}
|
|
50
|
+
/** A model's own settings row for one control (`ai.model` controls: min / max / default), when it states one. */
|
|
51
|
+
interface ModelSettingRow {
|
|
52
|
+
min?: number | null | undefined;
|
|
53
|
+
max?: number | null | undefined;
|
|
54
|
+
default?: unknown;
|
|
55
|
+
}
|
|
56
|
+
/** The chosen model's settings rows for the three controls; a control it does not state is absent. */
|
|
57
|
+
interface ModelSettingRows {
|
|
58
|
+
temperature?: ModelSettingRow | null | undefined;
|
|
59
|
+
top_p?: ModelSettingRow | null | undefined;
|
|
60
|
+
max_output_tokens?: ModelSettingRow | null | undefined;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The `agents.quick` knob values (organization and person can set them). `undefined` = the register
|
|
64
|
+
* has not answered yet. A probability lives in 0..1 and a temperature starts at 0 by definition;
|
|
65
|
+
* every other bound and every default is a knob.
|
|
66
|
+
*/
|
|
67
|
+
interface QuickAgentKnobValues {
|
|
68
|
+
temperatureMax?: unknown;
|
|
69
|
+
temperatureDefault?: unknown;
|
|
70
|
+
topPDefault?: unknown;
|
|
71
|
+
maxOutputMin?: unknown;
|
|
72
|
+
maxOutputMax?: unknown;
|
|
73
|
+
maxOutputDefault?: unknown;
|
|
74
|
+
}
|
|
75
|
+
declare const QUICK_AGENT_KNOBS: {
|
|
76
|
+
readonly temperatureMax: {
|
|
77
|
+
readonly feature: "agents.quick";
|
|
78
|
+
readonly key: "temperature_max";
|
|
79
|
+
};
|
|
80
|
+
readonly temperatureDefault: {
|
|
81
|
+
readonly feature: "agents.quick";
|
|
82
|
+
readonly key: "temperature_default";
|
|
83
|
+
};
|
|
84
|
+
readonly topPDefault: {
|
|
85
|
+
readonly feature: "agents.quick";
|
|
86
|
+
readonly key: "top_p_default";
|
|
87
|
+
};
|
|
88
|
+
readonly maxOutputMin: {
|
|
89
|
+
readonly feature: "agents.quick";
|
|
90
|
+
readonly key: "max_output_min";
|
|
42
91
|
};
|
|
43
|
-
readonly
|
|
44
|
-
readonly
|
|
45
|
-
readonly
|
|
46
|
-
readonly step: 0.05;
|
|
92
|
+
readonly maxOutputMax: {
|
|
93
|
+
readonly feature: "agents.quick";
|
|
94
|
+
readonly key: "max_output_max";
|
|
47
95
|
};
|
|
48
|
-
readonly
|
|
49
|
-
readonly
|
|
50
|
-
readonly
|
|
51
|
-
readonly step: 256;
|
|
96
|
+
readonly maxOutputDefault: {
|
|
97
|
+
readonly feature: "agents.quick";
|
|
98
|
+
readonly key: "max_output_default";
|
|
52
99
|
};
|
|
53
100
|
};
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
101
|
+
/** A slider step that gives ~100 positions over the range, on a 1 / 2 / 5 grid (0.02 -> 0.05 style). */
|
|
102
|
+
declare function sliderStep(min: number, max: number): number;
|
|
103
|
+
/**
|
|
104
|
+
* THE ONE SOURCE of the three sliders' bounds and resting values: the chosen model's own settings
|
|
105
|
+
* rows where it states them, else the `agents.quick` knobs. `null` until every number is known (the
|
|
106
|
+
* panel shows no slider for a number nobody has answered — there is no code default).
|
|
107
|
+
*/
|
|
108
|
+
declare function resolveQuickAgentLimits(model: ModelSettingRows | null | undefined, knobs: QuickAgentKnobValues): QuickAgentLimits | null;
|
|
109
|
+
/** A new agent's settings: every slider at its resting value. */
|
|
110
|
+
declare function defaultQuickAgentSettings(limits: QuickAgentLimits): QuickAgentSettings;
|
|
111
|
+
/** Settings pulled inside their limits (a slider can never save a value the model refuses). */
|
|
112
|
+
declare function clampQuickAgentSettings(settings: QuickAgentSettings, limits: QuickAgentLimits): QuickAgentSettings;
|
|
57
113
|
/** What stops a save, in words — empty when the definition is saveable. */
|
|
58
114
|
declare function quickAgentProblems(def: Pick<QuickAgentDefinition, "name" | "systemPrompt" | "modelId">): string[];
|
|
59
115
|
interface QuickAgentSystemMessage {
|
|
@@ -66,28 +122,44 @@ interface QuickAgentSystemMessage {
|
|
|
66
122
|
/** The persisted `settings` JSON: the three params plus the stream flag every agent row carries. */
|
|
67
123
|
declare function quickAgentSettingsJson(settings: QuickAgentSettings): Record<string, unknown>;
|
|
68
124
|
declare function quickAgentMessages(systemPrompt: string): QuickAgentSystemMessage[];
|
|
69
|
-
/**
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
125
|
+
/**
|
|
126
|
+
* The agent fields a quick agent sets, in the shape of the ONE agent-definition write path
|
|
127
|
+
* (chat `definition-writes`): name + system message + model + the three settings, marked quick, no
|
|
128
|
+
* tools. Nothing else is ever part of a quick agent.
|
|
129
|
+
*/
|
|
130
|
+
declare function quickAgentFields(def: QuickAgentDefinition): {
|
|
131
|
+
name: string;
|
|
132
|
+
tags: string[];
|
|
133
|
+
isActive: true;
|
|
134
|
+
isArchived: false;
|
|
135
|
+
modelId: string;
|
|
136
|
+
messages: QuickAgentSystemMessage[];
|
|
137
|
+
settings: Record<string, unknown>;
|
|
138
|
+
tools: never[];
|
|
139
|
+
};
|
|
140
|
+
/**
|
|
141
|
+
* A stored row read back as a quick agent; `null` when the row is not one. A setting the row does
|
|
142
|
+
* not carry rests at `defaults` (the resolved limits' resting values).
|
|
143
|
+
*/
|
|
144
|
+
declare function quickAgentFromRow(row: Record<string, unknown> | null | undefined, defaults: QuickAgentSettings): QuickAgent | null;
|
|
78
145
|
declare function isQuickAgentSummary(row: Pick<AgentSummary, "tags">): boolean;
|
|
79
146
|
/**
|
|
80
|
-
* THE
|
|
81
|
-
*
|
|
147
|
+
* THE QUICK-AGENT LIST in the platform's visibility lanes: mine, then my organization's, then the
|
|
148
|
+
* system's (the catalog's own user-type / builtin split; "mine" is what the person created).
|
|
82
149
|
*/
|
|
150
|
+
declare function listQuickAgents(rows: readonly AgentSummary[], userId: string | null): {
|
|
151
|
+
mine: AgentSummary[];
|
|
152
|
+
organization: AgentSummary[];
|
|
153
|
+
system: AgentSummary[];
|
|
154
|
+
};
|
|
155
|
+
/** The pill's list: mine, then organization, then system. */
|
|
83
156
|
declare function listMyQuickAgents(rows: readonly AgentSummary[], userId: string | null): AgentSummary[];
|
|
84
157
|
/** The big catalogue's view: quick agents leave the general list (a filter, never a delete). */
|
|
85
158
|
declare function withoutQuickAgents<T extends Pick<AgentSummary, "tags">>(rows: readonly T[]): T[];
|
|
86
159
|
|
|
87
160
|
/**
|
|
88
|
-
* The
|
|
89
|
-
*
|
|
90
|
-
* The client is the host's own RLS-bound Supabase client; nothing here knows how it was built.
|
|
161
|
+
* The one READ of a quick agent: its full definition (the catalog row carries no prompt). Reads
|
|
162
|
+
* only; every write goes through chat's one agent-definition write path.
|
|
91
163
|
*/
|
|
92
164
|
|
|
93
165
|
interface QuickAgentClient {
|
|
@@ -95,14 +167,7 @@ interface QuickAgentClient {
|
|
|
95
167
|
from(table: "definition"): any;
|
|
96
168
|
};
|
|
97
169
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
userId: string;
|
|
101
|
-
}): Promise<QuickAgent>;
|
|
102
|
-
declare function updateQuickAgent(client: QuickAgentClient, id: string, def: QuickAgentDefinition): Promise<QuickAgent>;
|
|
103
|
-
/** Soft delete — the same `deleted_at` every agent delete sets, so every list already hides it. */
|
|
104
|
-
declare function deleteQuickAgent(client: QuickAgentClient, id: string): Promise<void>;
|
|
105
|
-
/** One quick agent's full definition (the catalog row carries no prompt). */
|
|
106
|
-
declare function readQuickAgent(client: QuickAgentClient, id: string): Promise<QuickAgent | null>;
|
|
170
|
+
/** One quick agent's full definition; settings the row lacks rest at `defaults`. */
|
|
171
|
+
declare function readQuickAgent(client: QuickAgentClient, id: string, defaults: QuickAgentSettings): Promise<QuickAgent | null>;
|
|
107
172
|
|
|
108
|
-
export {
|
|
173
|
+
export { type ModelSettingRow, type ModelSettingRows, QUICK_AGENT_KIND, QUICK_AGENT_KNOBS, QUICK_AGENT_TAG, type QuickAgent, type QuickAgentClient, type QuickAgentDefinition, type QuickAgentKnobValues, type QuickAgentLimits, type QuickAgentSettingLimit, type QuickAgentSettings, type QuickAgentSystemMessage, clampQuickAgentSettings, defaultQuickAgentSettings, isQuickAgentSummary, listMyQuickAgents, listQuickAgents, quickAgentFields, quickAgentFromRow, quickAgentMessages, quickAgentProblems, quickAgentSettingsJson, readQuickAgent, resolveQuickAgentLimits, sliderStep, withoutQuickAgents };
|