aimeat 3.3.0 → 3.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/build-stamp.json +4 -4
- package/dist/scripts/audit-mcp-schemas.js +10 -1
- package/dist/scripts/audit-mcp-schemas.js.map +1 -1
- package/dist/scripts/check-ai-disclosure.d.ts +1 -1
- package/dist/scripts/check-ai-disclosure.d.ts.map +1 -1
- package/dist/scripts/check-ai-disclosure.js +19 -3
- package/dist/scripts/check-ai-disclosure.js.map +1 -1
- package/dist/src/auth/ai-gate.d.ts +25 -0
- package/dist/src/auth/ai-gate.d.ts.map +1 -0
- package/dist/src/auth/ai-gate.js +21 -0
- package/dist/src/auth/ai-gate.js.map +1 -0
- package/dist/src/cli/connect/tool-call-defs-agent.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-agent.js +38 -9
- package/dist/src/cli/connect/tool-call-defs-agent.js.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-apps.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-apps.js +114 -25
- package/dist/src/cli/connect/tool-call-defs-apps.js.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-core.js +149 -26
- package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-organism.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call-defs-organism.js +20 -3
- package/dist/src/cli/connect/tool-call-defs-organism.js.map +1 -1
- package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
- package/dist/src/cli/connect/tool-call.js +50 -1
- package/dist/src/cli/connect/tool-call.js.map +1 -1
- package/dist/src/generated/api-types.d.ts +156 -0
- package/dist/src/generated/api-types.d.ts.map +1 -1
- package/dist/src/routes/ai.d.ts.map +1 -1
- package/dist/src/routes/ai.js +4 -15
- package/dist/src/routes/ai.js.map +1 -1
- package/dist/src/routes/llm-proxy.d.ts +34 -0
- package/dist/src/routes/llm-proxy.d.ts.map +1 -0
- package/dist/src/routes/llm-proxy.js +258 -0
- package/dist/src/routes/llm-proxy.js.map +1 -0
- package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
- package/dist/src/server-bootstrap/routes-loader.js +2 -0
- package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
- package/dist/src/services/ai-completion.d.ts +76 -0
- package/dist/src/services/ai-completion.d.ts.map +1 -1
- package/dist/src/services/ai-completion.js +104 -68
- package/dist/src/services/ai-completion.js.map +1 -1
- package/dist/src/services/openrouter.d.ts +23 -0
- package/dist/src/services/openrouter.d.ts.map +1 -1
- package/dist/src/services/openrouter.js +32 -1
- package/dist/src/services/openrouter.js.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.d.ts.map +1 -1
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.js +23 -4
- package/dist/src/storage/providers/postgres-kysely/methods/wallet.js.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/work.d.ts +5 -0
- package/dist/src/storage/providers/sqlite/methods/work.d.ts.map +1 -1
- package/dist/src/storage/providers/sqlite/methods/work.js +34 -22
- package/dist/src/storage/providers/sqlite/methods/work.js.map +1 -1
- package/package.json +1 -1
|
@@ -56,7 +56,56 @@ export const CONNECT_CLI_TOOLS = [
|
|
|
56
56
|
...appTools,
|
|
57
57
|
...appDraftEditTools,
|
|
58
58
|
...exchangeTools,
|
|
59
|
-
].map(withProvenanceCarrying);
|
|
59
|
+
].map(withProvenanceCarrying).map(withDeclaredInputOnly);
|
|
60
|
+
/**
|
|
61
|
+
* REFUSE A PARAMETER THIS TOOL DOES NOT DECLARE, instead of ignoring it.
|
|
62
|
+
*
|
|
63
|
+
* THE DEFECT THIS ENDS. A caller sent `deliverable_key` to aimeat_task_complete, got `ok: true`
|
|
64
|
+
* back, and the pointer to its own output was gone: no error, no warning, no log line. The same
|
|
65
|
+
* shape then repeated with `owner_scope` on the memory tools, and a crew's public mirror read only
|
|
66
|
+
* its own namespace for weeks while every call it made succeeded. Silent loss is the whole problem;
|
|
67
|
+
* a dropped parameter that ANSWERS is worse than one that refuses, because nobody investigates a
|
|
68
|
+
* success.
|
|
69
|
+
*
|
|
70
|
+
* So the contract is enforced in one place, on the assembled table, exactly like
|
|
71
|
+
* withProvenanceCarrying above — a per-handler version would have left whichever door somebody
|
|
72
|
+
* forgot still swallowing the field, which is the bug, not the fix.
|
|
73
|
+
*
|
|
74
|
+
* A tool that declares NO input anywhere stays permissive: absence of a schema is not evidence that
|
|
75
|
+
* a parameter is wrong, and guessing would refuse working calls.
|
|
76
|
+
*/
|
|
77
|
+
function withDeclaredInputOnly(tool) {
|
|
78
|
+
const declared = new Set([
|
|
79
|
+
...Object.keys(tool.input ?? {}),
|
|
80
|
+
...Object.keys(getAimeatToolDefinition(tool.name)?.input ?? {}),
|
|
81
|
+
// Handled by the wrapper above rather than by any handler.
|
|
82
|
+
'ai_provenance', 'ai_provenance_id',
|
|
83
|
+
// Chosen by the dispatcher, not forwarded as a field.
|
|
84
|
+
'agent_name', 'response_format',
|
|
85
|
+
]);
|
|
86
|
+
// Nothing to check against.
|
|
87
|
+
if (declared.size <= 4)
|
|
88
|
+
return tool;
|
|
89
|
+
return {
|
|
90
|
+
...tool,
|
|
91
|
+
handler: (ctx, input) => {
|
|
92
|
+
const unknown = Object.keys(input ?? {}).filter(key => !declared.has(key));
|
|
93
|
+
if (unknown.length) {
|
|
94
|
+
const accepted = [...declared].filter(k => k !== 'ai_provenance' && k !== 'ai_provenance_id' && k !== 'response_format').sort();
|
|
95
|
+
return Promise.resolve({ ok: false, error: {
|
|
96
|
+
code: 'UNKNOWN_PARAMETER',
|
|
97
|
+
message: `${tool.name} does not take ${unknown.map(u => `"${u}"`).join(', ')}. `
|
|
98
|
+
+ `It takes: ${accepted.join(', ')}. `
|
|
99
|
+
+ 'This is a refusal rather than a silent drop on purpose: a parameter that is ignored '
|
|
100
|
+
+ 'while the call succeeds is how a caller loses data without ever being told.',
|
|
101
|
+
unknown_parameters: unknown,
|
|
102
|
+
accepted_parameters: accepted,
|
|
103
|
+
} });
|
|
104
|
+
}
|
|
105
|
+
return tool.handler(ctx, input);
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
60
109
|
function getTool(name) {
|
|
61
110
|
return CONNECT_CLI_TOOLS.find(tool => tool.name === name);
|
|
62
111
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-call.js","sourceRoot":"","sources":["../../../../src/cli/connect/tool-call.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,6BAA6B,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAE1G,OAAO,EAAE,YAAY,IAAI,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,eAAe,EAA4B,MAAM,aAAa,CAAC;AAEpF,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,+FAA+F;AAC/F,EAAE;AACF,iGAAiG;AACjG,iGAAiG;AACjG,qGAAqG;AACrG,kGAAkG;AAClG,sGAAsG;AACtG,MAAM,CAAC,MAAM,iBAAiB,GAA+B;IACzD,GAAG,UAAU;IACb,GAAG,SAAS;IACZ,GAAG,aAAa;IAChB,GAAG,QAAQ;IACX,GAAG,iBAAiB;IACpB,GAAG,aAAa;CACnB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"tool-call.js","sourceRoot":"","sources":["../../../../src/cli/connect/tool-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -1360,6 +1360,64 @@ export interface paths {
|
|
|
1360
1360
|
patch?: never;
|
|
1361
1361
|
trace?: never;
|
|
1362
1362
|
};
|
|
1363
|
+
"/v1/llm/chat/completions": {
|
|
1364
|
+
parameters: {
|
|
1365
|
+
query?: never;
|
|
1366
|
+
header?: never;
|
|
1367
|
+
path?: never;
|
|
1368
|
+
cookie?: never;
|
|
1369
|
+
};
|
|
1370
|
+
get?: never;
|
|
1371
|
+
put?: never;
|
|
1372
|
+
/**
|
|
1373
|
+
* One completion, in OpenAI's request shape
|
|
1374
|
+
* @description For an agent that speaks OpenAI's dialect and would otherwise call a provider directly. Point
|
|
1375
|
+
* it at `<node>/v1/llm` as its base URL and every call goes through the same gate
|
|
1376
|
+
* `POST /v1/ai/complete` goes through: the owner's own key first and the node's allowance
|
|
1377
|
+
* second, the daily budget, the per-app quota, the usage record, and the free-model fallback
|
|
1378
|
+
* when the allowance is spent.
|
|
1379
|
+
*
|
|
1380
|
+
* `model` in the request is ignored on purpose. The node is the one that knows whose money this
|
|
1381
|
+
* is and how much is left, so the owner's own preference decides and the node's default for the
|
|
1382
|
+
* role follows; the response says which model actually ran. Honouring the caller's name would
|
|
1383
|
+
* also disable the free-model fallback, which is deliberately left alone for an explicit model.
|
|
1384
|
+
*
|
|
1385
|
+
* `tools`, `tool_choice` and `response_format` pass through untouched — the node has no opinion
|
|
1386
|
+
* about which tools a caller offers its own model. With `stream: true` the provider's own
|
|
1387
|
+
* `text/event-stream` frames are forwarded byte for byte, so any client that understands
|
|
1388
|
+
* OpenAI's stream understands this one.
|
|
1389
|
+
*
|
|
1390
|
+
* Requires an owner session or a token carrying `ai:use`.
|
|
1391
|
+
*/
|
|
1392
|
+
post: operations["llmProxyChatCompletion"];
|
|
1393
|
+
delete?: never;
|
|
1394
|
+
options?: never;
|
|
1395
|
+
head?: never;
|
|
1396
|
+
patch?: never;
|
|
1397
|
+
trace?: never;
|
|
1398
|
+
};
|
|
1399
|
+
"/v1/llm/models": {
|
|
1400
|
+
parameters: {
|
|
1401
|
+
query?: never;
|
|
1402
|
+
header?: never;
|
|
1403
|
+
path?: never;
|
|
1404
|
+
cookie?: never;
|
|
1405
|
+
};
|
|
1406
|
+
/**
|
|
1407
|
+
* The models this node will actually run
|
|
1408
|
+
* @description OpenAI's model-list shape, for a client that asks before it asks for anything else. The list
|
|
1409
|
+
* comes from the provider through the same service the node's own model pickers use, so a model
|
|
1410
|
+
* that appears here is one the node can reach. Requires an owner session or `ai:use`.
|
|
1411
|
+
*/
|
|
1412
|
+
get: operations["llmProxyListModels"];
|
|
1413
|
+
put?: never;
|
|
1414
|
+
post?: never;
|
|
1415
|
+
delete?: never;
|
|
1416
|
+
options?: never;
|
|
1417
|
+
head?: never;
|
|
1418
|
+
patch?: never;
|
|
1419
|
+
trace?: never;
|
|
1420
|
+
};
|
|
1363
1421
|
"/v1/chat/status": {
|
|
1364
1422
|
parameters: {
|
|
1365
1423
|
query?: never;
|
|
@@ -26397,6 +26455,104 @@ export interface operations {
|
|
|
26397
26455
|
404: components["responses"]["NotFound"];
|
|
26398
26456
|
};
|
|
26399
26457
|
};
|
|
26458
|
+
llmProxyChatCompletion: {
|
|
26459
|
+
parameters: {
|
|
26460
|
+
query?: never;
|
|
26461
|
+
header?: never;
|
|
26462
|
+
path?: never;
|
|
26463
|
+
cookie?: never;
|
|
26464
|
+
};
|
|
26465
|
+
requestBody: {
|
|
26466
|
+
content: {
|
|
26467
|
+
"application/json": {
|
|
26468
|
+
/** @description OpenAI chat messages. */
|
|
26469
|
+
messages: Record<string, never>[];
|
|
26470
|
+
/** @description Forward the provider's SSE frames as they arrive. */
|
|
26471
|
+
stream?: boolean;
|
|
26472
|
+
temperature?: number;
|
|
26473
|
+
top_p?: number;
|
|
26474
|
+
max_tokens?: number;
|
|
26475
|
+
tools?: Record<string, never>[];
|
|
26476
|
+
tool_choice?: unknown;
|
|
26477
|
+
response_format?: Record<string, never>;
|
|
26478
|
+
};
|
|
26479
|
+
};
|
|
26480
|
+
};
|
|
26481
|
+
responses: {
|
|
26482
|
+
/** @description An OpenAI chat completion, or its SSE stream when `stream` is true */
|
|
26483
|
+
200: {
|
|
26484
|
+
headers: {
|
|
26485
|
+
[name: string]: unknown;
|
|
26486
|
+
};
|
|
26487
|
+
content: {
|
|
26488
|
+
"application/json": Record<string, never>;
|
|
26489
|
+
"text/event-stream": string;
|
|
26490
|
+
};
|
|
26491
|
+
};
|
|
26492
|
+
/** @description messages is missing, or no key is configured for this owner */
|
|
26493
|
+
400: {
|
|
26494
|
+
headers: {
|
|
26495
|
+
[name: string]: unknown;
|
|
26496
|
+
};
|
|
26497
|
+
content?: never;
|
|
26498
|
+
};
|
|
26499
|
+
401: components["responses"]["Unauthorized"];
|
|
26500
|
+
/** @description The allowance is spent and this node has no free-model fallback configured */
|
|
26501
|
+
402: {
|
|
26502
|
+
headers: {
|
|
26503
|
+
[name: string]: unknown;
|
|
26504
|
+
};
|
|
26505
|
+
content?: never;
|
|
26506
|
+
};
|
|
26507
|
+
/** @description Not an owner session and no ai:use scope */
|
|
26508
|
+
403: {
|
|
26509
|
+
headers: {
|
|
26510
|
+
[name: string]: unknown;
|
|
26511
|
+
};
|
|
26512
|
+
content?: never;
|
|
26513
|
+
};
|
|
26514
|
+
/** @description The model is rate limited. Free models reach this first. */
|
|
26515
|
+
429: {
|
|
26516
|
+
headers: {
|
|
26517
|
+
[name: string]: unknown;
|
|
26518
|
+
};
|
|
26519
|
+
content?: never;
|
|
26520
|
+
};
|
|
26521
|
+
/** @description The model is overloaded, unavailable, or answered with an error */
|
|
26522
|
+
502: {
|
|
26523
|
+
headers: {
|
|
26524
|
+
[name: string]: unknown;
|
|
26525
|
+
};
|
|
26526
|
+
content?: never;
|
|
26527
|
+
};
|
|
26528
|
+
};
|
|
26529
|
+
};
|
|
26530
|
+
llmProxyListModels: {
|
|
26531
|
+
parameters: {
|
|
26532
|
+
query?: never;
|
|
26533
|
+
header?: never;
|
|
26534
|
+
path?: never;
|
|
26535
|
+
cookie?: never;
|
|
26536
|
+
};
|
|
26537
|
+
requestBody?: never;
|
|
26538
|
+
responses: {
|
|
26539
|
+
/** @description `{ object: "list", data: [{ id, object, owned_by }] }` */
|
|
26540
|
+
200: {
|
|
26541
|
+
headers: {
|
|
26542
|
+
[name: string]: unknown;
|
|
26543
|
+
};
|
|
26544
|
+
content?: never;
|
|
26545
|
+
};
|
|
26546
|
+
401: components["responses"]["Unauthorized"];
|
|
26547
|
+
/** @description Not an owner session and no ai:use scope */
|
|
26548
|
+
403: {
|
|
26549
|
+
headers: {
|
|
26550
|
+
[name: string]: unknown;
|
|
26551
|
+
};
|
|
26552
|
+
content?: never;
|
|
26553
|
+
};
|
|
26554
|
+
};
|
|
26555
|
+
};
|
|
26400
26556
|
getChatStatus: {
|
|
26401
26557
|
parameters: {
|
|
26402
26558
|
query?: never;
|