@warlock.js/ai 4.5.0 → 4.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/cjs/index.cjs +20 -1
  3. package/cjs/{src-DFibP2FQ.cjs → src-Bmajk4Qg.cjs} +1 -1
  4. package/cjs/{src-C02yzsLs.cjs → src-OZyDYHxm.cjs} +2789 -691
  5. package/cjs/src-OZyDYHxm.cjs.map +1 -0
  6. package/esm/agent/agent-config.type.d.mts +29 -0
  7. package/esm/agent/agent-config.type.d.mts.map +1 -1
  8. package/esm/agent/agent.d.mts.map +1 -1
  9. package/esm/agent/agent.mjs +126 -7
  10. package/esm/agent/agent.mjs.map +1 -1
  11. package/esm/agent/signature.mjs +57 -0
  12. package/esm/agent/signature.mjs.map +1 -0
  13. package/esm/agent/snapshot.mjs +101 -0
  14. package/esm/agent/snapshot.mjs.map +1 -0
  15. package/esm/ai-openai/src/image.mjs +5 -0
  16. package/esm/ai-openai/src/index.mjs +3 -0
  17. package/esm/ai-openai/src/sdk.mjs +3 -0
  18. package/esm/ai-openai/src/speech.mjs +5 -0
  19. package/esm/ai-openai/src/transcription.mjs +6 -0
  20. package/esm/ai-openai/src/utils/index.mjs +1 -0
  21. package/esm/ai-openai/src/utils/to-openai-messages.mjs +3 -0
  22. package/esm/ai.d.mts +45 -0
  23. package/esm/ai.d.mts.map +1 -1
  24. package/esm/ai.mjs +37 -1
  25. package/esm/ai.mjs.map +1 -1
  26. package/esm/contracts/agent/agent-options.type.d.mts +22 -2
  27. package/esm/contracts/agent/agent-options.type.d.mts.map +1 -1
  28. package/esm/contracts/agent/agent-snapshot.type.d.mts +90 -0
  29. package/esm/contracts/agent/agent-snapshot.type.d.mts.map +1 -0
  30. package/esm/contracts/agent/agent.contract.d.mts +29 -1
  31. package/esm/contracts/agent/agent.contract.d.mts.map +1 -1
  32. package/esm/contracts/agent/index.d.mts +2 -1
  33. package/esm/contracts/image-model.contract.d.mts +156 -0
  34. package/esm/contracts/image-model.contract.d.mts.map +1 -0
  35. package/esm/contracts/index.d.mts +8 -3
  36. package/esm/contracts/planner/index.d.mts +3 -2
  37. package/esm/contracts/planner/planner-config.type.d.mts +30 -0
  38. package/esm/contracts/planner/planner-config.type.d.mts.map +1 -1
  39. package/esm/contracts/planner/planner-execute-options.type.d.mts +13 -1
  40. package/esm/contracts/planner/planner-execute-options.type.d.mts.map +1 -1
  41. package/esm/contracts/planner/planner-snapshot.type.d.mts +77 -0
  42. package/esm/contracts/planner/planner-snapshot.type.d.mts.map +1 -0
  43. package/esm/contracts/planner/planner.contract.d.mts +21 -1
  44. package/esm/contracts/planner/planner.contract.d.mts.map +1 -1
  45. package/esm/contracts/result/base-report.type.d.mts +1 -1
  46. package/esm/contracts/result/base-report.type.d.mts.map +1 -1
  47. package/esm/contracts/result/base-report.type.mjs.map +1 -1
  48. package/esm/contracts/sdk-adapter.contract.d.mts +37 -0
  49. package/esm/contracts/sdk-adapter.contract.d.mts.map +1 -1
  50. package/esm/contracts/speech-model.contract.d.mts +97 -0
  51. package/esm/contracts/speech-model.contract.d.mts.map +1 -0
  52. package/esm/contracts/transcription-model.contract.d.mts +101 -0
  53. package/esm/contracts/transcription-model.contract.d.mts.map +1 -0
  54. package/esm/errors/agent-drift-error.d.mts +32 -0
  55. package/esm/errors/agent-drift-error.d.mts.map +1 -0
  56. package/esm/errors/agent-drift-error.mjs +31 -0
  57. package/esm/errors/agent-drift-error.mjs.map +1 -0
  58. package/esm/errors/error-code.type.d.mts +1 -1
  59. package/esm/errors/index.d.mts +2 -0
  60. package/esm/errors/index.mjs +2 -0
  61. package/esm/errors/planner-drift-error.d.mts +34 -0
  62. package/esm/errors/planner-drift-error.d.mts.map +1 -0
  63. package/esm/errors/planner-drift-error.mjs +33 -0
  64. package/esm/errors/planner-drift-error.mjs.map +1 -0
  65. package/esm/image/image-cost.d.mts +32 -0
  66. package/esm/image/image-cost.d.mts.map +1 -0
  67. package/esm/image/image-cost.mjs +55 -0
  68. package/esm/image/image-cost.mjs.map +1 -0
  69. package/esm/image/image.d.mts +92 -0
  70. package/esm/image/image.d.mts.map +1 -0
  71. package/esm/image/image.mjs +113 -0
  72. package/esm/image/image.mjs.map +1 -0
  73. package/esm/image/index.mjs +4 -0
  74. package/esm/index.d.mts +26 -4
  75. package/esm/index.mjs +20 -1
  76. package/esm/mock/index.d.mts +3 -0
  77. package/esm/mock/index.mjs +3 -0
  78. package/esm/mock/mock-config.type.d.mts +22 -0
  79. package/esm/mock/mock-config.type.d.mts.map +1 -1
  80. package/esm/mock/mock-image-model.d.mts +41 -0
  81. package/esm/mock/mock-image-model.d.mts.map +1 -0
  82. package/esm/mock/mock-image-model.mjs +52 -0
  83. package/esm/mock/mock-image-model.mjs.map +1 -0
  84. package/esm/mock/mock-sdk.d.mts +7 -1
  85. package/esm/mock/mock-sdk.d.mts.map +1 -1
  86. package/esm/mock/mock-sdk.mjs +27 -0
  87. package/esm/mock/mock-sdk.mjs.map +1 -1
  88. package/esm/mock/mock-speech-model.d.mts +31 -0
  89. package/esm/mock/mock-speech-model.d.mts.map +1 -0
  90. package/esm/mock/mock-speech-model.mjs +39 -0
  91. package/esm/mock/mock-speech-model.mjs.map +1 -0
  92. package/esm/mock/mock-transcription-model.d.mts +32 -0
  93. package/esm/mock/mock-transcription-model.d.mts.map +1 -0
  94. package/esm/mock/mock-transcription-model.mjs +36 -0
  95. package/esm/mock/mock-transcription-model.mjs.map +1 -0
  96. package/esm/planner/planner-run.d.mts +8 -0
  97. package/esm/planner/planner-run.d.mts.map +1 -1
  98. package/esm/planner/planner-run.mjs +161 -6
  99. package/esm/planner/planner-run.mjs.map +1 -1
  100. package/esm/planner/planner.d.mts.map +1 -1
  101. package/esm/planner/planner.mjs +25 -1
  102. package/esm/planner/planner.mjs.map +1 -1
  103. package/esm/planner/snapshot.mjs +95 -0
  104. package/esm/planner/snapshot.mjs.map +1 -0
  105. package/esm/rag/index.d.mts +7 -0
  106. package/esm/rag/index.mjs +7 -0
  107. package/esm/rag/loaders/errors.d.mts +19 -0
  108. package/esm/rag/loaders/errors.d.mts.map +1 -0
  109. package/esm/rag/loaders/errors.mjs +25 -0
  110. package/esm/rag/loaders/errors.mjs.map +1 -0
  111. package/esm/rag/loaders/index.mjs +7 -0
  112. package/esm/rag/loaders/load-html.d.mts +26 -0
  113. package/esm/rag/loaders/load-html.d.mts.map +1 -0
  114. package/esm/rag/loaders/load-html.mjs +138 -0
  115. package/esm/rag/loaders/load-html.mjs.map +1 -0
  116. package/esm/rag/loaders/load-pdf.d.mts +38 -0
  117. package/esm/rag/loaders/load-pdf.d.mts.map +1 -0
  118. package/esm/rag/loaders/load-pdf.mjs +150 -0
  119. package/esm/rag/loaders/load-pdf.mjs.map +1 -0
  120. package/esm/rag/loaders/load-text.d.mts +47 -0
  121. package/esm/rag/loaders/load-text.d.mts.map +1 -0
  122. package/esm/rag/loaders/load-text.mjs +60 -0
  123. package/esm/rag/loaders/load-text.mjs.map +1 -0
  124. package/esm/rag/loaders/load-web.d.mts +42 -0
  125. package/esm/rag/loaders/load-web.d.mts.map +1 -0
  126. package/esm/rag/loaders/load-web.mjs +89 -0
  127. package/esm/rag/loaders/load-web.mjs.map +1 -0
  128. package/esm/rag/loaders/loader.type.d.mts +89 -0
  129. package/esm/rag/loaders/loader.type.d.mts.map +1 -0
  130. package/esm/rag/store/pg-vector-store.d.mts +139 -0
  131. package/esm/rag/store/pg-vector-store.d.mts.map +1 -0
  132. package/esm/rag/store/pg-vector-store.mjs +328 -0
  133. package/esm/rag/store/pg-vector-store.mjs.map +1 -0
  134. package/esm/speech/index.mjs +3 -0
  135. package/esm/speech/speech.d.mts +65 -0
  136. package/esm/speech/speech.d.mts.map +1 -0
  137. package/esm/speech/speech.mjs +123 -0
  138. package/esm/speech/speech.mjs.map +1 -0
  139. package/esm/supervisor/entries.mjs +2 -2
  140. package/esm/supervisor/entries.mjs.map +1 -1
  141. package/esm/transcribe/audio-input.d.mts +47 -0
  142. package/esm/transcribe/audio-input.d.mts.map +1 -0
  143. package/esm/transcribe/audio-input.mjs +84 -0
  144. package/esm/transcribe/audio-input.mjs.map +1 -0
  145. package/esm/transcribe/index.mjs +4 -0
  146. package/esm/transcribe/transcribe.d.mts +64 -0
  147. package/esm/transcribe/transcribe.d.mts.map +1 -0
  148. package/esm/transcribe/transcribe.mjs +128 -0
  149. package/esm/transcribe/transcribe.mjs.map +1 -0
  150. package/llms-full.txt +753 -0
  151. package/llms.txt +5 -0
  152. package/package.json +3 -3
  153. package/skills/README.md +4 -0
  154. package/skills/durable-agent-runs/SKILL.md +135 -0
  155. package/skills/generate-images/SKILL.md +138 -0
  156. package/skills/generate-speech/SKILL.md +139 -0
  157. package/skills/rag-loaders-and-stores/SKILL.md +164 -0
  158. package/skills/transcribe-audio/SKILL.md +157 -0
  159. package/cjs/src-C02yzsLs.cjs.map +0 -1
