@plumbus/core 0.8.0-beta.1 → 0.8.0-beta.10

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 (272) hide show
  1. package/CHANGELOG.md +187 -0
  2. package/README.md +8 -1
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/ai/ai/cost-tracker.d.ts +22 -2
  5. package/dist/ai/ai/model-pricing.d.ts +8 -2
  6. package/dist/ai/ai/openai-strict-schema.d.ts +84 -0
  7. package/dist/ai/ai/provider.d.ts +90 -6
  8. package/dist/ai/ai-service.d.ts +53 -1
  9. package/dist/ai/ai-service.d.ts.map +1 -1
  10. package/dist/ai/ai-service.js +550 -119
  11. package/dist/ai/ai-service.js.map +1 -1
  12. package/dist/ai/cost-tracker.d.ts +22 -2
  13. package/dist/ai/cost-tracker.d.ts.map +1 -1
  14. package/dist/ai/cost-tracker.js +59 -20
  15. package/dist/ai/cost-tracker.js.map +1 -1
  16. package/dist/ai/explainability.d.ts +2 -1
  17. package/dist/ai/explainability.d.ts.map +1 -1
  18. package/dist/ai/explainability.js +1 -0
  19. package/dist/ai/explainability.js.map +1 -1
  20. package/dist/ai/index.d.ts +2 -2
  21. package/dist/ai/index.d.ts.map +1 -1
  22. package/dist/ai/index.js +1 -1
  23. package/dist/ai/index.js.map +1 -1
  24. package/dist/ai/model-pricing.d.ts +8 -2
  25. package/dist/ai/model-pricing.d.ts.map +1 -1
  26. package/dist/ai/model-pricing.js +113 -15
  27. package/dist/ai/model-pricing.js.map +1 -1
  28. package/dist/ai/openai-strict-schema.d.ts +85 -0
  29. package/dist/ai/openai-strict-schema.d.ts.map +1 -0
  30. package/dist/ai/openai-strict-schema.js +730 -0
  31. package/dist/ai/openai-strict-schema.js.map +1 -0
  32. package/dist/ai/prompt-overrides.d.ts +19 -0
  33. package/dist/ai/prompt-overrides.d.ts.map +1 -0
  34. package/dist/ai/prompt-overrides.js +60 -0
  35. package/dist/ai/prompt-overrides.js.map +1 -0
  36. package/dist/ai/provider-failure.d.ts +9 -0
  37. package/dist/ai/provider-failure.d.ts.map +1 -0
  38. package/dist/ai/provider-failure.js +112 -0
  39. package/dist/ai/provider-failure.js.map +1 -0
  40. package/dist/ai/provider.d.ts +90 -6
  41. package/dist/ai/provider.d.ts.map +1 -1
  42. package/dist/ai/provider.js +546 -97
  43. package/dist/ai/provider.js.map +1 -1
  44. package/dist/ai/rag/pipeline.d.ts +21 -1
  45. package/dist/ai/rag/pipeline.d.ts.map +1 -1
  46. package/dist/ai/rag/pipeline.js +17 -1
  47. package/dist/ai/rag/pipeline.js.map +1 -1
  48. package/dist/ai/tool-loop.d.ts +8 -1
  49. package/dist/ai/tool-loop.d.ts.map +1 -1
  50. package/dist/ai/tool-loop.js +7 -0
  51. package/dist/ai/tool-loop.js.map +1 -1
  52. package/dist/ai/types/config.d.ts +13 -0
  53. package/dist/ai/types/fields.d.ts +6 -0
  54. package/dist/ai/types/prompt.d.ts +9 -0
  55. package/dist/ai/usage-validation.d.ts.map +1 -1
  56. package/dist/ai/usage-validation.js +6 -1
  57. package/dist/ai/usage-validation.js.map +1 -1
  58. package/dist/ai/validation.d.ts +7 -3
  59. package/dist/ai/validation.d.ts.map +1 -1
  60. package/dist/ai/validation.js +38 -25
  61. package/dist/ai/validation.js.map +1 -1
  62. package/dist/ai/zod-to-provider-schema.d.ts.map +1 -1
  63. package/dist/ai/zod-to-provider-schema.js +246 -16
  64. package/dist/ai/zod-to-provider-schema.js.map +1 -1
  65. package/dist/api/route-generator.d.ts +2 -12
  66. package/dist/api/route-generator.d.ts.map +1 -1
  67. package/dist/api/route-generator.js +33 -41
  68. package/dist/api/route-generator.js.map +1 -1
  69. package/dist/approvals/index.d.ts +1 -1
  70. package/dist/approvals/index.d.ts.map +1 -1
  71. package/dist/approvals/index.js.map +1 -1
  72. package/dist/approvals/memory-store.d.ts.map +1 -1
  73. package/dist/approvals/memory-store.js +22 -0
  74. package/dist/approvals/memory-store.js.map +1 -1
  75. package/dist/approvals/schema.d.ts +34 -0
  76. package/dist/approvals/schema.d.ts.map +1 -1
  77. package/dist/approvals/schema.js +2 -0
  78. package/dist/approvals/schema.js.map +1 -1
  79. package/dist/approvals/service.d.ts.map +1 -1
  80. package/dist/approvals/service.js +36 -0
  81. package/dist/approvals/service.js.map +1 -1
  82. package/dist/approvals/sql-store.d.ts.map +1 -1
  83. package/dist/approvals/sql-store.js +42 -1
  84. package/dist/approvals/sql-store.js.map +1 -1
  85. package/dist/approvals/types.d.ts +11 -0
  86. package/dist/approvals/types.d.ts.map +1 -1
  87. package/dist/approvals/types.js +1 -0
  88. package/dist/approvals/types.js.map +1 -1
  89. package/dist/audit/service.d.ts.map +1 -1
  90. package/dist/audit/service.js +16 -1
  91. package/dist/audit/service.js.map +1 -1
  92. package/dist/cli/cli.d.ts.map +1 -1
  93. package/dist/cli/cli.js +2 -1
  94. package/dist/cli/cli.js.map +1 -1
  95. package/dist/cli/commands/browser-extension.d.ts +16 -0
  96. package/dist/cli/commands/browser-extension.d.ts.map +1 -1
  97. package/dist/cli/commands/browser-extension.js +16 -5
  98. package/dist/cli/commands/browser-extension.js.map +1 -1
  99. package/dist/cli/commands/dev.d.ts.map +1 -1
  100. package/dist/cli/commands/dev.js +7 -1
  101. package/dist/cli/commands/dev.js.map +1 -1
  102. package/dist/cli/commands/e2e.d.ts +12 -0
  103. package/dist/cli/commands/e2e.d.ts.map +1 -1
  104. package/dist/cli/commands/e2e.js +11 -0
  105. package/dist/cli/commands/e2e.js.map +1 -1
  106. package/dist/cli/commands/generate-openapi-from-zod.d.ts.map +1 -1
  107. package/dist/cli/commands/generate-openapi-from-zod.js +9 -1
  108. package/dist/cli/commands/generate-openapi-from-zod.js.map +1 -1
  109. package/dist/cli/commands/index.d.ts +1 -0
  110. package/dist/cli/commands/index.d.ts.map +1 -1
  111. package/dist/cli/commands/index.js +1 -0
  112. package/dist/cli/commands/index.js.map +1 -1
  113. package/dist/cli/commands/init.d.ts +1 -1
  114. package/dist/cli/commands/init.d.ts.map +1 -1
  115. package/dist/cli/commands/init.js +63 -3
  116. package/dist/cli/commands/init.js.map +1 -1
  117. package/dist/cli/commands/migrate.d.ts.map +1 -1
  118. package/dist/cli/commands/migrate.js +8 -14
  119. package/dist/cli/commands/migrate.js.map +1 -1
  120. package/dist/cli/commands/payments.d.ts +56 -0
  121. package/dist/cli/commands/payments.d.ts.map +1 -0
  122. package/dist/cli/commands/payments.js +184 -0
  123. package/dist/cli/commands/payments.js.map +1 -0
  124. package/dist/cli/commands/run.d.ts.map +1 -1
  125. package/dist/cli/commands/run.js +2 -7
  126. package/dist/cli/commands/run.js.map +1 -1
  127. package/dist/cli/commands/seed.d.ts.map +1 -1
  128. package/dist/cli/commands/seed.js +2 -7
  129. package/dist/cli/commands/seed.js.map +1 -1
  130. package/dist/cli/commands/start.d.ts.map +1 -1
  131. package/dist/cli/commands/start.js +9 -1
  132. package/dist/cli/commands/start.js.map +1 -1
  133. package/dist/cli/commands/worker.js +1 -1
  134. package/dist/cli/commands/worker.js.map +1 -1
  135. package/dist/cli/discover.d.ts +2 -0
  136. package/dist/cli/discover.d.ts.map +1 -1
  137. package/dist/cli/discover.js +39 -5
  138. package/dist/cli/discover.js.map +1 -1
  139. package/dist/config/loader.d.ts +4 -1
  140. package/dist/config/loader.d.ts.map +1 -1
  141. package/dist/config/loader.js +112 -24
  142. package/dist/config/loader.js.map +1 -1
  143. package/dist/data/connection.d.ts +23 -0
  144. package/dist/data/connection.d.ts.map +1 -1
  145. package/dist/data/connection.js +23 -6
  146. package/dist/data/connection.js.map +1 -1
  147. package/dist/data/schema-generator.d.ts.map +1 -1
  148. package/dist/data/schema-generator.js +2 -2
  149. package/dist/data/schema-generator.js.map +1 -1
  150. package/dist/define/definePrompt.d.ts.map +1 -1
  151. package/dist/define/definePrompt.js +6 -0
  152. package/dist/define/definePrompt.js.map +1 -1
  153. package/dist/durable/index.d.ts +2 -2
  154. package/dist/durable/index.d.ts.map +1 -1
  155. package/dist/durable/index.js +2 -2
  156. package/dist/durable/index.js.map +1 -1
  157. package/dist/durable/postgres-persist.d.ts +47 -2
  158. package/dist/durable/postgres-persist.d.ts.map +1 -1
  159. package/dist/durable/postgres-persist.js +152 -6
  160. package/dist/durable/postgres-persist.js.map +1 -1
  161. package/dist/durable/spine-claim.d.ts +22 -1
  162. package/dist/durable/spine-claim.d.ts.map +1 -1
  163. package/dist/durable/spine-claim.js +54 -3
  164. package/dist/durable/spine-claim.js.map +1 -1
  165. package/dist/events/dispatcher.d.ts +20 -0
  166. package/dist/events/dispatcher.d.ts.map +1 -1
  167. package/dist/events/dispatcher.js +61 -26
  168. package/dist/events/dispatcher.js.map +1 -1
  169. package/dist/events/pipeline-audit.d.ts +14 -0
  170. package/dist/events/pipeline-audit.d.ts.map +1 -0
  171. package/dist/events/pipeline-audit.js +29 -0
  172. package/dist/events/pipeline-audit.js.map +1 -0
  173. package/dist/events/worker.d.ts +3 -0
  174. package/dist/events/worker.d.ts.map +1 -1
  175. package/dist/events/worker.js +14 -14
  176. package/dist/events/worker.js.map +1 -1
  177. package/dist/execution/capability-error-hook.d.ts +24 -0
  178. package/dist/execution/capability-error-hook.d.ts.map +1 -0
  179. package/dist/execution/capability-error-hook.js +17 -0
  180. package/dist/execution/capability-error-hook.js.map +1 -0
  181. package/dist/execution/capability-executor.d.ts +2 -2
  182. package/dist/execution/capability-executor.d.ts.map +1 -1
  183. package/dist/execution/capability-executor.js +45 -7
  184. package/dist/execution/capability-executor.js.map +1 -1
  185. package/dist/execution/context-factory.d.ts.map +1 -1
  186. package/dist/execution/context-factory.js +9 -1
  187. package/dist/execution/context-factory.js.map +1 -1
  188. package/dist/execution/deferred-flow-service.d.ts.map +1 -1
  189. package/dist/execution/deferred-flow-service.js +7 -0
  190. package/dist/execution/deferred-flow-service.js.map +1 -1
  191. package/dist/execution/index.d.ts +1 -0
  192. package/dist/execution/index.d.ts.map +1 -1
  193. package/dist/execution/index.js.map +1 -1
  194. package/dist/fields/index.d.ts +7 -0
  195. package/dist/fields/index.d.ts.map +1 -1
  196. package/dist/fields/index.js +10 -1
  197. package/dist/fields/index.js.map +1 -1
  198. package/dist/flows/dead-letter.d.ts +18 -1
  199. package/dist/flows/dead-letter.d.ts.map +1 -1
  200. package/dist/flows/dead-letter.js +17 -1
  201. package/dist/flows/dead-letter.js.map +1 -1
  202. package/dist/flows/engine.d.ts +16 -1
  203. package/dist/flows/engine.d.ts.map +1 -1
  204. package/dist/flows/engine.js +218 -29
  205. package/dist/flows/engine.js.map +1 -1
  206. package/dist/flows/flow-service.d.ts.map +1 -1
  207. package/dist/flows/flow-service.js +3 -0
  208. package/dist/flows/flow-service.js.map +1 -1
  209. package/dist/flows/step-executor.d.ts +8 -0
  210. package/dist/flows/step-executor.d.ts.map +1 -1
  211. package/dist/flows/step-executor.js.map +1 -1
  212. package/dist/index.d.ts +4 -4
  213. package/dist/index.d.ts.map +1 -1
  214. package/dist/index.js +1 -1
  215. package/dist/index.js.map +1 -1
  216. package/dist/runtime/bootstrap.d.ts +18 -1
  217. package/dist/runtime/bootstrap.d.ts.map +1 -1
  218. package/dist/runtime/bootstrap.js +36 -5
  219. package/dist/runtime/bootstrap.js.map +1 -1
  220. package/dist/runtime/load-extensions.d.ts +2 -1
  221. package/dist/runtime/load-extensions.d.ts.map +1 -1
  222. package/dist/runtime/load-extensions.js +49 -1
  223. package/dist/runtime/load-extensions.js.map +1 -1
  224. package/dist/runtime/register-consumers.d.ts +3 -0
  225. package/dist/runtime/register-consumers.d.ts.map +1 -1
  226. package/dist/runtime/register-consumers.js +27 -6
  227. package/dist/runtime/register-consumers.js.map +1 -1
  228. package/dist/runtime/start-worker-pool.d.ts.map +1 -1
  229. package/dist/runtime/start-worker-pool.js +36 -15
  230. package/dist/runtime/start-worker-pool.js.map +1 -1
  231. package/dist/server/bootstrap.d.ts +42 -16
  232. package/dist/server/bootstrap.d.ts.map +1 -1
  233. package/dist/server/bootstrap.js +91 -21
  234. package/dist/server/bootstrap.js.map +1 -1
  235. package/dist/testing/context.d.ts +2 -0
  236. package/dist/testing/context.d.ts.map +1 -1
  237. package/dist/testing/context.js +8 -3
  238. package/dist/testing/context.js.map +1 -1
  239. package/dist/testing/field-validation.d.ts.map +1 -1
  240. package/dist/testing/field-validation.js +3 -0
  241. package/dist/testing/field-validation.js.map +1 -1
  242. package/dist/types/config.d.ts +13 -0
  243. package/dist/types/config.d.ts.map +1 -1
  244. package/dist/types/context.d.ts +70 -4
  245. package/dist/types/context.d.ts.map +1 -1
  246. package/dist/types/fields.d.ts +6 -0
  247. package/dist/types/fields.d.ts.map +1 -1
  248. package/dist/types/index.d.ts +1 -1
  249. package/dist/types/index.d.ts.map +1 -1
  250. package/dist/types/index.js.map +1 -1
  251. package/dist/types/prompt.d.ts +9 -0
  252. package/dist/types/prompt.d.ts.map +1 -1
  253. package/dist/worker/bootstrap.d.ts +19 -0
  254. package/dist/worker/bootstrap.d.ts.map +1 -1
  255. package/dist/worker/bootstrap.js +156 -84
  256. package/dist/worker/bootstrap.js.map +1 -1
  257. package/instructions/README.md +4 -1
  258. package/instructions/ai-classification.md +132 -0
  259. package/instructions/ai.md +94 -15
  260. package/instructions/cli.md +19 -1
  261. package/instructions/entities.md +3 -1
  262. package/instructions/flows.md +6 -0
  263. package/instructions/framework.md +13 -3
  264. package/instructions/peer-dependencies.md +2 -1
  265. package/instructions/prompts.md +2 -1
  266. package/migrations/durable-tenant/0002_approval_cancellation.sql +3 -0
  267. package/migrations/durable-tenant/meta/_journal.json +7 -0
  268. package/package.json +6 -5
  269. package/dist/ai/__typecheck-fixtures__/legacy-cost-api.d.ts +0 -5
  270. package/dist/ai/__typecheck-fixtures__/legacy-cost-api.d.ts.map +0 -1
  271. package/dist/ai/__typecheck-fixtures__/legacy-cost-api.js +0 -15
  272. package/dist/ai/__typecheck-fixtures__/legacy-cost-api.js.map +0 -1
