aimeat 1.13.0 → 1.13.3

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 (45) hide show
  1. package/dist/locales/en.json +1 -0
  2. package/dist/locales/fi.json +1 -0
  3. package/dist/public/llms-template.txt +11 -0
  4. package/dist/public/views/profile/generator-settings.js +124 -0
  5. package/dist/src/cli/connect/mcp/tools/core.d.ts +4 -0
  6. package/dist/src/cli/connect/mcp/tools/core.d.ts.map +1 -1
  7. package/dist/src/cli/connect/mcp/tools/core.js +64 -21
  8. package/dist/src/cli/connect/mcp/tools/core.js.map +1 -1
  9. package/dist/src/cli/connect/mcp/tools/handbook.d.ts +4 -0
  10. package/dist/src/cli/connect/mcp/tools/handbook.d.ts.map +1 -1
  11. package/dist/src/cli/connect/mcp/tools/handbook.js +4 -2
  12. package/dist/src/cli/connect/mcp/tools/handbook.js.map +1 -1
  13. package/dist/src/routes/agent-onboarding.d.ts.map +1 -1
  14. package/dist/src/routes/agent-onboarding.js +7 -1
  15. package/dist/src/routes/agent-onboarding.js.map +1 -1
  16. package/dist/src/routes/agent-tasks.d.ts.map +1 -1
  17. package/dist/src/routes/agent-tasks.js +54 -7
  18. package/dist/src/routes/agent-tasks.js.map +1 -1
  19. package/dist/src/routes/ai.d.ts +29 -0
  20. package/dist/src/routes/ai.d.ts.map +1 -0
  21. package/dist/src/routes/ai.js +306 -0
  22. package/dist/src/routes/ai.js.map +1 -0
  23. package/dist/src/routes/lib-ai.d.ts +25 -0
  24. package/dist/src/routes/lib-ai.d.ts.map +1 -0
  25. package/dist/src/routes/lib-ai.js +173 -0
  26. package/dist/src/routes/lib-ai.js.map +1 -0
  27. package/dist/src/routes/libs.d.ts +4 -0
  28. package/dist/src/routes/libs.d.ts.map +1 -1
  29. package/dist/src/routes/libs.js +17 -0
  30. package/dist/src/routes/libs.js.map +1 -1
  31. package/dist/src/server-bootstrap/routes-loader.d.ts.map +1 -1
  32. package/dist/src/server-bootstrap/routes-loader.js +2 -0
  33. package/dist/src/server-bootstrap/routes-loader.js.map +1 -1
  34. package/dist/src/services/openrouter.d.ts +15 -0
  35. package/dist/src/services/openrouter.d.ts.map +1 -1
  36. package/dist/src/services/openrouter.js +12 -1
  37. package/dist/src/services/openrouter.js.map +1 -1
  38. package/dist/src/services/skill-bundle/generic-adapter.d.ts +10 -1
  39. package/dist/src/services/skill-bundle/generic-adapter.d.ts.map +1 -1
  40. package/dist/src/services/skill-bundle/generic-adapter.js +27 -2
  41. package/dist/src/services/skill-bundle/generic-adapter.js.map +1 -1
  42. package/dist/src/services/skill-bundle/hermes-adapter.d.ts.map +1 -1
  43. package/dist/src/services/skill-bundle/hermes-adapter.js +7 -2
  44. package/dist/src/services/skill-bundle/hermes-adapter.js.map +1 -1
  45. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tasks.d.ts","sourceRoot":"","sources":["../../../src/routes/agent-tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAkD,MAAM,yBAAyB,CAAC;AASvG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAEjF,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,MAAM,CA+oBtH"}
1
+ {"version":3,"file":"agent-tasks.d.ts","sourceRoot":"","sources":["../../../src/routes/agent-tasks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAkD,MAAM,yBAAyB,CAAC;AASvG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAEjF,KAAK,iBAAiB,GAAG,UAAU,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAEpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAgsBtH"}
@@ -303,7 +303,7 @@ export function agentTasksRouter(config, storage, webhookDispatcher) {
303
303
  res.json(success(config.nodeId, { deleted: true }));
304
304
  emitChange('agent-tasks');
305
305
  });