package/CHANGELOG.md CHANGED
@@ -4,6 +4,20 @@ All notable changes to `@warlock.js/ai` are documented in this file.
4
4
 
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). `@warlock.js/*` packages are released in lockstep — every package shares the same version number, so a version below may list only the changes that affected this package.
6
6
 
7
+ ## 4.6.0
8
+
9
+ ### Added
10
+
11
+ - **`ai.image(params)`** — image generation, the first verb of the output-modality track (Theme I). Wraps an `ImageModelContract` in the uniform never-throws `{ data, error, usage, report }` envelope, with cost-truth (per-token for `gpt-image`, per-image for DALL·E / Imagen) folded into the same `Usage.cost` rollup and a `type: "image"` report routed to observers. Ships on the OpenAI + Google adapters.
12
+ - **`SDKAdapterContract.image?(config)`** — the image-model capability seam, mirroring `embedder?()`. Adds `ImageModelContract`, `GeneratedImage` (discriminated `base64` | `url`), `ImageModelPricing`, and `ImageGenerationOptions`.
13
+ - **`MockSDK().image(...)` + `MockImageModel`** — deterministic image doubles (scriptable responses, recorded calls, pricing) for tests.
14
+ - **`ai.speech(params)` + `ai.transcribe(params)`** — text-to-speech and speech-to-text, the audio verbs of the modality track. Same uniform never-throws envelope + cost-truth (per-character / per-minute / per-token). New `SpeechModelContract` / `TranscriptionModelContract` on `SDKAdapterContract.speech?()` / `transcribe?()`, plus `MockSpeechModel` / `MockTranscriptionModel`.
15
+ - **`ai.audioFromFile(path)` / `ai.audioFromBuffer(bytes, mediaType)` / `ai.audioMediaTypeForFilename(name)`** — non-AI utilities that package audio (WhatsApp `.ogg`/`.opus`, iOS `.m4a`, …) into the `AudioInput` shape `ai.transcribe` consumes.
16
+ - **`ai.rag.pgVectorStore({ client })`** — a Postgres + pgvector vector store satisfying `VectorStoreContract` (upsert / query / removeNamespace), with an `ensureSchema()` DDL helper and a lazy `pg` optional peer.
17
+ - **`ai.rag.loadText` / `loadHtml` / `loadWeb` / `loadPdf`** — document loaders producing `RagDocument`s for `.index()`. `loadWeb` is SSRF-safe (routes through `guardedFetch` / `OutboundPolicy`); `loadPdf` uses a lazy `pdf-parse` optional peer.
18
+ - **Durable mid-run crash-resume** — opt-in `durable: { store, deleteOnComplete? }` on `ai.agent` / `ai.planner` with a stable `runId` + `agent.resume(runId)` / `planner.resume(runId)`. Per-trip (agent) / per-node (planner) checkpoints reuse `ai.snapshot.{memory,pg,redis}`; drift detection via `AgentDriftError` / `PlannerDriftError` (bypass with `{ force: true }`); completed work never re-runs its tools and usage is never double-counted.
19
+ - **`ai.rag.*` namespace** now also carries `chunk`, `cacheVectorStore`, `pgVectorStore`, `loadText`/`loadHtml`/`loadWeb`/`loadPdf`, `bm25Rank`, `reciprocalRankFusion`, `hybridRank`, `multiQuery` (previously standalone-only exports), for `ai.*`-namespace consistency.
20
+
7
21
  ## 4.5.0 - 2026-07-01