@@ -1,7 +1,35 @@
1
1
  import { validateTokenUsage } from './usage-validation.js';
2
2
  const MODEL_PRICING = {
3
3
  // ── OpenAI: Flagship ──
4
- 'gpt-6-astra': { kind: 'text', inputPerMTok: 10, outputPerMTok: 50 },
4
+ 'gpt-6-astra': {
5
+ kind: 'text',
6
+ inputPerMTok: 10,
7
+ outputPerMTok: 50,
8
+ cachedInputPerMTok: 1,
9
+ longContextThreshold: 272_000,
10
+ },
11
+ 'gpt-6-sol': {
12
+ kind: 'text',
13
+ inputPerMTok: 2,
14
+ outputPerMTok: 10,
15
+ cachedInputPerMTok: 0.2,
16
+ longContextThreshold: 272_000,
17
+ },
18
+ // https://developers.openai.com/api/docs/models/gpt-6.1-sol
19
+ 'gpt-6.1-sol': {
20
+ kind: 'text',
21
+ inputPerMTok: 2,
22
+ outputPerMTok: 10,
23
+ cachedInputPerMTok: 0.1,
24
+ longContextThreshold: 272_000,
25
+ },
26
+ 'gpt-6-luna': {
27
+ kind: 'text',
28
+ inputPerMTok: 0.1,
29
+ outputPerMTok: 0.5,
30
+ cachedInputPerMTok: 0.01,
31
+ longContextThreshold: 272_000,
32
+ },
5
33
  'gpt-5.6-sol': {
6
34
  kind: 'text',
7
35
  inputPerMTok: 5,
@@ -9,14 +37,34 @@ const MODEL_PRICING = {
9
37
  cachedInputPerMTok: 0.5,
10
38
  longContextThreshold: 272_000,
11
39
  },
12
- 'gpt-5.6-terra': { kind: 'text', inputPerMTok: 2, outputPerMTok: 12 },
13
- 'gpt-5.6-luna': { kind: 'text', inputPerMTok: 0.2, outputPerMTok: 1.2 },
14
- 'gpt-5.5': { kind: 'text', inputPerMTok: 5, outputPerMTok: 30 },
15
- 'gpt-5.5-pro': { kind: 'text', inputPerMTok: 30, outputPerMTok: 180 },
16
- 'gpt-5.4': { kind: 'text', inputPerMTok: 2.5, outputPerMTok: 15 },
40
+ 'gpt-5.6-terra': {
41
+ kind: 'text',
42
+ inputPerMTok: 2,
43
+ outputPerMTok: 12,
44
+ longContextThreshold: 272_000,
45
+ },
46
+ 'gpt-5.6-luna': {
47
+ kind: 'text',
48
+ inputPerMTok: 0.2,
49
+ outputPerMTok: 1.2,
50
+ longContextThreshold: 272_000,
51
+ },
52
+ 'gpt-5.5': { kind: 'text', inputPerMTok: 5, outputPerMTok: 30, longContextThreshold: 272_000 },
53
+ 'gpt-5.5-pro': {
54
+ kind: 'text',
55
+ inputPerMTok: 30,
56
+ outputPerMTok: 180,
57
+ longContextThreshold: 272_000,
58
+ },
59
+ 'gpt-5.4': { kind: 'text', inputPerMTok: 2.5, outputPerMTok: 15, longContextThreshold: 272_000 },
17
60
  'gpt-5.4-mini': { kind: 'text', inputPerMTok: 0.75, outputPerMTok: 4.5 },
18
61
  'gpt-5.4-nano': { kind: 'text', inputPerMTok: 0.2, outputPerMTok: 1.25 },
19
- 'gpt-5.4-pro': { kind: 'text', inputPerMTok: 30, outputPerMTok: 180 },
62
+ 'gpt-5.4-pro': {
63
+ kind: 'text',
64
+ inputPerMTok: 30,
65
+ outputPerMTok: 180,
66
+ longContextThreshold: 272_000,
67
+ },
20
68
  'gpt-5.2': { kind: 'text', inputPerMTok: 1.75, outputPerMTok: 14 },
21
69
  'gpt-5.2-pro': { kind: 'text', inputPerMTok: 21, outputPerMTok: 168 },
22
70
  'gpt-5.1': { kind: 'text', inputPerMTok: 1.25, outputPerMTok: 10 },
@@ -52,13 +100,14 @@ const MODEL_PRICING = {
52
100
  'o3-deep-research': { kind: 'text', inputPerMTok: 10, outputPerMTok: 40 },
53
101
  'o4-mini-deep-research': { kind: 'text', inputPerMTok: 2, outputPerMTok: 8 },
54
102
  'computer-use-preview': { kind: 'text', inputPerMTok: 3, outputPerMTok: 12 },
55
- // ── OpenAI: Specialized / ChatGPT, Codex, Cyber, Search ──
103
+ // ── OpenAI: Specialized / ChatGPT, Codex, Cyber, Life Sciences, Search ──
56
104
  'chat-latest': { kind: 'text', inputPerMTok: 5, outputPerMTok: 30 },
57
105
  'gpt-5.3-chat-latest': { kind: 'text', inputPerMTok: 1.75, outputPerMTok: 14 },
58
106
  'gpt-5.2-chat-latest': { kind: 'text', inputPerMTok: 1.75, outputPerMTok: 14 },
59
107
  'gpt-5.3-codex': { kind: 'text', inputPerMTok: 1.75, outputPerMTok: 14 },
60
108
  'gpt-5.6-cyber': { kind: 'text', inputPerMTok: 12.5, outputPerMTok: 75 },
61
109
  'gpt-5.5-cyber': { kind: 'text', inputPerMTok: 12.5, outputPerMTok: 75 },
110
+ 'gpt-rosalind-research': { kind: 'text', inputPerMTok: 5, outputPerMTok: 25 },
62
111
  'gpt-5-search-api': { kind: 'text', inputPerMTok: 1.25, outputPerMTok: 10 },
63
112
  // ── OpenAI: Embeddings ──
64
113
  'text-embedding-3-small': { kind: 'embedding', inputPerMTok: 0.02, outputPerMTok: 0 },
@@ -101,6 +150,12 @@ const MODEL_PRICING = {
101
150
  cachedInputPerMTok: 0.25,
102
151
  },
103
152
  'claude-mythos-5': { kind: 'text', inputPerMTok: 10, outputPerMTok: 50 },
153
+ 'claude-opus-5-5': {
154
+ kind: 'text',
155
+ inputPerMTok: 4,
156
+ outputPerMTok: 20,
157
+ cachedInputPerMTok: 0.2,
158
+ },
104
159
  'claude-opus-5': { kind: 'text', inputPerMTok: 5, outputPerMTok: 25 },
105
160
  'claude-opus-4-8': { kind: 'text', inputPerMTok: 5, outputPerMTok: 25 },
106
161
  'claude-opus-4-7': { kind: 'text', inputPerMTok: 5, outputPerMTok: 25 },
@@ -108,12 +163,26 @@ const MODEL_PRICING = {
108
163
  'claude-opus-4-5': { kind: 'text', inputPerMTok: 5, outputPerMTok: 25 },
109
164
  'claude-opus-4-1': { kind: 'text', inputPerMTok: 15, outputPerMTok: 75 },
110
165
  'claude-opus-4': { kind: 'text', inputPerMTok: 15, outputPerMTok: 75 },
166
+ 'claude-sonnet-5-5': {
167
+ kind: 'text',
168
+ inputPerMTok: 2,
169
+ outputPerMTok: 10,
170
+ cachedInputPerMTok: 0.1,
171
+ },
111
172
  'claude-sonnet-5': { kind: 'text', inputPerMTok: 2, outputPerMTok: 10 },
112
173
  'claude-sonnet-4-6': { kind: 'text', inputPerMTok: 3, outputPerMTok: 15 },
113
174
  'claude-sonnet-4-5': { kind: 'text', inputPerMTok: 3, outputPerMTok: 15 },
114
175
  'claude-sonnet-4': { kind: 'text', inputPerMTok: 3, outputPerMTok: 15 },
115
176
  'claude-3-7-sonnet': { kind: 'text', inputPerMTok: 3, outputPerMTok: 15 },
116
177
  'claude-3-5-sonnet': { kind: 'text', inputPerMTok: 3, outputPerMTok: 15 },
178
+ 'claude-haiku-5-5': {
179
+ kind: 'text',
180
+ inputPerMTok: 0.1,
181
+ outputPerMTok: 0.5,
182
+ cachedInputPerMTok: 0.01,
183
+ longContextThreshold: 100_000,
184
+ longContextRates: { inputPerMTok: 0.5, outputPerMTok: 2.5, cachedInputPerMTok: 0.05 },
185
+ },
117
186
  'claude-haiku-4-5': { kind: 'text', inputPerMTok: 1, outputPerMTok: 5 },
118
187
  'claude-3-5-haiku': { kind: 'text', inputPerMTok: 0.8, outputPerMTok: 4 },
119
188
  'claude-3-opus': { kind: 'text', inputPerMTok: 15, outputPerMTok: 75 },
@@ -170,6 +239,23 @@ function hasLongContextPremium(model) {
170
239
  const withoutDate = model.replace(/-\d{8}$/, '');
171
240
  return withoutDate !== model && LONG_CONTEXT_PREMIUM_MODELS.has(withoutDate);
172
241
  }
242
+ /** OpenAI's GPT-5.6 generation and later: `gpt-5.6*`, `gpt-5.7*`…, `gpt-6*`, `gpt-6.1*`…. */
243
+ function isGpt56OrLater(model) {
244
+ return /^gpt-(?:5\.(?:[6-9]|[1-9]\d)|[6-9]|[1-9]\d)(?:\.\d+)?(?:$|-)/.test(model);
245
+ }
246
+ /**
247
+ * What one cache-write token costs, as a multiple of the input rate:
248
+ * - Claude: 1.25×, Anthropic's five-minute cache write (one-hour writes are not modelled).
249
+ * - OpenAI GPT-5.6 and later: 1.25× ("For GPT-5.6 and later, cache writes cost 1.25× the
250
+ * standard, uncached input-token rate", https://developers.openai.com/api/docs/guides/prompt-caching;
251
+ * the pricing page's "Cache writes" column for `gpt-6-*` and `gpt-5.6-*`).
252
+ * - Every other OpenAI model: 1× ("No additional cache-write charge"; the pricing page shows "-"
253
+ * for its cache writes, and "Cache-write pricing does not apply" to `gpt-rosalind-research`):
254
+ * the token is billed as ordinary input.
255
+ */
256
+ function cacheWriteMultiplier(model) {
257
+ return model.startsWith('claude-') || isGpt56OrLater(model) ? 1.25 : 1;
258
+ }
173
259
  /** Legacy numeric cost helper. Use estimateModelCost when unknown must differ from free. */
174
260
  export function calculateModelCost(inputTokens, outputTokens, model, options) {
175
261
  return estimateModelCost(inputTokens, outputTokens, model, options) ?? 0;
@@ -179,9 +265,13 @@ export function calculateModelCost(inputTokens, outputTokens, model, options) {
179
265
  *
180
266
  * Pricing adjustments applied:
181
267
  * - **Cached input tokens**: published per-model rate, defaulting to 0.1× input.
182
- * - **Cache write tokens**: charged at 1.25× the base input rate (Anthropic 5-min cache).
268
+ * - **Cache write tokens**: 1.25× the base input rate for Claude and for OpenAI GPT-5.6 and
269
+ * later, the base input rate for earlier OpenAI models (`cacheWriteMultiplier`). Both providers
270
+ * count cache writes inside the input tokens, so they are priced once.
183
271
  * - **Long context premium**: for Claude Sonnet 4 / 4.5, when total input exceeds
184
- * 200K tokens, or GPT-5.6 Sol over 272K, charge 2× input/cache and 1.5× output.
272
+ * 200K tokens, or OpenAI models with a `longContextThreshold` (GPT-5.4 to GPT-6)
273
+ * over 272K, charge 2× input/cache and 1.5× output. Claude Haiku 5.5 over 100K uses
274
+ * its published `longContextRates`.
185
275
  *
186
276
  * Returns undefined for unknown/unsupported models; explicitly free adapters may report zero.
187
277
  */
@@ -204,17 +294,25 @@ export function estimateModelCost(inputTokens, outputTokens, model, options) {
204
294
  const totalInput = inputTokens; // Normalized input already includes cache reads and writes.
205
295
  const longContextThreshold = rate.longContextThreshold ?? (hasLongContextPremium(model) ? 200_000 : undefined);
206
296
  if (longContextThreshold != null && totalInput > longContextThreshold) {
207
- inputRate *= 2;
208
- cachedInputRate *= 2;
209
- outputRate *= 1.5;
297
+ const longRates = rate.longContextRates;
298
+ if (longRates) {
299
+ inputRate = longRates.inputPerMTok;
300
+ outputRate = longRates.outputPerMTok;
301
+ cachedInputRate = longRates.cachedInputPerMTok ?? longRates.inputPerMTok * 0.1;
302
+ }
303
+ else {
304
+ inputRate *= 2;
305
+ cachedInputRate *= 2;
306
+ outputRate *= 1.5;
307
+ }
210
308
  }
211
309
  // Standard (non-cached) input tokens
212
310
  const standardInput = inputTokens - cached - cacheWrites;
213
311
  const standardInputCost = Math.max(0, standardInput) * inputRate;
214
312
  // Use the published cache-read rate where it differs from the default.
215
313
  const cachedCost = cached * cachedInputRate;
216
- // Cache writes: 1.25× base input rate (five-minute cache pricing).
217
- const cacheWriteCost = cacheWrites * inputRate * 1.25;
314
+ // Cache writes: the model's cache-write rate (long-context premium included).
315
+ const cacheWriteCost = cacheWrites * inputRate * cacheWriteMultiplier(model);
218
316
  // Output tokens at standard (or long-context-premium) rate
219
317
  const outputCost = outputTokens * outputRate;
220
318
  const cost = (standardInputCost + cachedCost + cacheWriteCost + outputCost) / 1_000_000;
@@ -1 +1 @@
1
- {"version":3,"file":"model-pricing.js","sourceRoot":"","sources":["../../src/ai/model-pricing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-pricing.js","sourceRoot":"","sources":["../../src/ai/model-pricing.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * One schema that requires what `left` and `right` both require. Keywords only one side has are
3
+ * kept; keywords both have are combined where JSON Schema allows it (`type` and `enum`
4
+ * intersected, `properties` and `required` joined, `minItems` the larger, `items` and union
5
+ * branches merged in turn); where it does not (two different patterns or formats), the first is
6
+ * kept and the other is named in the description. Annotations (`title`, `default`) keep the
7
+ * first; descriptions are joined. Also used by `zodToProviderJsonSchema` to fold a union's only
8
+ * reachable branch into the node that holds it.
9
+ */
10
+ export declare function mergeTwoSchemas(left: Record<string, unknown>, right: Record<string, unknown>): Record<string, unknown>;
11
+ /**
12
+ * The schema as strict mode is sent it, at this node: `allOf` merged, union siblings distributed.
13
+ * `zodToProviderJsonSchema` merges an intersection of objects with it too, for every provider.
14
+ */
15
+ export declare function structuralSchema(node: Record<string, unknown>): Record<string, unknown>;
16
+ /**
17
+ * Project a provider-neutral structured-output schema (from `zodToProviderJsonSchema`) onto
18
+ * OpenAI's strict subset: every object lists all of its properties in `required`, and each
19
+ * property that was optional also accepts `null` (unless it already did). A string `format`
20
+ * outside `OPENAI_STRICT_STRING_FORMATS` (such as `uri`) is removed and named in the
21
+ * description, and so is a `default` (`dropDefault`). Every `allOf` is merged into one schema
22
+ * (`mergeAllOf`), since strict mode has no `allOf`. Nested objects, array items and every `anyOf`
23
+ * branch are projected too.
24
+ * The input is not mutated — `createAIService` caches it and shares it across providers.
25
+ */
26
+ export declare function toOpenAIStrictJsonSchema(schema: Record<string, unknown>): Record<string, unknown>;
27
+ /** The property a structured output whose root is not an object is sent and answered under. */
28
+ export declare const OPENAI_STRICT_OUTPUT_ENVELOPE_KEY = "value";
29
+ export interface OpenAIStrictOutputSchema {
30
+ /** The schema the request sends: `toOpenAIStrictJsonSchema(schema)`, in the envelope if needed. */
31
+ schema: Record<string, unknown>;
32
+ /** True when the answer comes back as `{"value": <answer>}` and has to be unwrapped. */
33
+ enveloped: boolean;
34
+ }
35
+ /**
36
+ * The schema an OpenAI strict structured output sends for `schema`. An object root goes as
37
+ * `toOpenAIStrictJsonSchema(schema)`. Any other root (`z.array(...)` — `classify()`, an
38
+ * `extract()` or prompt output that is an array, a union, an enum, a number, a nullable object)
39
+ * goes as the single required property `value` of an object, because OpenAI refuses a schema
40
+ * whose root is not an object; the adapter unwraps the answer, so callers never see the envelope.
41
+ */
42
+ export declare function toOpenAIStrictOutputSchema(schema: Record<string, unknown>): OpenAIStrictOutputSchema;
43
+ /**
44
+ * The answer inside an enveloped strict output (`{"value": [...]}` → `[...]`), as JSON text. An
45
+ * answer cut off inside the envelope's value (`max_tokens`) comes back as the part of the value
46
+ * it holds (`{"value":[{"a":"x"` → `[{"a":"x"`), as a stream of it would, so an
47
+ * `AIIncompleteOutputError`'s `partialText` does not show the envelope. Any other text (not the
48
+ * envelope, not JSON, or a complete value with something after it) comes back unchanged, for
49
+ * validation to report.
50
+ */
51
+ export declare function unwrapOpenAIStrictOutput(content: string): string;
52
+ export interface OpenAIStrictOutputStreamUnwrapper {
53
+ /** The part of a streamed text delta that belongs to the answer (may be empty). */
54
+ push(delta: string): string;
55
+ /**
56
+ * Once the stream has ended: text held back because it looked like the envelope's opening, or
57
+ * nothing if the whole opening `{"value":` had arrived (then it was the envelope, cut off
58
+ * before its value).
59
+ */
60
+ end(): string;
61
+ }
62
+ /**
63
+ * `unwrapOpenAIStrictOutput` for a streamed answer: the opening `{"value":` is held back until it
64
+ * is complete, the value is passed on as it arrives, and what follows it (the closing `}`) is
65
+ * dropped. A stream that does not open with the envelope is passed on unchanged, so validation
66
+ * sees exactly what the model wrote.
67
+ */
68
+ export declare function createOpenAIStrictOutputStreamUnwrapper(): OpenAIStrictOutputStreamUnwrapper;
69
+ /**
70
+ * Undo `toOpenAIStrictJsonSchema` on a parsed answer: drop a property whose value is `null` when
71
+ * `schema` (the provider-neutral schema the request carried) marks it optional and its own schema
72
+ * does not admit `null`. A property that admits `null` (`.nullable()`, `.nullish()`) keeps it.
73
+ *
74
+ * Union branches are chosen deterministically: the first branch the answer already satisfies
75
+ * keeps it unchanged; otherwise the first branch it satisfies once that branch's optional nulls
76
+ * are dropped. An answer that already satisfies `schema` comes back unchanged, so providers that
77
+ * honour the optional properties as they are (Anthropic, Bedrock) are unaffected. An answer that
78
+ * fits no branch is left for the Zod output schema to report.
79
+ *
80
+ * An `allOf` is read as the one schema strict mode was sent (merged, with an object's properties
81
+ * moved into the branches of a union it is intersected with), so an intersection's optionals are
82
+ * found whichever member declares them.
83
+ */
84
+ export declare function restoreOmittedOptionalProperties(value: unknown, rawSchema: unknown): unknown;
85
+ //# sourceMappingURL=openai-strict-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"openai-strict-schema.d.ts","sourceRoot":"","sources":["../../src/ai/openai-strict-schema.ts"],"names":[],"mappings":"AAqSA;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAyFzB;AAyDD;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEvF;AAsCD;;;;;;;;;GASG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAEjG;AAID,+FAA+F;AAC/F,eAAO,MAAM,iCAAiC,UAAU,CAAC;AAEzD,MAAM,WAAW,wBAAwB;IACvC,mGAAmG;IACnG,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,wFAAwF;IACxF,SAAS,EAAE,OAAO,CAAC;CACpB;AAUD;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,wBAAwB,CAY1B;AAYD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAiBhE;AAED,MAAM,WAAW,iCAAiC;IAChD,mFAAmF;IACnF,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B;;;;OAIG;IACH,GAAG,IAAI,MAAM,CAAC;CACf;AAID;;;;;GAKG;AACH,wBAAgB,uCAAuC,IAAI,iCAAiC,CAmG3F;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,GAAG,OAAO,CA8C5F"}