@deeprelay/mcp 0.1.1 → 0.2.0

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 (49) hide show
  1. package/README.md +41 -14
  2. package/dist/auth.d.ts +6 -0
  3. package/dist/auth.js +16 -0
  4. package/dist/auth.js.map +1 -1
  5. package/dist/guardrail/estimate.d.ts +23 -2
  6. package/dist/guardrail/estimate.js +54 -12
  7. package/dist/guardrail/estimate.js.map +1 -1
  8. package/dist/roster.d.ts +3 -3
  9. package/dist/roster.js +71 -0
  10. package/dist/roster.js.map +1 -1
  11. package/dist/tools/api-json.d.ts +5 -0
  12. package/dist/tools/api-json.js +15 -0
  13. package/dist/tools/api-json.js.map +1 -0
  14. package/dist/tools/readonly/alerts.d.ts +26 -0
  15. package/dist/tools/readonly/alerts.js +58 -0
  16. package/dist/tools/readonly/alerts.js.map +1 -0
  17. package/dist/tools/readonly/define.d.ts +12 -1
  18. package/dist/tools/readonly/define.js +17 -3
  19. package/dist/tools/readonly/define.js.map +1 -1
  20. package/dist/tools/readonly/index.d.ts +3 -1
  21. package/dist/tools/readonly/index.js +90 -23
  22. package/dist/tools/readonly/index.js.map +1 -1
  23. package/dist/tools/readonly/requests.d.ts +78 -0
  24. package/dist/tools/readonly/requests.js +195 -0
  25. package/dist/tools/readonly/requests.js.map +1 -0
  26. package/dist/tools/readonly/usage.js +48 -11
  27. package/dist/tools/readonly/usage.js.map +1 -1
  28. package/dist/tools/readonly/video-reads.js +7 -4
  29. package/dist/tools/readonly/video-reads.js.map +1 -1
  30. package/dist/tools/spend/define.js +3 -1
  31. package/dist/tools/spend/define.js.map +1 -1
  32. package/dist/tools/spend/index.d.ts +2 -0
  33. package/dist/tools/spend/index.js +181 -30
  34. package/dist/tools/spend/index.js.map +1 -1
  35. package/dist/tools/spend/media.js +7 -5
  36. package/dist/tools/spend/media.js.map +1 -1
  37. package/dist/tools/spend/pricing.js +4 -0
  38. package/dist/tools/spend/pricing.js.map +1 -1
  39. package/dist/tools/write/alerts.d.ts +4 -0
  40. package/dist/tools/write/alerts.js +141 -0
  41. package/dist/tools/write/alerts.js.map +1 -0
  42. package/dist/tools/write/index.d.ts +2 -1
  43. package/dist/tools/write/index.js +10 -3
  44. package/dist/tools/write/index.js.map +1 -1
  45. package/dist/tools/write/payment-links.js +26 -4
  46. package/dist/tools/write/payment-links.js.map +1 -1
  47. package/dist/tools/write/spending-limit.js +26 -33
  48. package/dist/tools/write/spending-limit.js.map +1 -1
  49. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mediaSpendTools = exports.spendTools = exports.EMBEDDINGS_MAX_INPUTS = exports.CHAT_MAX_TOKENS_LIMIT = exports.SPEND_TIER_SENTENCE = exports.SPEND_CONFIRMATION_SHAPE = exports.runWithBudget = exports.defineSpendTool = exports.confirmThenExecute = void 0;
3
+ exports.mediaSpendTools = exports.spendTools = exports.EMBEDDINGS_MAX_INPUTS = exports.CHAT_MAX_TOOLS = exports.CHAT_MAX_TOKENS_LIMIT = exports.SPEND_TIER_SENTENCE = exports.SPEND_CONFIRMATION_SHAPE = exports.runWithBudget = exports.defineSpendTool = exports.confirmThenExecute = void 0;
4
4
  // The spend tier: billable inference (Phase 104, D-02/D-06/D-07/D-08/D-10).
5
5
  //
6
6
  // Four tools, one session budget. Chat and embeddings are defined here; image
@@ -13,10 +13,19 @@ exports.mediaSpendTools = exports.spendTools = exports.EMBEDDINGS_MAX_INPUTS = e
13
13
  // reservation if the call throws. They send no Idempotency-Key: the API does
14
14
  // not accept one on these routes (RESEARCH Pitfall 3).
15
15
  //
16
- // The chat schema deliberately has no `tools` / `response_format`: the API
17
- // passthrough for them has not landed (CONTEXT, Claude's Discretion), and
18
- // `stream` is not an argument: the tool always sends stream: false, because an
19
- // MCP tool result is one message.
16
+ // The chat tool carries the OpenAI-compatible request fields an agent needs
17
+ // beyond plain text (tools / tool_choice / parallel_tool_calls,
18
+ // response_format, reasoning_effort, seed, max_completion_tokens), typed in
19
+ // @deeprelay/sdk since 0.3.0. Tool definitions, tool_calls and a response
20
+ // schema are counted as prompt text in the quote. A reply may carry
21
+ // tool_calls with content null; the tool returns both as the API does.
22
+ // `stream` is not an argument: the tool always sends stream: false, because
23
+ // an MCP tool result is one message.
24
+ //
25
+ // Budget settlement stays on the catalog token math (actualMicroCents), not
26
+ // usage.cost: usage.cost is the wallet charge, which is 0 for a plan-covered
27
+ // call, and the session budget bounds list-price spend either way. usage.cost
28
+ // and usage.cost_details are reported in the result.
20
29
  const sdk_1 = require("@deeprelay/sdk");
21
30
  const zod_1 = require("zod");
22
31
  const budget_js_1 = require("../../guardrail/budget.js");