8
22
 
9
23
  ### Added
package/cjs/index.cjs CHANGED
@@ -1,9 +1,10 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_src = require('./src-C02yzsLs.cjs');
2
+ const require_src = require('./src-OZyDYHxm.cjs');
3
3
  const require_matcher_logic = require('./matcher-logic-SBnzYohQ.cjs');
4
4
 
5
5
  exports.AIError = require_src.AIError;
6
6
  exports.AgentCancelledError = require_src.AgentCancelledError;
7
+ exports.AgentDriftError = require_src.AgentDriftError;
7
8
  exports.AgentExecutionError = require_src.AgentExecutionError;
8
9
  exports.AgentMaxTripsError = require_src.AgentMaxTripsError;
9
10
  exports.ApprovalRejectedError = require_src.ApprovalRejectedError;
@@ -20,9 +21,12 @@ exports.InvalidRequestError = require_src.InvalidRequestError;
20
21
  exports.JUDGE_DEFAULT_REPAIR_ATTEMPTS = require_src.JUDGE_DEFAULT_REPAIR_ATTEMPTS;
21
22
  exports.MaxIterationsError = require_src.MaxIterationsError;
22
23
  exports.MaxStepsExceededError = require_src.MaxStepsExceededError;
24
+ exports.MockImageModel = require_src.MockImageModel;
23
25
  exports.MockModel = require_src.MockModel;