306
- /* ── POST /v1/agents/:name/tasks/:id/start -- Start task (queued -> active) ── */
306
+ /* ── POST /v1/agents/:name/tasks/:id/start -- Start task (queued|paused|stalled -> active) ── */
307
307
  router.post('/v1/agents/:name/tasks/:id/start', requireAuth(), async (req, res) => {
308
308
  // Owner-only: agents must not self-start tasks (propose-before-start rule)
309
309
  const isOwner = req.auth.roles.includes('owner') && !req.auth.roles.includes('agent');
@@ -321,8 +321,14 @@ export function agentTasksRouter(config, storage, webhookDispatcher) {
321
321
  res.status(403).json(error(config.nodeId, 'FORBIDDEN', 'Access denied'));
322
322
  return;
323
323
  }
324
- if (task.status !== 'queued' && task.status !== 'paused') {
325
- res.status(409).json(error(config.nodeId, 'INVALID_STATE', `Only queued or paused tasks can be started (current: ${task.status})`));
324
+ // Allow recovery from 'stalled': the stall detector marks tasks as stalled
325
+ // when they go quiet for too long, but a stalled task is not a failed task
326
+ // -- the agent may have crashed, been killed, or have lost its tokens. The
327
+ // owner can re-start a stalled task to give the agent another chance
328
+ // (typical scenario: onboarding test task stalls because the agent
329
+ // subprocess died mid-flow; the owner fixes the subprocess and re-starts).
330
+ if (task.status !== 'queued' && task.status !== 'paused' && task.status !== 'stalled') {
331
+ res.status(409).json(error(config.nodeId, 'INVALID_STATE', `Only queued, paused, or stalled tasks can be started (current: ${task.status})`));
326
332
  return;
327
333
  }
328
334
  const now = new Date().toISOString();
@@ -421,6 +427,24 @@ export function agentTasksRouter(config, storage, webhookDispatcher) {
421
427
  res.status(403).json(error(config.nodeId, 'FORBIDDEN', 'Access denied'));
422
428
  return;
423
429
  }
430
+ // Stalled tasks are reactivated automatically when an event arrives:
431
+ // the stall-detector marks tasks as stalled when no events come in for
432
+ // a while, but if the agent posts an event now, it's evidently back and
433
+ // the task should resume. This avoids needing a separate "restart"
434
+ // endpoint for the common case of an agent that briefly crashed or lost
435
+ // connectivity and then recovered.
436
+ if (task.status === 'stalled') {
437
+ const resumeNow = new Date().toISOString();
438
+ await storage.updateAgentTask(id, { status: 'active', lastEventAt: resumeNow, updatedAt: resumeNow });
439
+ await storage.appendTaskEvent({
440
+ id: randomUUID(),
441
+ taskId: id,
442
+ type: 'started',
443
+ message: 'Task auto-resumed from stalled (agent posted a new event)',
444
+ timestamp: resumeNow,
445
+ });
446
+ task.status = 'active';
447
+ }
424
448
  if (task.status !== 'active') {
425
449
  res.status(409).json(error(config.nodeId, 'INVALID_STATE', `Events can only be appended to active tasks (current: ${task.status})`));
426
450
  return;
@@ -471,8 +495,14 @@ export function agentTasksRouter(config, storage, webhookDispatcher) {
471
495
  res.status(403).json(error(config.nodeId, 'FORBIDDEN', 'Access denied'));
472
496
  return;
473
497
  }
474
- if (task.status !== 'active') {
475
- res.status(409).json(error(config.nodeId, 'INVALID_STATE', `Only active tasks can be completed (current: ${task.status})`));
498
+ // Allow completing from 'stalled' as well: if the agent comes back with
499
+ // a deliverable after a stall, accept it -- a late deliverable is more
500
+ // useful than rejecting the agent's work because the stall detector flipped
501
+ // the state. Active -> done and stalled -> done are both valid completion
502
+ // paths; failed/done/draft/queued/paused are not (those need explicit
503
+ // owner-driven transitions, e.g. /start, before they can complete).
504
+ if (task.status !== 'active' && task.status !== 'stalled') {
505
+ res.status(409).json(error(config.nodeId, 'INVALID_STATE', `Only active or stalled tasks can be completed (current: ${task.status})`));
476
506
  return;
477
507
  }
478
508
  const now = new Date().toISOString();
@@ -506,8 +536,11 @@ export function agentTasksRouter(config, storage, webhookDispatcher) {
506
536
  res.status(403).json(error(config.nodeId, 'FORBIDDEN', 'Access denied'));
507
537
  return;
508
538
  }
509
- if (task.status !== 'active') {
510
- res.status(409).json(error(config.nodeId, 'INVALID_STATE', `Only active tasks can be failed (current: ${task.status})`));
539
+ // Stalled tasks can also be marked failed -- e.g. the agent realises it
540
+ // can't recover and explicitly reports failure rather than letting the
541
+ // task linger in stalled state forever.
542
+ if (task.status !== 'active' && task.status !== 'stalled') {
543
+ res.status(409).json(error(config.nodeId, 'INVALID_STATE', `Only active or stalled tasks can be failed (current: ${task.status})`));
511
544
  return;
512
545
  }
513
546
  const now = new Date().toISOString();
@@ -542,6 +575,20 @@ export function agentTasksRouter(config, storage, webhookDispatcher) {
542
575
  res.status(403).json(error(config.nodeId, 'FORBIDDEN', 'Access denied'));
543
576
  return;
544
577
  }
578
+ // Stalled tasks accept todo updates too: same auto-resume semantics as
579
+ // events -- if the agent is updating todos, it's clearly back.
580
+ if (task.status === 'stalled') {
581
+ const resumeNow = new Date().toISOString();
582
+ await storage.updateAgentTask(id, { status: 'active', lastEventAt: resumeNow, updatedAt: resumeNow });
583
+ await storage.appendTaskEvent({
584
+ id: randomUUID(),
585
+ taskId: id,
586
+ type: 'started',
587
+ message: 'Task auto-resumed from stalled (agent updated a todo)',
588
+ timestamp: resumeNow,
589
+ });
590
+ task.status = 'active';
591
+ }
545
592
  if (task.status !== 'active') {
546
593
  res.status(409).json(error(config.nodeId, 'INVALID_STATE', `Todo updates are only allowed on active tasks (current: ${task.status})`));
547
594
  return;
@@ -1 +1 @@
1
- {"version":3,"file":"agent-tasks.js","sourceRoot":"","sources":["../../../src/routes/agent-tasks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent-tasks.js","sourceRoot":"","sources":["../../../src/routes/agent-tasks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /**
2
+ * @file ai.ts
3
+ * @description App-level AI completion endpoint. Sibling of /v1/openrouter/complete
4
+ * but without the project-id gate: any logged-in owner (or agent with `ai:use`
5
+ * scope) can call it from a sandboxed app or extension. Spend is bounded by:
6
+ * - per-user daily USD budget (default $1, configurable in
7
+ * openrouter.settings.daily_budget_usd)
8
+ * - optional per-app daily USD quota
9
+ * (openrouter.settings.app_quotas[app_id].daily_usd, default $0.10)
10
+ * - optional app allowlist (openrouter.settings.app_allowlist) — if set,
11
+ * only listed apps may call.
12
+ * The user's encrypted OpenRouter (or compatible) key from
13
+ * /v1/openrouter/settings is reused unchanged.
14
+ * @structure
15
+ * - POST /v1/ai/complete — owner or agent(ai:use), runs one completion
16
+ * - GET /v1/ai/usage — owner-only, today's spend per-app breakdown
17
+ * - POST /v1/ai/settings — owner-only, update budget/quotas/allowlist
18
+ * - GET /v1/ai/settings — owner-only, read budget/quotas/allowlist
19
+ * @usage
20
+ * import { aiRouter } from './routes/ai.js';
21
+ * app.use(aiRouter(config, storage));
22
+ * @version-history
23
+ * v1.0.0 — 2026-05-29 — Initial: app-level AI calls with budget enforcement
24
+ */
25
+ import { Router } from 'express';
26
+ import type { AimeatConfig } from '../config.js';
27
+ import type { Storage } from '../storage/interface.js';
28
+ export declare function aiRouter(config: AimeatConfig, storage: Storage): Router;
29
+ //# sourceMappingURL=ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../../src/routes/ai.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAkDvD,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CA4RvE"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * @file ai.ts
3
+ * @description App-level AI completion endpoint. Sibling of /v1/openrouter/complete
4
+ * but without the project-id gate: any logged-in owner (or agent with `ai:use`
5
+ * scope) can call it from a sandboxed app or extension. Spend is bounded by:
6
+ * - per-user daily USD budget (default $1, configurable in
7
+ * openrouter.settings.daily_budget_usd)
8
+ * - optional per-app daily USD quota
9
+ * (openrouter.settings.app_quotas[app_id].daily_usd, default $0.10)
10
+ * - optional app allowlist (openrouter.settings.app_allowlist) — if set,
11
+ * only listed apps may call.
12
+ * The user's encrypted OpenRouter (or compatible) key from
13
+ * /v1/openrouter/settings is reused unchanged.
14
+ * @structure
15
+ * - POST /v1/ai/complete — owner or agent(ai:use), runs one completion
16
+ * - GET /v1/ai/usage — owner-only, today's spend per-app breakdown
17
+ * - POST /v1/ai/settings — owner-only, update budget/quotas/allowlist
18
+ * - GET /v1/ai/settings — owner-only, read budget/quotas/allowlist
19
+ * @usage
20
+ * import { aiRouter } from './routes/ai.js';
21
+ * app.use(aiRouter(config, storage));
22
+ * @version-history
23
+ * v1.0.0 — 2026-05-29 — Initial: app-level AI calls with budget enforcement
24
+ */
25
+ import { Router } from 'express';
26
+ import { requireAuth, requireRole } from '../auth/middleware.js';
27
+ import { rateLimit } from '../middleware/rate-limit.js';
28
+ import { success, error } from '../middleware/envelope.js';
29
+ import { resolveIdentity } from '../utils/gaii.js';
30
+ import { decrypt, getEncryptionKey } from '../services/encryption.js';
31
+ import { logger } from '../utils/logger.js';
32
+ import { complete } from '../services/openrouter.js';
33
+ const DEFAULT_BASE_URLS = {
34
+ openrouter: 'https://openrouter.ai/api/v1',
35
+ lmstudio: 'http://localhost:1234/v1',
36
+ custom: '',
37
+ };
38
+ /**
39
+ * Rough cost estimate when the provider didn't report one (LM Studio, custom).
40
+ * Claude Sonnet-ish pricing as a ceiling — apps relying on this exact number
41
+ * are doing it wrong (the user's OpenRouter dashboard is authoritative).
42
+ * Budgets exist to prevent runaways, not to bill.
43
+ */
44
+ const FALLBACK_PROMPT_COST_PER_TOKEN = 0.000005;
45
+ const FALLBACK_COMPLETION_COST_PER_TOKEN = 0.000015;
46
+ /** Defaults applied when the user hasn't set explicit values. */
47
+ const DEFAULT_DAILY_BUDGET_USD = 1.0;
48
+ const DEFAULT_APP_DAILY_USD = 0.10;
49
+ /** Hard server-side cap on max_tokens regardless of what the caller asks. */
50
+ const MAX_TOKENS_CEILING = 4000;
51
+ function todayKey() {
52
+ return new Date().toISOString().slice(0, 10);
53
+ }
54
+ function estimateCostUsd(promptTokens, completionTokens) {
55
+ return promptTokens * FALLBACK_PROMPT_COST_PER_TOKEN
56
+ + completionTokens * FALLBACK_COMPLETION_COST_PER_TOKEN;
57
+ }
58
+ export function aiRouter(config, storage) {
59
+ const router = Router();
60
+ const resolve = (req) => resolveIdentity(req.auth, config.nodeId);
61
+ // Reuse the openrouter rate limit bucket — same provider, same spend concerns.
62
+ const aiRateLimit = rateLimit(config.rateLimits.openrouter);
63
+ function requireEncryption(res) {
64
+ const key = getEncryptionKey(config);
65
+ if (!key) {
66
+ res.status(503).json(error(config.nodeId, 'ENCRYPTION_NOT_CONFIGURED', 'Encryption key not configured. Set AIMEAT_ENCRYPTION_KEY or AIMEAT_TOTP_ENCRYPTION_KEY.'));
67
+ return null;
68
+ }
69
+ return key;
70
+ }
71
+ async function upsertMemory(gaii, key, value, tags) {
72
+ const now = new Date().toISOString();
73
+ const existing = await storage.getMemory(gaii, key);
74
+ await storage.setMemory({
75
+ key, ownerGaii: gaii, value, visibility: 'private', tags,
76
+ ttlHours: null,
77
+ version: existing ? existing.version + 1 : 1,
78
+ createdAt: existing?.createdAt ?? now,
79
+ updatedAt: now,
80
+ });
81
+ }
82
+ /**
83
+ * Either the caller is an owner JWT (role=owner) OR an agent JWT with the
84
+ * `ai:use` scope. Reject any other shape.
85
+ */
86
+ function gateOwnerOrAiUseAgent(req, res) {
87
+ const roles = req.auth?.roles ?? [];
88
+ if (roles.includes('owner'))
89
+ return true;
90
+ if (roles.includes('agent')) {
91
+ const scopes = req.auth?.scopes ?? [];
92
+ if (scopes.includes('ai:use') || scopes.includes('*'))
93
+ return true;
94
+ res.status(403).json(error(config.nodeId, 'SCOPE_REQUIRED', 'Agent JWT missing required scope: ai:use'));
95
+ return false;
96
+ }
97
+ res.status(403).json(error(config.nodeId, 'FORBIDDEN', 'AI completion requires owner or agent(ai:use) authentication.'));
98
+ return false;
99
+ }
100
+ // ── POST /v1/ai/complete ──
101
+ router.post('/v1/ai/complete', requireAuth(), aiRateLimit, async (req, res) => {
102
+ if (!gateOwnerOrAiUseAgent(req, res))
103
+ return;
104
+ req.setTimeout(1_800_000);
105
+ res.setTimeout(1_800_000);
106
+ const gaii = resolve(req);
107
+ const { prompt, systemPrompt, model: modelOverride, modelRole, temperature, top_p, max_tokens, app_id, } = req.body;
108
+ if (!prompt || typeof prompt !== 'string') {
109
+ return res.status(400).json(error(config.nodeId, 'INVALID_BODY', 'prompt is required.'));
110
+ }
111
+ if (prompt.length > 200_000) {
112
+ return res.status(400).json(error(config.nodeId, 'PROMPT_TOO_LONG', 'prompt exceeds 200k characters.'));
113
+ }
114
+ // ── Load settings + today's usage + decrypt key ──
115
+ const [apiKeyRecord, prefsRecord, usageRecord] = await Promise.all([
116
+ storage.getMemory(gaii, 'openrouter.apikey'),
117
+ storage.getMemory(gaii, 'openrouter.settings'),
118
+ storage.getMemory(gaii, `ai-usage.${gaii}.${todayKey()}`),
119
+ ]);
120
+ const prefs = prefsRecord?.value ?? {};
121
+ const provider = prefs.provider || 'openrouter';
122
+ const baseUrl = prefs.baseUrl || DEFAULT_BASE_URLS[provider];
123
+ // ── App allowlist check (if configured) ──
124
+ const allowlist = Array.isArray(prefs.app_allowlist) ? prefs.app_allowlist : null;
125
+ if (allowlist && app_id && !allowlist.includes(app_id)) {
126
+ return res.status(403).json(error(config.nodeId, 'APP_NOT_ALLOWED', `App "${app_id}" is not in your AI allowlist. Enable it from Settings.`));
127
+ }
128
+ if (allowlist && !app_id) {
129
+ // If user has an allowlist but the call has no app_id, refuse — we
130
+ // can't attribute it to anything they've approved.
131
+ return res.status(403).json(error(config.nodeId, 'APP_ID_REQUIRED', 'app_id is required because you have configured an AI app allowlist.'));
132
+ }
133
+ // ── Decrypt key (optional for non-openrouter providers) ──
134
+ let decryptedKey;
135
+ const encrypted = apiKeyRecord?.value?.encrypted;
136
+ if (encrypted) {
137
+ const encKey = requireEncryption(res);
138
+ if (!encKey)
139
+ return;
140
+ decryptedKey = decrypt(encrypted, encKey);
141
+ }
142
+ else if (provider === 'openrouter') {
143
+ return res.status(400).json(error(config.nodeId, 'NO_API_KEY', 'No OpenRouter API key configured. Set one in Settings.'));
144
+ }
145
+ // ── Budget check ──
146
+ const usage = usageRecord?.value ?? {
147
+ date: todayKey(), total_cost_usd: 0, total_calls: 0, total_tokens: 0,
148
+ per_app: {}, updated_at: new Date().toISOString(),
149
+ };
150
+ const dailyBudget = typeof prefs.daily_budget_usd === 'number'
151
+ ? prefs.daily_budget_usd
152
+ : DEFAULT_DAILY_BUDGET_USD;
153
+ if (usage.total_cost_usd >= dailyBudget) {
154
+ return res.status(402).json(error(config.nodeId, 'QUOTA_EXHAUSTED', `Daily AI budget hit ($${usage.total_cost_usd.toFixed(4)} / $${dailyBudget}). Raise it in Settings or wait until midnight UTC.`));
155
+ }
156
+ // Per-app quota
157
+ const appQuotas = prefs.app_quotas ?? {};
158
+ if (app_id) {
159
+ const appQuota = appQuotas[app_id]?.daily_usd ?? DEFAULT_APP_DAILY_USD;
160
+ const appSpent = usage.per_app[app_id]?.cost_usd ?? 0;
161
+ if (appSpent >= appQuota) {
162
+ return res.status(402).json(error(config.nodeId, 'APP_QUOTA_EXHAUSTED', `Daily AI quota for "${app_id}" hit ($${appSpent.toFixed(4)} / $${appQuota}). Raise it in Settings.`));
163
+ }
164
+ }
165
+ // ── Model selection ──
166
+ let selectedModel;
167
+ if (typeof modelOverride === 'string' && modelOverride) {
168
+ selectedModel = modelOverride;
169
+ }
170
+ else if (modelRole === 'reasoning' && prefs.reasoningModel) {
171
+ selectedModel = prefs.reasoningModel;
172
+ }
173
+ else if (modelRole === 'execution' && prefs.executionModel) {
174
+ selectedModel = prefs.executionModel;
175
+ }
176
+ else {
177
+ selectedModel = prefs.model
178
+ || prefs.executionModel
179
+ || prefs.reasoningModel
180
+ || 'anthropic/claude-sonnet-4';
181
+ }
182
+ // Server-side hard ceiling on max_tokens regardless of caller.
183
+ const cappedMaxTokens = max_tokens === undefined
184
+ ? undefined
185
+ : Math.min(Math.max(1, max_tokens | 0), MAX_TOKENS_CEILING);
186
+ const options = {
187
+ temperature: temperature ?? (typeof prefs.temperature === 'number' ? prefs.temperature : undefined),
188
+ top_p: top_p ?? (typeof prefs.top_p === 'number' ? prefs.top_p : undefined),
189
+ max_tokens: cappedMaxTokens ?? (typeof prefs.max_tokens === 'number'
190
+ ? Math.min(prefs.max_tokens, MAX_TOKENS_CEILING)
191
+ : undefined),
192
+ };
193
+ try {
194
+ const result = await complete(decryptedKey, selectedModel, prompt, systemPrompt, baseUrl, options);
195
+ const promptTok = result.usage?.prompt_tokens ?? 0;
196
+ const completionTok = result.usage?.completion_tokens ?? 0;
197
+ const totalTok = result.usage?.total_tokens ?? (promptTok + completionTok);
198
+ const costUsd = typeof result.usage?.cost_usd === 'number'
199
+ ? result.usage.cost_usd
200
+ : estimateCostUsd(promptTok, completionTok);
201
+ // ── Record usage (idempotent within the day) ──
202
+ const updated = {
203
+ date: todayKey(),
204
+ total_cost_usd: usage.total_cost_usd + costUsd,
205
+ total_calls: usage.total_calls + 1,
206
+ total_tokens: usage.total_tokens + totalTok,
207
+ per_app: { ...usage.per_app },
208
+ updated_at: new Date().toISOString(),
209
+ };
210
+ const appKey = app_id || '_unknown';
211
+ const existing = updated.per_app[appKey] ?? { cost_usd: 0, calls: 0, tokens: 0 };
212
+ updated.per_app[appKey] = {
213
+ cost_usd: existing.cost_usd + costUsd,
214
+ calls: existing.calls + 1,
215
+ tokens: existing.tokens + totalTok,
216
+ };
217
+ await upsertMemory(gaii, `ai-usage.${gaii}.${todayKey()}`, updated, ['ai', 'usage']);
218
+ logger.info(`[ai] gaii=${gaii} app=${app_id ?? '_unknown'} model=${result.model} tokens=${totalTok} cost=$${costUsd.toFixed(4)} day_total=$${updated.total_cost_usd.toFixed(4)}`);
219
+ res.json(success(config.nodeId, {
220
+ content: result.content,
221
+ model: result.model,
222
+ usage: {
223
+ prompt_tokens: promptTok,
224
+ completion_tokens: completionTok,
225
+ total_tokens: totalTok,
226
+ cost_usd: costUsd,
227
+ cost_exact: typeof result.usage?.cost_usd === 'number',
228
+ },
229
+ budget: {
230
+ daily_budget_usd: dailyBudget,
231
+ spent_today_usd: updated.total_cost_usd,
232
+ remaining_usd: Math.max(0, dailyBudget - updated.total_cost_usd),
233
+ },
234
+ }));
235
+ }
236
+ catch (e) {
237
+ const status = e.status;
238
+ if (status === 401) {
239
+ return res.status(401).json(error(config.nodeId, 'INVALID_API_KEY', 'API key was rejected by the provider.'));
240
+ }
241
+ if (status === 429) {
242
+ return res.status(429).json(error(config.nodeId, 'RATE_LIMITED', 'Provider rate limit hit. Try again later.'));
243
+ }
244
+ return res.status(502).json(error(config.nodeId, 'PROVIDER_ERROR', e.message));
245
+ }
246
+ });
247
+ // ── GET /v1/ai/usage ── today's spend breakdown
248
+ router.get('/v1/ai/usage', requireAuth(), requireRole('owner'), async (req, res) => {
249
+ const gaii = resolve(req);
250
+ const rec = await storage.getMemory(gaii, `ai-usage.${gaii}.${todayKey()}`);
251
+ const usage = rec?.value ?? {
252
+ date: todayKey(), total_cost_usd: 0, total_calls: 0, total_tokens: 0, per_app: {}, updated_at: new Date().toISOString(),
253
+ };
254
+ const prefsRecord = await storage.getMemory(gaii, 'openrouter.settings');
255
+ const prefs = prefsRecord?.value ?? {};
256
+ const dailyBudget = typeof prefs.daily_budget_usd === 'number'
257
+ ? prefs.daily_budget_usd
258
+ : DEFAULT_DAILY_BUDGET_USD;
259
+ res.json(success(config.nodeId, {
260
+ date: usage.date,
261
+ daily_budget_usd: dailyBudget,
262
+ spent_today_usd: usage.total_cost_usd,
263
+ remaining_usd: Math.max(0, dailyBudget - usage.total_cost_usd),
264
+ total_calls: usage.total_calls,
265
+ total_tokens: usage.total_tokens,
266
+ per_app: usage.per_app,
267
+ }));
268
+ });
269
+ // ── GET /v1/ai/settings ──
270
+ router.get('/v1/ai/settings', requireAuth(), requireRole('owner'), async (req, res) => {
271
+ const gaii = resolve(req);
272
+ const prefsRecord = await storage.getMemory(gaii, 'openrouter.settings');
273
+ const prefs = prefsRecord?.value ?? {};
274
+ res.json(success(config.nodeId, {
275
+ daily_budget_usd: typeof prefs.daily_budget_usd === 'number' ? prefs.daily_budget_usd : DEFAULT_DAILY_BUDGET_USD,
276
+ app_quotas: prefs.app_quotas ?? {},
277
+ app_allowlist: Array.isArray(prefs.app_allowlist) ? prefs.app_allowlist : null,
278
+ defaults: {
279
+ daily_budget_usd: DEFAULT_DAILY_BUDGET_USD,
280
+ per_app_daily_usd: DEFAULT_APP_DAILY_USD,
281
+ max_tokens_ceiling: MAX_TOKENS_CEILING,
282
+ },
283
+ }));
284
+ });
285
+ // ── POST /v1/ai/settings ── update budget/quotas/allowlist
286
+ router.post('/v1/ai/settings', requireAuth(), requireRole('owner'), async (req, res) => {
287
+ const gaii = resolve(req);
288
+ const { daily_budget_usd, app_quotas, app_allowlist } = req.body;
289
+ const prefsRecord = await storage.getMemory(gaii, 'openrouter.settings');
290
+ const prefs = { ...(prefsRecord?.value ?? {}) };
291
+ if (typeof daily_budget_usd === 'number') {
292
+ if (daily_budget_usd < 0 || daily_budget_usd > 1000) {
293
+ return res.status(400).json(error(config.nodeId, 'INVALID_BUDGET', 'daily_budget_usd must be between 0 and 1000.'));
294
+ }
295
+ prefs.daily_budget_usd = daily_budget_usd;
296
+ }
297
+ if (app_quotas !== undefined)
298
+ prefs.app_quotas = app_quotas;
299
+ if (app_allowlist !== undefined)
300
+ prefs.app_allowlist = app_allowlist;
301
+ await upsertMemory(gaii, 'openrouter.settings', prefs, ['openrouter', 'settings']);
302
+ res.json(success(config.nodeId, { saved: true }));
303
+ });
304
+ return router;
305
+ }
306
+ //# sourceMappingURL=ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai.js","sourceRoot":"","sources":["../../../src/routes/ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { AimeatConfig } from '../config.js';
2
+ /**
3
+ * aimeat-ai.js — Browser-side AI capability that uses the user's own
4
+ * OpenRouter (or compatible) API key, configured once via AIMEAT Settings.
5
+ *
6
+ * Apps detect availability and surface "✨ Use AI" affordances:
7
+ * const ok = await AIMEAT.ai.isAvailable();
8
+ * if (ok) document.getElementById('suggest').onclick = async () => {
9
+ * const r = await AIMEAT.ai.complete({
10
+ * prompt: 'Suggest 5 short genre tags for:\n' + summary,
11
+ * modelRole: 'execution',
12
+ * max_tokens: 60,
13
+ * app_id: 'my-app-name', // for per-app spend tracking
14
+ * });
15
+ * output.value = r.content;
16
+ * };
17
+ *
18
+ * The user's key never leaves the AIMEAT server. Errors are thrown with a
19
+ * descriptive `.code` (e.g. NO_API_KEY, QUOTA_EXHAUSTED, APP_NOT_ALLOWED) so
20
+ * apps can show actionable messages.
21
+ *
22
+ * Requires aimeat-auth.js loaded first.
23
+ */
24
+ export declare function aimeatAiLib(config: AimeatConfig): string;
25
+ //# sourceMappingURL=lib-ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib-ai.d.ts","sourceRoot":"","sources":["../../../src/routes/lib-ai.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAqJxD"}