@@ -32,22 +41,122 @@ Object.defineProperty(exports, "SPEND_CONFIRMATION_SHAPE", { enumerable: true, g
32
41
  Object.defineProperty(exports, "SPEND_TIER_SENTENCE", { enumerable: true, get: function () { return define_js_2.SPEND_TIER_SENTENCE; } });
33
42
  /** Upper bound on max_tokens for one chat call. */
34
43
  exports.CHAT_MAX_TOKENS_LIMIT = 8192;
44
+ /** Upper bound on tool definitions in one chat call. */
45
+ exports.CHAT_MAX_TOOLS = 64;
46
+ const toolCallSchema = zod_1.z.strictObject({
47
+ id: zod_1.z.string().min(1).max(256),
48
+ type: zod_1.z.literal("function").optional(),
49
+ function: zod_1.z.strictObject({
50
+ name: zod_1.z.string().min(1).max(256),
51
+ arguments: zod_1.z.string().describe("The arguments as a JSON string, exactly as the model returned them."),
52
+ }),
53
+ });
54
+ const chatMessageSchema = zod_1.z
55
+ .strictObject({
56
+ role: zod_1.z.enum(["system", "developer", "user", "assistant", "tool"]),
57
+ content: zod_1.z
58
+ .string()
59
+ .nullable()
60
+ .optional()
61
+ .describe("Text. May be null or omitted only on an assistant message that carries tool_calls."),
62
+ tool_calls: zod_1.z
63
+ .array(toolCallSchema)
64
+ .min(1)
65
+ .optional()
66
+ .describe("Assistant only: the tool calls a previous reply made, echoed back verbatim."),
67
+ tool_call_id: zod_1.z
68
+ .string()
69
+ .min(1)
70
+ .max(256)
71
+ .optional()
72
+ .describe("Tool only: the id of the tool call this message answers."),
73
+ })
74
+ .superRefine((m, ctx) => {
75
+ if (m.tool_calls !== undefined && m.role !== "assistant") {
76
+ ctx.addIssue({ code: "custom", message: "tool_calls is allowed only on an assistant message" });
77
+ }
78
+ if (m.role === "tool" && m.tool_call_id === undefined) {
79
+ ctx.addIssue({ code: "custom", message: "a tool message needs tool_call_id" });
80
+ }
81
+ if (m.role !== "tool" && m.tool_call_id !== undefined) {
82
+ ctx.addIssue({ code: "custom", message: "tool_call_id is allowed only on a tool message" });
83
+ }
84
+ if (typeof m.content !== "string" && !(m.role === "assistant" && m.tool_calls !== undefined)) {
85
+ ctx.addIssue({ code: "custom", message: "content is required unless an assistant message carries tool_calls" });
86
+ }
87
+ });
88
+ const functionToolSchema = zod_1.z.strictObject({
89
+ type: zod_1.z.literal("function"),
90
+ function: zod_1.z.strictObject({
91
+ name: zod_1.z
92
+ .string()
93
+ .regex(/^[A-Za-z0-9_-]{1,64}$/)
94
+ .describe("Function name: letters, digits, _ and -, up to 64 characters."),
95
+ description: zod_1.z.string().max(4096).optional(),
96
+ parameters: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional().describe("A JSON Schema object for the arguments."),
97
+ }),
98
+ });
99
+ const responseFormatSchema = zod_1.z.discriminatedUnion("type", [
100
+ zod_1.z.strictObject({ type: zod_1.z.literal("text") }),
101
+ zod_1.z.strictObject({ type: zod_1.z.literal("json_object") }),
102
+ zod_1.z.strictObject({
103
+ type: zod_1.z.literal("json_schema"),
104
+ json_schema: zod_1.z.strictObject({
105
+ name: zod_1.z.string().regex(/^[A-Za-z0-9_-]{1,64}$/),
106
+ description: zod_1.z.string().max(4096).optional(),
107
+ schema: zod_1.z.record(zod_1.z.string(), zod_1.z.unknown()).optional(),
108
+ strict: zod_1.z.boolean().optional(),
109
+ }),
110
+ }),
111
+ ]);
112
+ const toolChoiceSchema = zod_1.z.union([
113
+ zod_1.z.enum(["none", "auto", "required"]),
114
+ zod_1.z.strictObject({ type: zod_1.z.literal("function"), function: zod_1.z.strictObject({ name: zod_1.z.string().min(1).max(64) }) }),
115
+ ]);
116
+ function toSdkMessage(m) {
117
+ return {
118
+ role: m.role,
119
+ ...(typeof m.content === "string" ? { content: m.content } : {}),
120
+ ...(m.tool_calls === undefined
121
+ ? {}
122
+ : {
123
+ toolCalls: m.tool_calls.map((c) => ({
124
+ id: c.id,
125
+ type: "function",
126
+ _function: { name: c.function.name, arguments: c.function.arguments },
127
+ })),
128
+ }),
129
+ ...(m.tool_call_id === undefined ? {} : { toolCallId: m.tool_call_id }),
130
+ };
131
+ }
132
+ /** The reply message as the API shapes it: content null when the model only called tools. */
133
+ function replyMessage(m) {
134
+ if (m === undefined)
135
+ return null;
136
+ return {
137
+ role: m.role,
138
+ content: m.content ?? null,
139
+ ...(m.toolCalls === undefined || m.toolCalls.length === 0
140
+ ? {}
141
+ : { tool_calls: m.toolCalls.map((c) => (0, sdk_1.ToolCallToJSON)(c)) }),
142
+ };
143
+ }
35
144
  const chatCompletion = (0, define_js_1.defineSpendTool)({
36
145
  name: "deeprelay_chat_completion",
37
146
  title: "Chat completion",
38
147
  description: "Run one chat completion on a deeprelay chat model and return the assistant's reply, token usage and cost. " +
39
148
  "Priced per token from the model's catalog rates: the quote bounds the cost by max_tokens (default " +
40
149
  `${estimate_js_1.DEFAULT_MAX_TOKENS}), and the session budget settles at the actual usage. Use deeprelay_models_list ` +
41
- "(modality chat) to find a model id. Returns one complete message; streaming is not offered.",
150
+ "(modality chat) to find a model id. Returns one complete message; streaming is not offered. Function " +
151
+ "calling: pass `tools` (and optionally `tool_choice`); a reply that calls tools has finish_reason " +
152
+ "tool_calls, message.tool_calls and content null. Run the tools yourself, then call again with the " +
153
+ "assistant message (its tool_calls) and one `tool` message per call (tool_call_id + content). " +
154
+ "`response_format` selects JSON mode or a strict JSON schema, `reasoning_effort` picks one of the model's " +
155
+ "reasoning_efforts, and `seed` asks for repeatable sampling; use each only on a model whose " +
156
+ "supported_parameters lists it. Text messages only: for image input or logprobs, call the API directly.",
42
157
  inputSchema: {
43
158
  model: zod_1.z.string().min(1).describe("A chat model id from deeprelay_models_list."),
44
- messages: zod_1.z
45
- .array(zod_1.z.strictObject({
46
- role: zod_1.z.enum(["system", "user", "assistant"]),
47
- content: zod_1.z.string(),
48
- }))
49
- .min(1)
50
- .describe("The conversation so far, oldest first."),
159
+ messages: zod_1.z.array(chatMessageSchema).min(1).describe("The conversation so far, oldest first."),
51
160
  max_tokens: zod_1.z
52
161
  .number()
53
162
  .int()
@@ -55,26 +164,69 @@ const chatCompletion = (0, define_js_1.defineSpendTool)({
55
164
  .max(exports.CHAT_MAX_TOKENS_LIMIT)
56
165
  .default(estimate_js_1.DEFAULT_MAX_TOKENS)
57
166
  .describe(`Upper bound on generated tokens (1–${exports.CHAT_MAX_TOKENS_LIMIT}, default ${estimate_js_1.DEFAULT_MAX_TOKENS}). It also bounds the quote.`),
167
+ max_completion_tokens: zod_1.z
168
+ .number()
169
+ .int()
170
+ .min(1)
171
+ .max(exports.CHAT_MAX_TOKENS_LIMIT)
172
+ .optional()
173
+ .describe(`Alternative to max_tokens for models that require it (1–${exports.CHAT_MAX_TOKENS_LIMIT}). When set it is sent ` +
174
+ "instead of max_tokens and bounds the quote."),
58
175
  temperature: zod_1.z.number().min(0).max(2).optional().describe("Sampling temperature, 0–2."),
176
+ tools: zod_1.z
177
+ .array(functionToolSchema)
178
+ .min(1)
179
+ .max(exports.CHAT_MAX_TOOLS)
180
+ .optional()
181
+ .describe(`Function tools the model may call (up to ${exports.CHAT_MAX_TOOLS}). Counted as prompt tokens in the quote.`),
182
+ tool_choice: toolChoiceSchema
183
+ .optional()
184
+ .describe('"none", "auto", "required", or { type: "function", function: { name } } to force one tool.'),
185
+ parallel_tool_calls: zod_1.z.boolean().optional().describe("Allow several tool calls in one reply."),
186
+ response_format: responseFormatSchema
187
+ .optional()
188
+ .describe('{ type: "json_object" } for JSON mode, or { type: "json_schema", json_schema: { name, schema, strict } }.'),
189
+ reasoning_effort: zod_1.z
190
+ .string()
191
+ .regex(/^[a-z]{1,16}$/)
192
+ .optional()
193
+ .describe("One of the model's reasoning_efforts (see deeprelay_models_get), e.g. low, medium, high."),
194
+ seed: zod_1.z.number().int().optional().describe("Sampling seed, for models that support repeatable output."),
59
195
  },
60
196
  modality: "chat",
61
197
  question: "Run this chat completion at the price shown?",
62
198
  context: "running a chat completion",
63
- describe: (a) => `Chat completion on ${a.model}: ${a.messages.length} message(s), up to ${a.max_tokens} output tokens`,
199
+ describe: (a) => `Chat completion on ${a.model}: ${a.messages.length} message(s)` +
200
+ (a.tools === undefined ? "" : `, ${a.tools.length} tool definition(s)`) +
201
+ `, up to ${a.max_completion_tokens ?? a.max_tokens} output tokens`,
64
202
  async execute(a, run) {
65
203
  (0, budget_js_1.recordEstimate)(run.callId, run.estimate.microCents);
66
204
  let res;
67
205
  let actual;
68
206
  try {
69
- res = await new sdk_1.InferenceApi(run.config).createChatCompletion({
70
- chatCompletionRequest: {
71
- model: a.model,
72
- messages: a.messages,
73
- temperature: a.temperature,
74
- maxTokens: a.max_tokens,
75
- stream: false,
76
- },
77
- });
207
+ const request = {
208
+ model: a.model,
209
+ messages: a.messages.map(toSdkMessage),
210
+ temperature: a.temperature,
211
+ ...(a.max_completion_tokens === undefined
212
+ ? { maxTokens: a.max_tokens }
213
+ : { maxCompletionTokens: a.max_completion_tokens }),
214
+ stream: false,
215
+ tools: a.tools?.map((t) => ({
216
+ type: "function",
217
+ _function: { name: t.function.name, description: t.function.description, parameters: t.function.parameters },
218
+ })),
219
+ toolChoice: a.tool_choice === undefined || typeof a.tool_choice === "string"
220
+ ? a.tool_choice
221
+ : { type: "function", _function: { name: a.tool_choice.function.name } },
222
+ parallelToolCalls: a.parallel_tool_calls,
223
+ responseFormat: a.response_format?.type === "json_schema"
224
+ ? { type: "json_schema", jsonSchema: a.response_format.json_schema }
225
+ : a.response_format,
226
+ reasoningEffort: a.reasoning_effort,
227
+ seed: a.seed,
228
+ };
229
+ res = await new sdk_1.InferenceApi(run.config).createChatCompletion({ chatCompletionRequest: request });
78
230
  actual = (0, estimate_js_1.actualMicroCents)("chat", res.usage, run.rates, run.estimate.microCents);
79
231
  (0, budget_js_1.reconcileActual)(run.callId, actual);
80
232
  }
@@ -83,17 +235,16 @@ const chatCompletion = (0, define_js_1.defineSpendTool)({
83
235
  throw err;
84
236
  }
85
237
  const choice = res.choices?.[0];
238
+ const toolCalls = choice?.message?.toolCalls?.length ?? 0;
86
239
  return {
87
- lead: `Chat completion finished (${choice?.finishReason ?? "no finish reason reported"}).`,
240
+ lead: `Chat completion finished (${choice?.finishReason ?? "no finish reason reported"})` +
241
+ (toolCalls > 0 ? `: the model requested ${toolCalls} tool call(s).` : "."),
88
242
  payload: {
243
+ id: res.id,
89
244
  model: res.model,
90
245
  finish_reason: choice?.finishReason ?? null,
91
- message: choice?.message ?? null,
92
- usage: {
93
- prompt_tokens: res.usage?.promptTokens,
94
- completion_tokens: res.usage?.completionTokens,
95
- total_tokens: res.usage?.totalTokens,
96
- },
246
+ message: replyMessage(choice?.message),
247
+ usage: res.usage === undefined ? null : (0, sdk_1.UsageToJSON)(res.usage),
97
248
  cost: { estimated_micro_cents: run.estimate.microCents, actual_micro_cents: actual },
98
249
  session_budget: (0, budget_js_1.budgetStatus)(),
99
250
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/spend/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/spend/index.ts"],"names":[],"mappings":";;;AAAA,4EAA4E;AAC5E,EAAE;AACF,8EAA8E;AAC9E,sEAAsE;AACtE,2EAA2E;AAC3E,oEAAoE;AACpE,EAAE;AACF,2EAA2E;AAC3E,+EAA+E;AAC/E,6EAA6E;AAC7E,uDAAuD;AACvD,EAAE;AACF,4EAA4E;AAC5E,gEAAgE;AAChE,4EAA4E;AAC5E,0EAA0E;AAC1E,oEAAoE;AACpE,uEAAuE;AACvE,4EAA4E;AAC5E,qCAAqC;AACrC,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,8EAA8E;AAC9E,qDAAqD;AACrD,wCAOwB;AACxB,6BAAwB;AAExB,yDAA2G;AAC3G,6DAAmF;AAEnF,2CAA8C;AAC9C,yCAA6C;AA+SpC,gGA/SA,0BAAe,OA+SA;AA7SxB,yCAMqB;AALnB,+GAAA,kBAAkB,OAAA;AAClB,4GAAA,eAAe,OAAA;AACf,0GAAA,aAAa,OAAA;AACb,qHAAA,wBAAwB,OAAA;AACxB,gHAAA,mBAAmB,OAAA;AAIrB,mDAAmD;AACtC,QAAA,qBAAqB,GAAG,IAAI,CAAC;AAC1C,wDAAwD;AAC3C,QAAA,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,cAAc,GAAG,OAAC,CAAC,YAAY,CAAC;IACpC,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC9B,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,EAAE;IACtC,QAAQ,EAAE,OAAC,CAAC,YAAY,CAAC;QACvB,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;QAChC,SAAS,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,qEAAqE,CAAC;KACtG,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,OAAC;KACxB,YAAY,CAAC;IACZ,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;IAClE,OAAO,EAAE,OAAC;SACP,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,EAAE;SACV,QAAQ,CAAC,oFAAoF,CAAC;IACjG,UAAU,EAAE,OAAC;SACV,KAAK,CAAC,cAAc,CAAC;SACrB,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,QAAQ,CAAC,6EAA6E,CAAC;IAC1F,YAAY,EAAE,OAAC;SACZ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CAAC,0DAA0D,CAAC;CACxE,CAAC;KACD,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;IACtB,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACzD,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oDAAoD,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtD,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,mCAAmC,EAAE,CAAC,CAAC;IACjF,CAAC;IACD,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtD,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,EAAE,CAAC;QAC7F,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,oEAAoE,EAAE,CAAC,CAAC;IAClH,CAAC;AACH,CAAC,CAAC,CAAC;AAIL,MAAM,kBAAkB,GAAG,OAAC,CAAC,YAAY,CAAC;IACxC,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IAC3B,QAAQ,EAAE,OAAC,CAAC,YAAY,CAAC;QACvB,IAAI,EAAE,OAAC;aACJ,MAAM,EAAE;aACR,KAAK,CAAC,uBAAuB,CAAC;aAC9B,QAAQ,CAAC,+DAA+D,CAAC;QAC5E,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;QAC5C,UAAU,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;KAC7G,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,OAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IACxD,OAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;IAC3C,OAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;IAClD,OAAC,CAAC,YAAY,CAAC;QACb,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QAC9B,WAAW,EAAE,OAAC,CAAC,YAAY,CAAC;YAC1B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,uBAAuB,CAAC;YAC/C,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;YAC5C,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;YACpD,MAAM,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC;KACH,CAAC;CACH,CAAC,CAAC;AAEH,MAAM,gBAAgB,GAAG,OAAC,CAAC,KAAK,CAAC;IAC/B,OAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IACpC,OAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAC,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,QAAQ,EAAE,OAAC,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;CAC/G,CAAC,CAAC;AAEH,SAAS,YAAY,CAAC,CAAiB;IACrC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAA2B;QACnC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS;YAC5B,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,SAAS,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAClC,EAAE,EAAE,CAAC,CAAC,EAAE;oBACR,IAAI,EAAE,UAAmB;oBACzB,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE;iBACtE,CAAC,CAAC;aACJ,CAAC;QACN,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC;KACxE,CAAC;AACJ,CAAC;AAED,6FAA6F;AAC7F,SAAS,YAAY,CAAC,CAA0B;IAC9C,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IACjC,OAAO;QACL,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,CAAC,CAAC,OAAO,IAAI,IAAI;QAC1B,GAAG,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,IAAI,CAAC,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC;YACvD,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,oBAAc,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/D,CAAC;AACJ,CAAC;AAED,MAAM,cAAc,GAAG,IAAA,2BAAe,EAAC;IACrC,IAAI,EAAE,2BAA2B;IACjC,KAAK,EAAE,iBAAiB;IACxB,WAAW,EACT,4GAA4G;QAC5G,oGAAoG;QACpG,GAAG,gCAAkB,mFAAmF;QACxG,uGAAuG;QACvG,mGAAmG;QACnG,oGAAoG;QACpG,+FAA+F;QAC/F,2GAA2G;QAC3G,6FAA6F;QAC7F,wGAAwG;IAC1G,WAAW,EAAE;QACX,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,6CAA6C,CAAC;QAChF,QAAQ,EAAE,OAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC9F,UAAU,EAAE,OAAC;aACV,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,6BAAqB,CAAC;aAC1B,OAAO,CAAC,gCAAkB,CAAC;aAC3B,QAAQ,CAAC,sCAAsC,6BAAqB,aAAa,gCAAkB,8BAA8B,CAAC;QACrI,qBAAqB,EAAE,OAAC;aACrB,MAAM,EAAE;aACR,GAAG,EAAE;aACL,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,6BAAqB,CAAC;aAC1B,QAAQ,EAAE;aACV,QAAQ,CACP,2DAA2D,6BAAqB,yBAAyB;YACvG,6CAA6C,CAChD;QACH,WAAW,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,4BAA4B,CAAC;QACvF,KAAK,EAAE,OAAC;aACL,KAAK,CAAC,kBAAkB,CAAC;aACzB,GAAG,CAAC,CAAC,CAAC;aACN,GAAG,CAAC,sBAAc,CAAC;aACnB,QAAQ,EAAE;aACV,QAAQ,CAAC,4CAA4C,sBAAc,2CAA2C,CAAC;QAClH,WAAW,EAAE,gBAAgB;aAC1B,QAAQ,EAAE;aACV,QAAQ,CAAC,4FAA4F,CAAC;QACzG,mBAAmB,EAAE,OAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wCAAwC,CAAC;QAC9F,eAAe,EAAE,oBAAoB;aAClC,QAAQ,EAAE;aACV,QAAQ,CAAC,2GAA2G,CAAC;QACxH,gBAAgB,EAAE,OAAC;aAChB,MAAM,EAAE;aACR,KAAK,CAAC,eAAe,CAAC;aACtB,QAAQ,EAAE;aACV,QAAQ,CAAC,0FAA0F,CAAC;QACvG,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,2DAA2D,CAAC;KACxG;IACD,QAAQ,EAAE,MAAM;IAChB,QAAQ,EAAE,8CAA8C;IACxD,OAAO,EAAE,2BAA2B;IACpC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,sBAAsB,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,aAAa;QAChE,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,MAAM,qBAAqB,CAAC;QACvE,WAAW,CAAC,CAAC,qBAAqB,IAAI,CAAC,CAAC,UAAU,gBAAgB;IACpE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG;QAClB,IAAA,0BAAc,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,GAAG,CAAC;QACR,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,OAAO,GAA0B;gBACrC,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,YAAY,CAAC;gBACtC,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,GAAG,CAAC,CAAC,CAAC,qBAAqB,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,UAAU,EAAE;oBAC7B,CAAC,CAAC,EAAE,mBAAmB,EAAE,CAAC,CAAC,qBAAqB,EAAE,CAAC;gBACrD,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC1B,IAAI,EAAE,UAAmB;oBACzB,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE;iBAC7G,CAAC,CAAC;gBACH,UAAU,EACR,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;oBAC9D,CAAC,CAAC,CAAC,CAAC,WAAW;oBACf,CAAC,CAAC,EAAE,IAAI,EAAE,UAAmB,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE;gBACrF,iBAAiB,EAAE,CAAC,CAAC,mBAAmB;gBACxC,cAAc,EACZ,CAAC,CAAC,eAAe,EAAE,IAAI,KAAK,aAAa;oBACvC,CAAC,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC,CAAC,eAAe,CAAC,WAAW,EAAE;oBACpE,CAAC,CAAC,CAAC,CAAC,eAAe;gBACvB,eAAe,EAAE,CAAC,CAAC,gBAAgB;gBACnC,IAAI,EAAE,CAAC,CAAC,IAAI;aACb,CAAC;YACF,GAAG,GAAG,MAAM,IAAI,kBAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,oBAAoB,CAAC,EAAE,qBAAqB,EAAE,OAAO,EAAE,CAAC,CAAC;YAClG,MAAM,GAAG,IAAA,8BAAgB,EAAC,MAAM,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACjF,IAAA,2BAAe,EAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,2BAAe,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,SAAS,GAAG,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC,CAAC;QAC1D,OAAO;YACL,IAAI,EACF,6BAA6B,MAAM,EAAE,YAAY,IAAI,2BAA2B,GAAG;gBACnF,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,yBAAyB,SAAS,gBAAgB,CAAC,CAAC,CAAC,GAAG,CAAC;YAC5E,OAAO,EAAE;gBACP,EAAE,EAAE,GAAG,CAAC,EAAE;gBACV,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,aAAa,EAAE,MAAM,EAAE,YAAY,IAAI,IAAI;gBAC3C,OAAO,EAAE,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC;gBACtC,KAAK,EAAE,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAA,iBAAW,EAAC,GAAG,CAAC,KAAK,CAAC;gBAC9D,IAAI,EAAE,EAAE,qBAAqB,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE;gBACpF,cAAc,EAAE,IAAA,wBAAY,GAAE;aAC/B;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,+FAA+F;AAClF,QAAA,qBAAqB,GAAG,EAAE,CAAC;AAExC,MAAM,gBAAgB,GAAG,IAAA,2BAAe,EAAC;IACvC,IAAI,EAAE,6BAA6B;IACnC,KAAK,EAAE,mBAAmB;IAC1B,WAAW,EACT,0GAA0G;QAC1G,4GAA4G;QAC5G,8FAA8F;IAChG,WAAW,EAAE;QACX,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,mDAAmD,CAAC;QACtF,KAAK,EAAE,OAAC;aACL,KAAK,CAAC;YACL,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;YACjB,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,6BAAqB,CAAC;SAC7D,CAAC;aACD,QAAQ,CAAC,8BAA8B,6BAAqB,qBAAqB,CAAC;QACrF,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;QAC7G,eAAe,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,wBAAwB,CAAC;KACjF;IACD,QAAQ,EAAE,YAAY;IACtB,QAAQ,EAAE,6CAA6C;IACvD,OAAO,EAAE,qBAAqB;IAC9B,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CACd,iBAAiB,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,WAAW;IAC1F,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,GAAG;QAClB,IAAA,0BAAc,EAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACpD,IAAI,GAAG,CAAC;QACR,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,GAAG,GAAG,MAAM,IAAI,kBAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,gBAAgB,CAAC;gBACxD,iBAAiB,EAAE;oBACjB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,UAAU,EAAE,CAAC,CAAC,UAAU;oBACxB,cAAc,EAAE,CAAC,CAAC,eAAe;iBAClC;aACF,CAAC,CAAC;YACH,MAAM,GAAG,IAAA,8BAAgB,EAAC,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;YACvF,IAAA,2BAAe,EAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,2BAAe,EAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5B,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC;QAC5B,OAAO;YACL,IAAI,EAAE,WAAW,IAAI,CAAC,MAAM,gBAAgB;YAC5C,OAAO,EAAE;gBACP,KAAK,EAAE,GAAG,CAAC,KAAK;gBAChB,KAAK,EAAE,IAAI,CAAC,MAAM;gBAClB,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM;gBACrC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;gBACxC,KAAK,EAAE,EAAE,aAAa,EAAE,GAAG,CAAC,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,GAAG,CAAC,KAAK,EAAE,WAAW,EAAE;gBACvF,IAAI,EAAE,EAAE,qBAAqB,EAAE,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE;gBACpF,cAAc,EAAE,IAAA,wBAAY,GAAE;aAC/B;SACF,CAAC;IACJ,CAAC;CACF,CAAC,CAAC;AAEH,4CAA4C;AAC/B,QAAA,UAAU,GAAqB,CAAC,cAAc,EAAE,gBAAgB,EAAE,GAAG,0BAAe,CAAC,CAAC"}
@@ -14,9 +14,10 @@ exports.imageMimeType = imageMimeType;
14
14
  // the text block is still built by ok() (sanitized and redacted).
15
15
  //
16
16
  // Video is asynchronous (RESEARCH Pitfall 2). The create call returns a queued
17
- // job with no cost, so this handler reserves the catalog from-price (a FLOOR)
18
- // under the returned job id and does not settle anything itself. The video
19
- // reads (readonly/video-reads.ts) settle the reservation when they observe the
17
+ // job with no cost, so this handler reserves the estimate (a FLOOR: per-second
18
+ // rate x the requested seconds, or the model's default seconds; the per-clip
19
+ // from-price only when no per-second rate is published) under the returned job id and does not settle
20
+ // anything itself. The video reads (readonly/video-reads.ts) settle the reservation when they observe the
20
21
  // job finished: at cost_cents on completion, released on failed, cancelled or
21
22
  // expired.
22
23
  //
@@ -107,8 +108,9 @@ const imagesGenerate = (0, define_js_1.defineSpendTool)({
107
108
  const videosCreate = (0, define_js_1.defineSpendTool)({
108
109
  name: "deeprelay_videos_create",
109
110
  title: "Create a video",
110
- description: "Start an asynchronous text-to-video job on a deeprelay video model. Priced from the catalog's per-clip " +
111
- "from-price, or per second of the requested length; the quote is a floor, not a cap, and the real charge " +
111
+ description: "Start an asynchronous text-to-video job on a deeprelay video model. Priced like the server bills it: the " +
112
+ "catalog's per-second rate x the requested seconds (the model's default length when omitted); the quote " +
113
+ "is a floor, not a cap, and the real charge " +
112
114
  "is known only when the job completes. The floor is held against the session budget until " +
113
115
  "deeprelay_videos_get or deeprelay_videos_list sees the job finish, which settles it at the actual cost " +
114
116
  "(or releases it if the job failed or was cancelled). Download a finished clip with deeprelay_videos_content.",
@@ -1 +1 @@
1
- {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/tools/spend/media.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../src/tools/spend/media.ts"],"names":[],"mappings":"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"}
@@ -52,6 +52,10 @@ async function ratesFor(config, modelId, now = Date.now) {
52
52
  perVideoSecondMicrocents: pick(p.perVideoSecondMicrocents) ??
53
53
  (pick(p.perVideoSecondCents) === undefined ? undefined : p.perVideoSecondCents * budget_js_1.MICRO_CENTS_PER_CENT),
54
54
  };
55
+ const secondsDefault = (model.parameters ?? []).find((d) => d.name === "seconds")?._default;
56
+ if (typeof secondsDefault === "number" && Number.isFinite(secondsDefault) && secondsDefault > 0) {
57
+ rates.defaultVideoSeconds = secondsDefault;
58
+ }
55
59
  cache.set(key, { rates, expiresAt: now() + exports.RATE_CACHE_TTL_MS });
56
60
  return rates;
57
61
  }
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../../src/tools/spend/pricing.ts"],"names":[],"mappings":";;;AAmCA,8DAEC;AAUD,4BA6BC;AA5ED,6EAA6E;AAC7E,EAAE;AACF,uEAAuE;AACvE,+EAA+E;AAC/E,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,uBAAuB;AACvB,EAAE;AACF,+EAA+E;AAC/E,8EAA8E;AAC9E,2BAA2B;AAC3B,wCAA0F;AAE1F,yDAAiE;AAGjE,8EAA8E;AACjE,QAAA,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAchD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAsB,CAAC;AAE5C,2CAA2C;AAC3C,SAAgB,yBAAyB;IACvC,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,IAAI,CAAC,KAAyB;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AACjF,CAAC;AAED;;;GAGG;AACI,KAAK,UAAU,QAAQ,CAC5B,MAAqB,EACrB,OAAe,EACf,MAAoB,IAAI,CAAC,GAAG;IAE5B,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,QAAQ,SAAS,OAAO,EAAE,CAAC;IACjD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,GAAG,GAAG,EAAE,EAAE,CAAC;QAC/C,OAAO,GAAG,CAAC,KAAK,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,IAAI,kBAAY,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAe;QACxB,OAAO,EAAE,KAAK,CAAC,EAAE,IAAI,OAAO;QAC5B,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,qBAAqB,EAAE,IAAI,CAAC,CAAC,CAAC,qBAAqB,CAAC;QACpD,sBAAsB,EAAE,IAAI,CAAC,CAAC,CAAC,sBAAsB,CAAC;QACtD,gCAAgC,EAAE,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC;QAC1E,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC;QACpC,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC9C,iBAAiB,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC5C,kBAAkB,EAAE,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;QAC9C,wBAAwB,EACtB,IAAI,CAAC,CAAC,CAAC,wBAAwB,CAAC;YAChC,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,mBAA8B,GAAG,gCAAoB,CAAC;KACrH,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,yBAAiB,EAAE,CAAC,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../../../src/tools/spend/pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ /** The API's bounds on the threshold: $0.01 to $1,000,000. */
2
+ export declare const MIN_THRESHOLD_CENTS = 1;
3
+ export declare const MAX_THRESHOLD_CENTS = 100000000;
4
+ export declare const alertsSetTool: import("../types.js").ToolDefinition;
@@ -0,0 +1,141 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.alertsSetTool = exports.MAX_THRESHOLD_CENTS = exports.MIN_THRESHOLD_CENTS = void 0;
4
+ // deeprelay_alerts_set: change the organization's alert settings (Phase 111,
5
+ // D-13, D-15, R-08). WRITE tier: it confirms once and charges nothing.
6
+ //
7
+ // PUT /v1/alerts/settings is a full replace, so the tool never sends a partial
8
+ // body:
9
+ //
10
+ // quote — GET the current settings, merge the requested changes over them
11
+ // and describe exactly what changes. Nothing requested, or nothing
12
+ // that differs, mints no token.
13
+ // execute — GET again and merge the same requested changes over the FRESH
14
+ // settings, then PUT every field. A setting someone else changed
15
+ // between the quote and the confirmation is kept, not reverted
16
+ // (time-of-check is time-of-use, T-111-85).
17
+ //
18
+ // The server decides who may write (an org admin's key or a full_access key);
19
+ // a 403 surfaces through the shared mapper. Transport: @deeprelay/sdk
20
+ // AlertsApi.putAlertSettingsRaw, the reply parsed by the closed schema.
21
+ const sdk_1 = require("@deeprelay/sdk");
22
+ const zod_1 = require("zod");
23
+ const errors_js_1 = require("../../errors.js");
24
+ const api_json_js_1 = require("../api-json.js");
25
+ const alerts_js_1 = require("../readonly/alerts.js");
26
+ const define_js_1 = require("./define.js");
27
+ /** The API's bounds on the threshold: $0.01 to $1,000,000. */
28
+ exports.MIN_THRESHOLD_CENTS = 1;
29
+ exports.MAX_THRESHOLD_CENTS = 100_000_000;
30
+ const TOGGLES = ["balance_low", "subscription_quota", "api_key_budget", "member_spend"];
31
+ function merge(current, c) {
32
+ return {
33
+ balance_threshold_cents: c.balance_threshold_cents ?? current.balance_threshold_cents,
34
+ email: {
35
+ balance_low: c.balance_low ?? current.email.balance_low,
36
+ subscription_quota: c.subscription_quota ?? current.email.subscription_quota,
37
+ api_key_budget: c.api_key_budget ?? current.email.api_key_budget,
38
+ member_spend: c.member_spend ?? current.email.member_spend,
39
+ },
40
+ };
41
+ }
42
+ function usd(cents) {
43
+ return `$${(cents / 100).toFixed(2)}`;
44
+ }
45
+ function onOff(v) {
46
+ return v ? "on" : "off";
47
+ }
48
+ /** One phrase per setting that differs between `from` and `to`. */
49
+ function describeChanges(from, to) {
50
+ const out = [];
51
+ if (from.balance_threshold_cents !== to.balance_threshold_cents) {
52
+ out.push(`low-balance threshold ${usd(from.balance_threshold_cents)} → ${usd(to.balance_threshold_cents)}`);
53
+ }
54
+ for (const t of TOGGLES) {
55
+ if (from.email[t] !== to.email[t]) {
56
+ out.push(`${t} emails ${onOff(from.email[t])} → ${onOff(to.email[t])}`);
57
+ }
58
+ }
59
+ return out;
60
+ }
61
+ async function putAlertSettings(config, next) {
62
+ const raw = await (0, api_json_js_1.apiJson)(new sdk_1.AlertsApi(config).putAlertSettingsRaw({
63
+ alertSettingsUpdate: {
64
+ balanceThresholdCents: next.balance_threshold_cents,
65
+ email: {
66
+ balanceLow: next.email.balance_low,
67
+ subscriptionQuota: next.email.subscription_quota,
68
+ apiKeyBudget: next.email.api_key_budget,
69
+ memberSpend: next.email.member_spend,
70
+ },
71
+ },
72
+ }));
73
+ return alerts_js_1.alertSettingsSchema.parse(raw);
74
+ }
75
+ function nothingToDo(current) {
76
+ return new define_js_1.WriteNothingToDo({
77
+ lead: "The alert settings already match what was asked for. Nothing was changed.",
78
+ payload: { changed: false, settings: (0, alerts_js_1.alertSettingsView)(current) },
79
+ });
80
+ }
81
+ exports.alertsSetTool = (0, define_js_1.defineWriteTool)({
82
+ name: "deeprelay_alerts_set",
83
+ title: "Change the deeprelay alert settings",
84
+ description: "Change the organization's alert settings: the low-balance threshold (in cents) and whether each governance " +
85
+ "alert is emailed to org admins (balance_low, subscription_quota, api_key_budget, member_spend). Pass only the " +
86
+ "settings to change; the rest are kept. Requires the org-admin role (or a full_access key) server-side. A " +
87
+ "member always receives their own spend-limit emails whatever is set here. Check the current values first with " +
88
+ "deeprelay_alerts_get. Charges nothing.",
89
+ inputSchema: {
90
+ balance_threshold_cents: zod_1.z
91
+ .number()
92
+ .int()
93
+ .min(exports.MIN_THRESHOLD_CENTS)
94
+ .max(exports.MAX_THRESHOLD_CENTS)
95
+ .optional()
96
+ .describe("Low-balance alert threshold in cents (1 to 100000000, i.e. $0.01 to $1,000,000)."),
97
+ balance_low: zod_1.z.boolean().optional().describe("Email org admins when the balance drops below the threshold."),
98
+ subscription_quota: zod_1.z.boolean().optional().describe("Email org admins at 80% and 100% of a plan allowance."),
99
+ api_key_budget: zod_1.z.boolean().optional().describe("Email org admins at 80% and 100% of an API key's budget."),
100
+ member_spend: zod_1.z.boolean().optional().describe("Email org admins at 80% and 100% of a member's spend limit."),
101
+ },
102
+ destructive: false,
103
+ question: "Change the organization's alert settings as described?",
104
+ context: "changing the alert settings",
105
+ async quote(args, config) {
106
+ const changes = {
107
+ balance_threshold_cents: args.balance_threshold_cents,
108
+ balance_low: args.balance_low,
109
+ subscription_quota: args.subscription_quota,
110
+ api_key_budget: args.api_key_budget,
111
+ member_spend: args.member_spend,
112
+ };
113
+ if (Object.values(changes).every((v) => v === undefined)) {
114
+ throw new errors_js_1.QuoteUnavailableError("Nothing to change: pass balance_threshold_cents and/or at least one of balance_low, subscription_quota, " +
115
+ "api_key_budget, member_spend.");
116
+ }
117
+ const current = await (0, alerts_js_1.getAlertSettings)(config);
118
+ const diff = describeChanges(current, merge(current, changes));
119
+ if (diff.length === 0) {
120
+ throw nothingToDo(current);
121
+ }
122
+ return {
123
+ summary: `Change the organization's alert settings: ${diff.join("; ")}. Every other setting is kept.`,
124
+ resolvedParams: changes,
125
+ };
126
+ },
127
+ async execute(changes, config) {
128
+ const fresh = await (0, alerts_js_1.getAlertSettings)(config);
129
+ const next = merge(fresh, changes);
130
+ const diff = describeChanges(fresh, next);
131
+ if (diff.length === 0) {
132
+ throw nothingToDo(fresh);
133
+ }
134
+ const saved = await putAlertSettings(config, next);
135
+ return {
136
+ lead: `Alert settings updated: ${diff.join("; ")}.`,
137
+ payload: { changed: true, settings: (0, alerts_js_1.alertSettingsView)(saved) },
138
+ };
139
+ },
140
+ });
141
+ //# sourceMappingURL=alerts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"alerts.js","sourceRoot":"","sources":["../../../src/tools/write/alerts.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  import type { ToolDefinition } from "../types.js";
2
2
  export { CONFIRMATION_TOKEN_SHAPE, defineWriteTool, WRITE_TIER_SENTENCE, type WriteExecuted, type WriteQuote, type WriteToolSpec, WriteNothingToDo, } from "./define.js";
3
+ export { alertsSetTool } from "./alerts.js";
3
4
  export { paymentLinkTools } from "./payment-links.js";
4
5
  export { spendingLimitClearTool, spendingLimitUpdateTool } from "./spending-limit.js";
5
6
  /**
@@ -8,5 +9,5 @@ export { spendingLimitClearTool, spendingLimitUpdateTool } from "./spending-limi
8
9
  * (Phase 101 D-04) and are not offered here.
9
10
  */
10
11
  export declare const WEBHOOK_EVENT_TYPES: readonly ["video.completed", "video.failed"];
11
- /** The eight write tools, in WRITE_TOOLS order (test/write.test.ts asserts it). */
12
+ /** The nine write tools, in WRITE_TOOLS order (test/roster-audit.test.ts asserts it). */
12
13
  export declare const writeTools: ToolDefinition[];
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.writeTools = exports.WEBHOOK_EVENT_TYPES = exports.spendingLimitUpdateTool = exports.spendingLimitClearTool = exports.paymentLinkTools = exports.WriteNothingToDo = exports.WRITE_TIER_SENTENCE = exports.defineWriteTool = exports.CONFIRMATION_TOKEN_SHAPE = void 0;
3
+ exports.writeTools = exports.WEBHOOK_EVENT_TYPES = exports.spendingLimitUpdateTool = exports.spendingLimitClearTool = exports.paymentLinkTools = exports.alertsSetTool = exports.WriteNothingToDo = exports.WRITE_TIER_SENTENCE = exports.defineWriteTool = exports.CONFIRMATION_TOKEN_SHAPE = void 0;
4
4
  // The write tier (Phase 104, D-02/D-03/D-09/D-10). Authored fresh (D-12).
5
5
  //
6
- // Eight mutations, none of which charges the account, and every one of which
6
+ // Nine mutations, none of which charges the account, and every one of which
7
7
  // confirms once. Each is built with defineWriteTool (define.ts), which wraps
8
8
  // the tool in withWriteConfirmation and puts elicitation in front of that same
9
9
  // handshake, so no write can be registered without its confirmation.
@@ -19,9 +19,13 @@ exports.writeTools = exports.WEBHOOK_EVENT_TYPES = exports.spendingLimitUpdateTo
19
19
  // deeprelay_subscription_checkout — link only (payment-links.ts, D-09)
20
20
  // deeprelay_billing_portal — link only (payment-links.ts, D-09)
21
21
  // deeprelay_deposits_create_crypto — link only, off at boot (payment-links.ts, D-03)
22
+ // deeprelay_alerts_set — org alert settings, full-replace PUT
23
+ // built from a fresh GET (alerts.ts,
24
+ // Phase 111)
22
25
  const sdk_1 = require("@deeprelay/sdk");
23
26
  const zod_1 = require("zod");
24
27
  const video_reads_js_1 = require("../readonly/video-reads.js");
28
+ const alerts_js_1 = require("./alerts.js");
25
29
  const define_js_1 = require("./define.js");
26
30
  const payment_links_js_1 = require("./payment-links.js");
27
31
  const spending_limit_js_1 = require("./spending-limit.js");
@@ -30,6 +34,8 @@ Object.defineProperty(exports, "CONFIRMATION_TOKEN_SHAPE", { enumerable: true, g
30
34
  Object.defineProperty(exports, "defineWriteTool", { enumerable: true, get: function () { return define_js_2.defineWriteTool; } });
31
35
  Object.defineProperty(exports, "WRITE_TIER_SENTENCE", { enumerable: true, get: function () { return define_js_2.WRITE_TIER_SENTENCE; } });
32
36
  Object.defineProperty(exports, "WriteNothingToDo", { enumerable: true, get: function () { return define_js_2.WriteNothingToDo; } });
37
+ var alerts_js_2 = require("./alerts.js");
38
+ Object.defineProperty(exports, "alertsSetTool", { enumerable: true, get: function () { return alerts_js_2.alertsSetTool; } });
33
39
  var payment_links_js_2 = require("./payment-links.js");
34
40
  Object.defineProperty(exports, "paymentLinkTools", { enumerable: true, get: function () { return payment_links_js_2.paymentLinkTools; } });
35
41
  var spending_limit_js_2 = require("./spending-limit.js");
@@ -147,7 +153,7 @@ const videosCancelTool = (0, define_js_1.defineWriteTool)({
147
153
  };
148
154
  },
149
155
  });
150
- /** The eight write tools, in WRITE_TOOLS order (test/write.test.ts asserts it). */
156
+ /** The nine write tools, in WRITE_TOOLS order (test/roster-audit.test.ts asserts it). */
151
157
  exports.writeTools = [
152
158
  webhooksCreateTool,
153
159
  webhooksDeleteTool,
@@ -155,5 +161,6 @@ exports.writeTools = [
155
161
  spending_limit_js_1.spendingLimitClearTool,
156
162
  ...payment_links_js_1.paymentLinkTools,
157
163
  videosCancelTool,
164
+ alerts_js_1.alertsSetTool,
158
165
  ];
159
166
  //# sourceMappingURL=index.js.map