24
26
  exports.MockSDK = require_src.MockSDK;
25
27
  exports.MockSkillsStore = require_src.MockSkillsStore;
28
+ exports.MockSpeechModel = require_src.MockSpeechModel;
29
+ exports.MockTranscriptionModel = require_src.MockTranscriptionModel;
26
30
  exports.OPENAI_INSTALL_INSTRUCTIONS = require_src.OPENAI_INSTALL_INSTRUCTIONS;
27
31
  exports.OrchestratorCancelledError = require_src.OrchestratorCancelledError;
28
32
  exports.OrchestratorConfigError = require_src.OrchestratorConfigError;
@@ -31,8 +35,10 @@ exports.OrchestratorEmitter = require_src.OrchestratorEmitter;
31
35
  exports.OrchestratorExecution = require_src.OrchestratorExecution;
32
36
  exports.OrchestratorFailedError = require_src.OrchestratorFailedError;
33
37
  exports.OutboundPolicyError = require_src.OutboundPolicyError;
38
+ exports.PDF_PARSE_INSTALL_INSTRUCTIONS = require_src.PDF_PARSE_INSTALL_INSTRUCTIONS;
34
39
  exports.Persona = require_src.Persona;
35
40
  exports.PlannerCancelledError = require_src.PlannerCancelledError;
41
+ exports.PlannerDriftError = require_src.PlannerDriftError;
36
42
  exports.PlannerFailedError = require_src.PlannerFailedError;
37
43
  exports.PlannerPlanInvalidError = require_src.PlannerPlanInvalidError;
38
44
  exports.PromptNotFoundError = require_src.PromptNotFoundError;
@@ -65,6 +71,9 @@ exports.agent = require_src.agent;
65
71
  exports.ai = require_src.ai;
66
72
  exports.approximateTokenCount = require_src.approximateTokenCount;
67
73
  exports.assertUrlAllowed = require_src.assertUrlAllowed;
