@ai-matrx/agents 0.59.229 → 0.59.231
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 +32 -1
- package/dist/catalog/native/index.cjs +74 -79
- package/dist/catalog/native/index.js +74 -79
- package/dist/catalog/react/index.cjs +290 -147
- package/dist/catalog/react/index.d.cts +6 -2
- package/dist/catalog/react/index.d.ts +6 -2
- package/dist/catalog/react/index.js +321 -178
- package/dist/content-transfer/index.cjs +5 -654
- package/dist/content-transfer/index.js +15 -652
- package/dist/content-transfer/react/index.cjs +5 -654
- package/dist/content-transfer/react/index.js +15 -652
- package/dist/generated/provision-offers.cjs +2 -0
- package/dist/generated/provision-offers.d.cts +76 -1
- package/dist/generated/provision-offers.d.ts +76 -1
- package/dist/generated/provision-offers.js +2 -0
- package/dist/mandates/index.cjs +12 -797
- package/dist/mandates/index.d.cts +5 -740
- package/dist/mandates/index.d.ts +5 -740
- package/dist/mandates/index.js +17 -788
- 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 +5 -5
package/dist/quick/index.js
CHANGED
|
@@ -1,25 +1,182 @@
|
|
|
1
|
+
// catalog/selectors.ts
|
|
2
|
+
function memoize1(fn) {
|
|
3
|
+
let lastA;
|
|
4
|
+
let last;
|
|
5
|
+
let has = false;
|
|
6
|
+
return (a) => {
|
|
7
|
+
if (!has || lastA !== a) {
|
|
8
|
+
last = fn(a);
|
|
9
|
+
lastA = a;
|
|
10
|
+
has = true;
|
|
11
|
+
}
|
|
12
|
+
return last;
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function memoize2(fn) {
|
|
16
|
+
let lastA;
|
|
17
|
+
let lastB;
|
|
18
|
+
let last;
|
|
19
|
+
let has = false;
|
|
20
|
+
return (a, b) => {
|
|
21
|
+
if (!has || lastA !== a || lastB !== b) {
|
|
22
|
+
last = fn(a, b);
|
|
23
|
+
lastA = a;
|
|
24
|
+
lastB = b;
|
|
25
|
+
has = true;
|
|
26
|
+
}
|
|
27
|
+
return last;
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
var selectAllAgentCategories = memoize1(
|
|
31
|
+
(agents) => {
|
|
32
|
+
const cats = /* @__PURE__ */ new Set();
|
|
33
|
+
for (const a of agents) {
|
|
34
|
+
if (a.agentType === "user" && a.category) cats.add(a.category);
|
|
35
|
+
}
|
|
36
|
+
return Array.from(cats).sort();
|
|
37
|
+
}
|
|
38
|
+
);
|
|
39
|
+
var selectAllSystemAgentCategories = memoize1(
|
|
40
|
+
(agents) => {
|
|
41
|
+
const cats = /* @__PURE__ */ new Set();
|
|
42
|
+
for (const a of agents) {
|
|
43
|
+
if (a.agentType === "builtin" && a.category) cats.add(a.category);
|
|
44
|
+
}
|
|
45
|
+
return Array.from(cats).sort();
|
|
46
|
+
}
|
|
47
|
+
);
|
|
48
|
+
var selectAllAgentTags = memoize1(
|
|
49
|
+
(agents) => {
|
|
50
|
+
const tags = /* @__PURE__ */ new Set();
|
|
51
|
+
for (const a of agents) {
|
|
52
|
+
if (a.agentType === "user") a.tags?.forEach((t) => tags.add(t));
|
|
53
|
+
}
|
|
54
|
+
return Array.from(tags).sort();
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
var selectAllSystemAgentTags = memoize1(
|
|
58
|
+
(agents) => {
|
|
59
|
+
const tags = /* @__PURE__ */ new Set();
|
|
60
|
+
for (const a of agents) {
|
|
61
|
+
if (a.agentType === "builtin") a.tags?.forEach((t) => tags.add(t));
|
|
62
|
+
}
|
|
63
|
+
return Array.from(tags).sort();
|
|
64
|
+
}
|
|
65
|
+
);
|
|
66
|
+
var selectUserTypeAgents = memoize1(
|
|
67
|
+
(agents) => agents.filter((a) => a.agentType === "user")
|
|
68
|
+
);
|
|
69
|
+
var selectBuiltinTypeAgents = memoize1(
|
|
70
|
+
(agents) => agents.filter((a) => a.agentType === "builtin")
|
|
71
|
+
);
|
|
72
|
+
function agentMatchesArchiveFilter(agent, archFilter) {
|
|
73
|
+
if (archFilter === "active") return !agent.isArchived;
|
|
74
|
+
if (archFilter === "archived") return Boolean(agent.isArchived);
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
function countBuiltinRows(agents, archFilter) {
|
|
78
|
+
let n = 0;
|
|
79
|
+
for (const a of agents) {
|
|
80
|
+
if (a.agentType !== "builtin") continue;
|
|
81
|
+
if (!agentMatchesArchiveFilter(a, archFilter)) continue;
|
|
82
|
+
n += 1;
|
|
83
|
+
}
|
|
84
|
+
return n;
|
|
85
|
+
}
|
|
86
|
+
function countUserRows(agents, archFilter, predicate) {
|
|
87
|
+
let n = 0;
|
|
88
|
+
for (const a of agents) {
|
|
89
|
+
if (a.agentType !== "user") continue;
|
|
90
|
+
if (!agentMatchesArchiveFilter(a, archFilter)) continue;
|
|
91
|
+
if (predicate(a)) n += 1;
|
|
92
|
+
}
|
|
93
|
+
return n;
|
|
94
|
+
}
|
|
95
|
+
var isOwned = (a) => a.isOwner === true;
|
|
96
|
+
var isShared = (a) => a.isOwner === false && a.accessLevel != null;
|
|
97
|
+
var isAny = () => true;
|
|
98
|
+
var isFavorite = (a) => Boolean(a.isFavorite);
|
|
99
|
+
var selectAgentTabCounts = memoize2(
|
|
100
|
+
(agents, archFilter) => ({
|
|
101
|
+
mine: countUserRows(agents, archFilter, isOwned),
|
|
102
|
+
shared: countUserRows(agents, archFilter, isShared),
|
|
103
|
+
all: countUserRows(agents, archFilter, isAny),
|
|
104
|
+
system: countBuiltinRows(agents, archFilter)
|
|
105
|
+
})
|
|
106
|
+
);
|
|
107
|
+
var selectTotalUserAgentsCount = memoize1(
|
|
108
|
+
(agents) => countUserRows(agents, "active", isAny)
|
|
109
|
+
);
|
|
110
|
+
var selectTotalOwnedAgentsCount = memoize1(
|
|
111
|
+
(agents) => countUserRows(agents, "active", isOwned)
|
|
112
|
+
);
|
|
113
|
+
var selectTotalSharedAgentsCount = memoize1(
|
|
114
|
+
(agents) => countUserRows(agents, "active", isShared)
|
|
115
|
+
);
|
|
116
|
+
var selectTotalBuiltinAgentsCount = memoize1(
|
|
117
|
+
(agents) => countBuiltinRows(agents, "active")
|
|
118
|
+
);
|
|
119
|
+
var selectTotalFavoriteAgentsCount = memoize1(
|
|
120
|
+
(agents) => countUserRows(agents, "active", isFavorite)
|
|
121
|
+
);
|
|
122
|
+
|
|
1
123
|
// quick/shape.ts
|
|
2
124
|
var QUICK_AGENT_KIND = "quick";
|
|
3
125
|
var QUICK_AGENT_TAG = "kind:quick";
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
126
|
+
var QUICK_AGENT_KNOBS = {
|
|
127
|
+
temperatureMax: { feature: "agents.quick", key: "temperature_max" },
|
|
128
|
+
temperatureDefault: { feature: "agents.quick", key: "temperature_default" },
|
|
129
|
+
topPDefault: { feature: "agents.quick", key: "top_p_default" },
|
|
130
|
+
maxOutputMin: { feature: "agents.quick", key: "max_output_min" },
|
|
131
|
+
maxOutputMax: { feature: "agents.quick", key: "max_output_max" },
|
|
132
|
+
maxOutputDefault: { feature: "agents.quick", key: "max_output_default" }
|
|
8
133
|
};
|
|
9
|
-
var
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
134
|
+
var isNum = (v) => typeof v === "number" && Number.isFinite(v);
|
|
135
|
+
function sliderStep(min, max) {
|
|
136
|
+
const raw = (max - min) / 100;
|
|
137
|
+
if (!(raw > 0)) return 1;
|
|
138
|
+
const pow = 10 ** Math.floor(Math.log10(raw));
|
|
139
|
+
const unit = raw / pow;
|
|
140
|
+
const nice = unit <= 1 ? 1 : unit <= 2 ? 2 : unit <= 5 ? 5 : 10;
|
|
141
|
+
return Number((nice * pow).toPrecision(6));
|
|
142
|
+
}
|
|
143
|
+
function limit(min, max, rest, whole) {
|
|
144
|
+
const step = whole ? Math.max(1, Math.round(sliderStep(min, max))) : sliderStep(min, max);
|
|
145
|
+
return { min, max, step, default: Math.min(max, Math.max(min, rest)) };
|
|
146
|
+
}
|
|
147
|
+
function resolveQuickAgentLimits(model, knobs) {
|
|
148
|
+
const t = model?.temperature;
|
|
149
|
+
const p = model?.top_p;
|
|
150
|
+
const m = model?.max_output_tokens;
|
|
151
|
+
const tMin = isNum(t?.min) ? t.min : 0;
|
|
152
|
+
const tMax = isNum(t?.max) ? t.max : knobs.temperatureMax;
|
|
153
|
+
const tRest = isNum(t?.default) ? t.default : knobs.temperatureDefault;
|
|
154
|
+
const pMin = isNum(p?.min) ? p.min : 0;
|
|
155
|
+
const pMax = isNum(p?.max) ? p.max : 1;
|
|
156
|
+
const pRest = isNum(p?.default) ? p.default : knobs.topPDefault;
|
|
157
|
+
const mMin = isNum(m?.min) ? m.min : knobs.maxOutputMin;
|
|
158
|
+
const mMax = isNum(m?.max) ? m.max : knobs.maxOutputMax;
|
|
159
|
+
const mRest = isNum(m?.default) ? m.default : knobs.maxOutputDefault;
|
|
160
|
+
if (!isNum(tMax) || !isNum(tRest) || !isNum(pRest) || !isNum(mMin) || !isNum(mMax) || !isNum(mRest)) return null;
|
|
161
|
+
if (tMax <= tMin || pMax <= pMin || mMax <= mMin) return null;
|
|
162
|
+
return {
|
|
163
|
+
temperature: limit(tMin, tMax, tRest, false),
|
|
164
|
+
topP: limit(pMin, pMax, pRest, false),
|
|
165
|
+
maxOutputTokens: limit(mMin, mMax, mRest, true)
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function defaultQuickAgentSettings(limits) {
|
|
169
|
+
return { temperature: limits.temperature.default, topP: limits.topP.default, maxOutputTokens: limits.maxOutputTokens.default };
|
|
170
|
+
}
|
|
14
171
|
function clamp(value, bound) {
|
|
15
172
|
if (!Number.isFinite(value)) return bound.min;
|
|
16
173
|
return Math.min(bound.max, Math.max(bound.min, value));
|
|
17
174
|
}
|
|
18
|
-
function clampQuickAgentSettings(settings) {
|
|
175
|
+
function clampQuickAgentSettings(settings, limits) {
|
|
19
176
|
return {
|
|
20
|
-
temperature: clamp(settings.temperature,
|
|
21
|
-
topP: clamp(settings.topP,
|
|
22
|
-
maxOutputTokens: Math.round(clamp(settings.maxOutputTokens,
|
|
177
|
+
temperature: clamp(settings.temperature, limits.temperature),
|
|
178
|
+
topP: clamp(settings.topP, limits.topP),
|
|
179
|
+
maxOutputTokens: Math.round(clamp(settings.maxOutputTokens, limits.maxOutputTokens))
|
|
23
180
|
};
|
|
24
181
|
}
|
|
25
182
|
function quickAgentProblems(def) {
|
|
@@ -30,44 +187,31 @@ function quickAgentProblems(def) {
|
|
|
30
187
|
return problems;
|
|
31
188
|
}
|
|
32
189
|
function quickAgentSettingsJson(settings) {
|
|
33
|
-
|
|
34
|
-
return { stream: true, temperature: s.temperature, top_p: s.topP, max_output_tokens: s.maxOutputTokens };
|
|
190
|
+
return { stream: true, temperature: settings.temperature, top_p: settings.topP, max_output_tokens: settings.maxOutputTokens };
|
|
35
191
|
}
|
|
36
192
|
function quickAgentMessages(systemPrompt) {
|
|
37
193
|
return [{ role: "system", content: [{ type: "text", text: systemPrompt }] }];
|
|
38
194
|
}
|
|
39
|
-
function
|
|
195
|
+
function quickAgentFields(def) {
|
|
40
196
|
return {
|
|
41
|
-
agent_type: "user",
|
|
42
197
|
name: def.name.trim(),
|
|
43
|
-
description: null,
|
|
44
198
|
tags: [QUICK_AGENT_TAG],
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
199
|
+
isActive: true,
|
|
200
|
+
isArchived: false,
|
|
201
|
+
modelId: def.modelId,
|
|
48
202
|
messages: quickAgentMessages(def.systemPrompt),
|
|
49
203
|
settings: quickAgentSettingsJson(def.settings),
|
|
50
|
-
tools: []
|
|
51
|
-
metadata: { kind: QUICK_AGENT_KIND },
|
|
52
|
-
created_by: owner.userId,
|
|
53
|
-
organization_id: owner.organizationId
|
|
54
|
-
};
|
|
55
|
-
}
|
|
56
|
-
function buildQuickAgentUpdate(def) {
|
|
57
|
-
return {
|
|
58
|
-
name: def.name.trim(),
|
|
59
|
-
model_id: def.modelId,
|
|
60
|
-
messages: quickAgentMessages(def.systemPrompt),
|
|
61
|
-
settings: quickAgentSettingsJson(def.settings)
|
|
204
|
+
tools: []
|
|
62
205
|
};
|
|
63
206
|
}
|
|
64
207
|
function num(value, fallback) {
|
|
65
208
|
return typeof value === "number" && Number.isFinite(value) ? value : fallback;
|
|
66
209
|
}
|
|
67
|
-
function quickAgentFromRow(row) {
|
|
210
|
+
function quickAgentFromRow(row, defaults) {
|
|
68
211
|
if (!row) return null;
|
|
69
212
|
const metadata = row["metadata"];
|
|
70
|
-
|
|
213
|
+
const tags = Array.isArray(row["tags"]) ? row["tags"] : [];
|
|
214
|
+
if (metadata?.["kind"] !== QUICK_AGENT_KIND && !tags.includes(QUICK_AGENT_TAG)) return null;
|
|
71
215
|
const messages = Array.isArray(row["messages"]) ? row["messages"] : [];
|
|
72
216
|
const system = messages.find((m) => m["role"] === "system");
|
|
73
217
|
const parts = Array.isArray(system?.["content"]) ? system?.["content"] : [];
|
|
@@ -78,75 +222,54 @@ function quickAgentFromRow(row) {
|
|
|
78
222
|
name: typeof row["name"] === "string" ? row["name"] : "",
|
|
79
223
|
systemPrompt,
|
|
80
224
|
modelId: typeof row["model_id"] === "string" ? row["model_id"] : "",
|
|
81
|
-
settings:
|
|
82
|
-
temperature: num(raw["temperature"],
|
|
83
|
-
topP: num(raw["top_p"],
|
|
84
|
-
maxOutputTokens: num(raw["max_output_tokens"],
|
|
85
|
-
}
|
|
225
|
+
settings: {
|
|
226
|
+
temperature: num(raw["temperature"], defaults.temperature),
|
|
227
|
+
topP: num(raw["top_p"], defaults.topP),
|
|
228
|
+
maxOutputTokens: num(raw["max_output_tokens"], defaults.maxOutputTokens)
|
|
229
|
+
}
|
|
86
230
|
};
|
|
87
231
|
}
|
|
88
232
|
function isQuickAgentSummary(row) {
|
|
89
233
|
return row.tags.includes(QUICK_AGENT_TAG);
|
|
90
234
|
}
|
|
235
|
+
function listQuickAgents(rows, userId) {
|
|
236
|
+
const live = (row) => isQuickAgentSummary(row) && !row.isArchived && row.isActive !== false;
|
|
237
|
+
const user = selectUserTypeAgents(rows).filter(live);
|
|
238
|
+
const mine = userId ? user.filter((row) => row.createdBy === userId) : [];
|
|
239
|
+
const organization = user.filter((row) => !mine.includes(row));
|
|
240
|
+
const system = selectBuiltinTypeAgents(rows).filter(live);
|
|
241
|
+
return { mine, organization, system };
|
|
242
|
+
}
|
|
91
243
|
function listMyQuickAgents(rows, userId) {
|
|
92
|
-
|
|
93
|
-
return
|
|
244
|
+
const lanes = listQuickAgents(rows, userId);
|
|
245
|
+
return [...lanes.mine, ...lanes.organization, ...lanes.system];
|
|
94
246
|
}
|
|
95
247
|
function withoutQuickAgents(rows) {
|
|
96
248
|
return rows.filter((row) => !isQuickAgentSummary(row));
|
|
97
249
|
}
|
|
98
250
|
|
|
99
|
-
// quick/
|
|
100
|
-
function
|
|
101
|
-
const
|
|
102
|
-
if (
|
|
103
|
-
|
|
104
|
-
function fail(error) {
|
|
105
|
-
throw new Error(error?.message ?? "The agent could not be saved.");
|
|
106
|
-
}
|
|
107
|
-
var table = (client) => client.schema("agent").from("definition");
|
|
108
|
-
async function createQuickAgent(client, def, owner) {
|
|
109
|
-
refuse(def);
|
|
110
|
-
const { data, error } = await table(client).insert(buildQuickAgentRow(def, owner)).select().single();
|
|
111
|
-
if (error) fail(error);
|
|
112
|
-
const saved = quickAgentFromRow(data);
|
|
113
|
-
if (!saved) fail(null);
|
|
114
|
-
return saved;
|
|
115
|
-
}
|
|
116
|
-
async function updateQuickAgent(client, id, def) {
|
|
117
|
-
refuse(def);
|
|
118
|
-
const { data, error } = await table(client).update(buildQuickAgentUpdate(def)).eq("id", id).select().single();
|
|
119
|
-
if (error) fail(error);
|
|
120
|
-
const saved = quickAgentFromRow(data);
|
|
121
|
-
if (!saved) fail(null);
|
|
122
|
-
return saved;
|
|
123
|
-
}
|
|
124
|
-
async function deleteQuickAgent(client, id) {
|
|
125
|
-
const { error } = await table(client).update({ deleted_at: (/* @__PURE__ */ new Date()).toISOString() }).eq("id", id);
|
|
126
|
-
if (error) fail(error);
|
|
127
|
-
}
|
|
128
|
-
async function readQuickAgent(client, id) {
|
|
129
|
-
const { data, error } = await table(client).select("id,name,model_id,messages,settings,metadata").eq("id", id).is("deleted_at", null).maybeSingle();
|
|
130
|
-
if (error) fail(error);
|
|
131
|
-
return quickAgentFromRow(data);
|
|
251
|
+
// quick/reads.ts
|
|
252
|
+
async function readQuickAgent(client, id, defaults) {
|
|
253
|
+
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();
|
|
254
|
+
if (error) throw new Error(error.message ?? "The agent could not be read.");
|
|
255
|
+
return quickAgentFromRow(data, defaults);
|
|
132
256
|
}
|
|
133
257
|
export {
|
|
134
|
-
QUICK_AGENT_BOUNDS,
|
|
135
|
-
QUICK_AGENT_DEFAULT_SETTINGS,
|
|
136
258
|
QUICK_AGENT_KIND,
|
|
259
|
+
QUICK_AGENT_KNOBS,
|
|
137
260
|
QUICK_AGENT_TAG,
|
|
138
|
-
buildQuickAgentRow,
|
|
139
|
-
buildQuickAgentUpdate,
|
|
140
261
|
clampQuickAgentSettings,
|
|
141
|
-
|
|
142
|
-
deleteQuickAgent,
|
|
262
|
+
defaultQuickAgentSettings,
|
|
143
263
|
isQuickAgentSummary,
|
|
144
264
|
listMyQuickAgents,
|
|
265
|
+
listQuickAgents,
|
|
266
|
+
quickAgentFields,
|
|
145
267
|
quickAgentFromRow,
|
|
146
268
|
quickAgentMessages,
|
|
147
269
|
quickAgentProblems,
|
|
148
270
|
quickAgentSettingsJson,
|
|
149
271
|
readQuickAgent,
|
|
150
|
-
|
|
272
|
+
resolveQuickAgentLimits,
|
|
273
|
+
sliderStep,
|
|
151
274
|
withoutQuickAgents
|
|
152
275
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-matrx/agents",
|
|
3
|
-
"version": "0.59.
|
|
3
|
+
"version": "0.59.231",
|
|
4
4
|
"description": "Portable AI Matrx agent stream protocol, event projection, and safe result-presentation primitives.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.cjs",
|
|
@@ -509,14 +509,14 @@
|
|
|
509
509
|
"sideEffects": false,
|
|
510
510
|
"dependencies": {
|
|
511
511
|
"@ai-matrx/alchemy": "latest",
|
|
512
|
+
"@ai-matrx/api": "latest",
|
|
512
513
|
"@ai-matrx/associations": "latest",
|
|
513
514
|
"@ai-matrx/content-ir": "latest",
|
|
514
515
|
"@ai-matrx/data": "latest",
|
|
515
516
|
"@ai-matrx/design-system": "latest",
|
|
516
|
-
"@ai-matrx/api": "latest",
|
|
517
517
|
"@ai-matrx/diff": "latest",
|
|
518
|
-
"@ai-matrx/
|
|
519
|
-
"@ai-matrx/
|
|
518
|
+
"@ai-matrx/kit": "latest",
|
|
519
|
+
"@ai-matrx/icons": "latest"
|
|
520
520
|
},
|
|
521
521
|
"peerDependencies": {
|
|
522
522
|
"react": ">=18.0.0",
|
|
@@ -561,5 +561,5 @@
|
|
|
561
561
|
"verify:tarball": "node ./scripts/verify-tarball.mjs",
|
|
562
562
|
"typegen:self-test": "node scripts/typegen/drop-guard.self-test.mjs && node scripts/typegen/check-api-types-fresh.mjs --self-test"
|
|
563
563
|
},
|
|
564
|
-
"gitHead": "
|
|
564
|
+
"gitHead": "93aada8319da70a8a2b3211c99935d3a44f9a0a3"
|
|
565
565
|
}
|