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.
Files changed (55) hide show
  1. package/README.md +1 -1
  2. package/dist/build-stamp.json +4 -4
  3. package/dist/scripts/audit-mcp-schemas.js +10 -1
  4. package/dist/scripts/audit-mcp-schemas.js.map +1 -1
  5. package/dist/scripts/check-ai-disclosure.d.ts +1 -1
  6. package/dist/scripts/check-ai-disclosure.d.ts.map +1 -1
  7. package/dist/scripts/check-ai-disclosure.js +19 -3
  8. package/dist/scripts/check-ai-disclosure.js.map +1 -1
  9. package/dist/src/auth/ai-gate.d.ts +25 -0
  10. package/dist/src/auth/ai-gate.d.ts.map +1 -0
  11. package/dist/src/auth/ai-gate.js +21 -0
  12. package/dist/src/auth/ai-gate.js.map +1 -0
  13. package/dist/src/cli/connect/tool-call-defs-agent.d.ts.map +1 -1
  14. package/dist/src/cli/connect/tool-call-defs-agent.js +38 -9
  15. package/dist/src/cli/connect/tool-call-defs-agent.js.map +1 -1
  16. package/dist/src/cli/connect/tool-call-defs-apps.d.ts.map +1 -1
  17. package/dist/src/cli/connect/tool-call-defs-apps.js +114 -25
  18. package/dist/src/cli/connect/tool-call-defs-apps.js.map +1 -1
  19. package/dist/src/cli/connect/tool-call-defs-core.d.ts.map +1 -1
  20. package/dist/src/cli/connect/tool-call-defs-core.js +149 -26
  21. package/dist/src/cli/connect/tool-call-defs-core.js.map +1 -1
  22. package/dist/src/cli/connect/tool-call-defs-organism.d.ts.map +1 -1
  23. package/dist/src/cli/connect/tool-call-defs-organism.js +20 -3
  24. package/dist/src/cli/connect/tool-call-defs-organism.js.map +1 -1
  25. package/dist/src/cli/connect/tool-call.d.ts.map +1 -1
  26. package/dist/src/cli/connect/tool-call.js +50 -1
  27. package/dist/src/cli/connect/tool-call.js.map +1 -1
  28. package/dist/src/generated/api-types.d.ts +156 -0
  29. package/dist/src/generated/api-types.d.ts.map +1 -1
  30. package/dist/src/routes/ai.d.ts.map +1 -1
  31. package/dist/src/routes/ai.js +4 -15
  32. package/dist/src/routes/ai.js.map +1 -1
  33. package/dist/src/routes/llm-proxy.d.ts +34 -0
  34. package/dist/src/routes/llm-proxy.d.ts.map +1 -0
  35. package/dist/src/routes/llm-proxy.js +258 -0
  36. package/dist/src/routes/llm-proxy.js.map +1 -0
  37. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  38. package/dist/src/server-bootstrap/routes-loader.js +2 -0
  39. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  40. package/dist/src/services/ai-completion.d.ts +76 -0
  41. package/dist/src/services/ai-completion.d.ts.map +1 -1
  42. package/dist/src/services/ai-completion.js +104 -68
  43. package/dist/src/services/ai-completion.js.map +1 -1
  44. package/dist/src/services/openrouter.d.ts +23 -0
  45. package/dist/src/services/openrouter.d.ts.map +1 -1
  46. package/dist/src/services/openrouter.js +32 -1
  47. package/dist/src/services/openrouter.js.map +1 -1
  48. package/dist/src/storage/providers/postgres-kysely/methods/wallet.d.ts.map +1 -1
  49. package/dist/src/storage/providers/postgres-kysely/methods/wallet.js +23 -4
  50. package/dist/src/storage/providers/postgres-kysely/methods/wallet.js.map +1 -1
  51. package/dist/src/storage/providers/sqlite/methods/work.d.ts +5 -0
  52. package/dist/src/storage/providers/sqlite/methods/work.d.ts.map +1 -1
  53. package/dist/src/storage/providers/sqlite/methods/work.js +34 -22
  54. package/dist/src/storage/providers/sqlite/methods/work.js.map +1 -1
  55. 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":"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"}
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;