74
+ exports.audioFromBuffer = require_src.audioFromBuffer;
75
+ exports.audioFromFile = require_src.audioFromFile;
76
+ exports.audioMediaTypeForFilename = require_src.audioMediaTypeForFilename;
68
77
  exports.batch = require_src.batch;
69
78
  exports.bm25Rank = require_src.bm25Rank;
70
79
  exports.budget = require_src.budget;
@@ -80,6 +89,7 @@ exports.chunk = require_src.chunk;
80
89
  exports.collectStreamObject = require_src.collectStreamObject;
81
90
  exports.composeMiddleware = require_src.composeMiddleware;
82
91
  exports.computeCost = require_src.computeCost;
92
+ exports.computeImageCost = require_src.computeImageCost;
83
93
  exports.computeOrchestratorSignature = require_src.computeOrchestratorSignature;
84
94
  exports.computePlannerSignature = require_src.computeSignature$1;
85
95
  exports.computeSignature = require_src.computeSignature;
@@ -118,6 +128,7 @@ exports.guardrail = require_src.guardrail;
118
128
  exports.hashRequest = require_src.hashRequest;
119
129
  exports.humanApproval = require_src.humanApproval;
120
130
  exports.hybridRank = require_src.hybridRank;
131
+ exports.image = require_src.image;
121
132
  exports.inProcessSessionLock = require_src.inProcessSessionLock;
122
133
  exports.injectOrchestratorMemories = require_src.injectMemories;
123
134
  exports.injection = require_src.injection;
@@ -131,9 +142,13 @@ exports.isPrivateOrReservedIp = require_src.isPrivateOrReservedIp;
131
142
  exports.judge = require_src.judge;
132
143
  exports.keywordReranker = require_src.keywordReranker;
133
144
  exports.llmReranker = require_src.llmReranker;
145
+ exports.loadHtml = require_src.loadHtml;
146
+ exports.loadPdf = require_src.loadPdf;
134
147
  exports.loadRecord = require_src.loadRecord;
135
148
  exports.loadSkillTool = require_src.loadSkillTool;
136
149
  exports.loadSupervisorSnapshotForResume = require_src.loadSnapshotForResume;
150
+ exports.loadText = require_src.loadText;
151
+ exports.loadWeb = require_src.loadWeb;
137
152
  exports.matchConverge = require_matcher_logic.matchConverge;
138
153
  exports.matchOutputShape = require_matcher_logic.matchOutputShape;
139
154
  exports.matchPassStep = require_matcher_logic.matchPassStep;
@@ -157,6 +172,7 @@ exports.parsePartialJson = require_src.parsePartialJson;
157
172
  exports.parseTags = require_src.parseTags;
158
173
  exports.persistSupervisorSnapshot = require_src.persistSupervisorSnapshot;
159
174
  exports.persona = require_src.persona;
175
+ exports.pgVectorStore = require_src.pgVectorStore;
160
176
  exports.pii = require_src.pii;
161
177
  exports.planSchema = require_src.planSchema;
162
178
  exports.planner = require_src.planner;
@@ -208,6 +224,7 @@ exports.snapshotMemory = require_src.memory;
208
224
  exports.snapshotPg = require_src.pg;
209
225
  exports.snapshotRedis = require_src.redis;
210
226
  exports.spawnSubAgent = require_src.spawnSubAgent;
227
+ exports.speech = require_src.speech;
211
228
  exports.stampReportLineage = require_src.stampReportLineage;
212
229
  exports.step = require_src.step;
213
230
  exports.storeSource = require_src.storeSource;
@@ -222,8 +239,10 @@ exports.toJSON = require_src.toJSON;
222
239
  exports.toJUnit = require_src.toJUnit;
223
240
  exports.tool = require_src.tool;
224
241
  exports.topic = require_src.topic;
242
+ exports.transcribe = require_src.transcribe;
225
243
  exports.urlSource = require_src.urlSource;
226
244
  exports.vcr = require_src.vcr;
245
+ exports.vectorLiteral = require_src.vectorLiteral;
227
246
  exports.withRunFrame = require_src.withRunFrame;
228
247
  exports.withoutRunFrame = require_src.withoutRunFrame;
229
248
  exports.workflow = require_src.workflow;
@@ -25,6 +25,6 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
25
25
  }) : target, mod));
26
26
 
27
27
  //#endregion
28
- require('./src-C02yzsLs.cjs');
28
+ require('./src-OZyDYHxm.cjs');
29
29
  let _warlock_js_logger = require("@warlock.js/logger");
30
30
  require("openai");