@spendgraph/tools 0.6.0 → 0.8.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 (211) hide show
  1. package/README.md +3 -2
  2. package/dist/builtin/calculate/calculate.d.ts +2 -0
  3. package/dist/builtin/calculate/calculate.js +1 -1
  4. package/dist/builtin/calculate/index.d.ts +2 -1
  5. package/dist/builtin/calculate/index.js +1 -1
  6. package/dist/builtin/code-exec/code-exec.d.ts +14 -0
  7. package/dist/builtin/date/date.d.ts +1 -1
  8. package/dist/builtin/date/date.js +1 -1
  9. package/dist/builtin/date/index.d.ts +1 -0
  10. package/dist/builtin/date/index.js +1 -1
  11. package/dist/builtin/date/shift.d.ts +1 -1
  12. package/dist/builtin/date/shift.js +1 -1
  13. package/dist/builtin/date/words.d.ts +13 -0
  14. package/dist/builtin/date/words.js +1 -0
  15. package/dist/builtin/decline/decline.d.ts +49 -0
  16. package/dist/builtin/decline/decline.js +1 -0
  17. package/dist/builtin/decline/index.d.ts +1 -0
  18. package/dist/builtin/decline/index.js +1 -0
  19. package/dist/builtin/escalate/escalate.d.ts +19 -0
  20. package/dist/builtin/escalate/escalate.js +1 -1
  21. package/dist/builtin/escalate/index.d.ts +1 -1
  22. package/dist/builtin/escalate/index.js +1 -1
  23. package/dist/builtin/extract/extract.d.ts +25 -0
  24. package/dist/builtin/extract/extract.js +1 -0
  25. package/dist/builtin/extract/index.d.ts +3 -0
  26. package/dist/builtin/extract/index.js +1 -0
  27. package/dist/builtin/extract/kinds.d.ts +6 -0
  28. package/dist/builtin/extract/kinds.js +1 -0
  29. package/dist/builtin/extract/readers.d.ts +7 -0
  30. package/dist/builtin/extract/readers.js +9 -0
  31. package/dist/builtin/finish/finish.d.ts +4 -0
  32. package/dist/builtin/finish/finish.js +1 -1
  33. package/dist/builtin/http/allow.d.ts +2 -0
  34. package/dist/builtin/http/allow.js +1 -1
  35. package/dist/builtin/http/hops.d.ts +10 -0
  36. package/dist/builtin/http/hops.js +1 -0
  37. package/dist/builtin/http/http.d.ts +9 -1
  38. package/dist/builtin/http/http.js +1 -1
  39. package/dist/builtin/http/index.d.ts +2 -0
  40. package/dist/builtin/http/index.js +1 -1
  41. package/dist/builtin/http/retry-after.d.ts +14 -0
  42. package/dist/builtin/http/retry-after.js +1 -0
  43. package/dist/builtin/index.d.ts +11 -6
  44. package/dist/builtin/index.js +1 -1
  45. package/dist/builtin/json/index.d.ts +1 -0
  46. package/dist/builtin/json/index.js +1 -1
  47. package/dist/builtin/json/json.js +1 -1
  48. package/dist/builtin/json/parse.d.ts +15 -0
  49. package/dist/builtin/json/parse.js +1 -0
  50. package/dist/builtin/notes/index.d.ts +1 -0
  51. package/dist/builtin/notes/index.js +1 -0
  52. package/dist/builtin/notes/notes.d.ts +45 -0
  53. package/dist/builtin/notes/notes.js +2 -0
  54. package/dist/builtin/openalex/api.d.ts +26 -0
  55. package/dist/builtin/openalex/api.js +1 -0
  56. package/dist/builtin/openalex/index.d.ts +3 -0
  57. package/dist/builtin/openalex/index.js +1 -0
  58. package/dist/builtin/openalex/openalex.d.ts +36 -0
  59. package/dist/builtin/openalex/openalex.js +1 -0
  60. package/dist/builtin/paper-search/index.d.ts +1 -0
  61. package/dist/builtin/paper-search/index.js +1 -0
  62. package/dist/builtin/paper-search/paper-search.d.ts +38 -0
  63. package/dist/builtin/paper-search/paper-search.js +3 -0
  64. package/dist/builtin/polite.d.ts +15 -0
  65. package/dist/builtin/polite.js +1 -0
  66. package/dist/builtin/publish/index.d.ts +1 -0
  67. package/dist/builtin/publish/index.js +1 -0
  68. package/dist/builtin/publish/publish.d.ts +46 -0
  69. package/dist/builtin/publish/publish.js +1 -0
  70. package/dist/builtin/web-search/web-search.d.ts +10 -35
  71. package/dist/builtin/web-search/web-search.js +1 -1
  72. package/dist/builtin/wikidata/api.d.ts +40 -0
  73. package/dist/builtin/wikidata/api.js +1 -0
  74. package/dist/builtin/wikidata/index.d.ts +5 -0
  75. package/dist/builtin/wikidata/index.js +1 -0
  76. package/dist/builtin/wikidata/render.d.ts +13 -0
  77. package/dist/builtin/wikidata/render.js +2 -0
  78. package/dist/builtin/wikidata/wikidata.d.ts +23 -0
  79. package/dist/builtin/wikidata/wikidata.js +1 -0
  80. package/dist/bus/bus.d.ts +23 -1
  81. package/dist/bus/bus.js +1 -1
  82. package/dist/bus/group.d.ts +14 -1
  83. package/dist/bus/group.js +1 -1
  84. package/dist/bus/index.d.ts +4 -1
  85. package/dist/bus/index.js +1 -1
  86. package/dist/bus/invoke.d.ts +1 -1
  87. package/dist/bus/invoke.js +3 -1
  88. package/dist/bus/namespace.d.ts +21 -0
  89. package/dist/bus/namespace.js +1 -0
  90. package/dist/bus/once.d.ts +32 -0
  91. package/dist/bus/once.js +1 -0
  92. package/dist/bus/only.d.ts +29 -0
  93. package/dist/bus/options.d.ts +31 -0
  94. package/dist/bus/output.d.ts +0 -17
  95. package/dist/bus/output.js +2 -2
  96. package/dist/bus/select.d.ts +0 -16
  97. package/dist/bus/select.js +1 -1
  98. package/dist/bus/spent.d.ts +16 -0
  99. package/dist/bus/spent.js +1 -0
  100. package/dist/bus/trace.d.ts +14 -1
  101. package/dist/bus/trace.js +1 -1
  102. package/dist/index.d.ts +6 -4
  103. package/dist/index.js +1 -1
  104. package/dist/internals.d.ts +8 -1
  105. package/dist/internals.js +1 -1
  106. package/dist/memories/client.d.ts +91 -0
  107. package/dist/memories/client.js +0 -0
  108. package/dist/memories/context.d.ts +5 -0
  109. package/dist/memories/context.js +1 -0
  110. package/dist/{builtin → memories}/deep-recall/deep-recall.d.ts +3 -0
  111. package/dist/memories/deep-recall/deep-recall.js +1 -0
  112. package/dist/memories/explore/explore.d.ts +18 -0
  113. package/dist/memories/explore/explore.js +7 -0
  114. package/dist/memories/explore/subgraph.d.ts +12 -0
  115. package/dist/memories/explore/subgraph.js +3 -0
  116. package/dist/memories/index.d.ts +30 -0
  117. package/dist/memories/index.js +1 -0
  118. package/dist/memories/observe/observe.d.ts +7 -0
  119. package/dist/memories/observe/observe.js +1 -0
  120. package/dist/memories/recall/recall.d.ts +42 -0
  121. package/dist/memories/recall/recall.js +1 -0
  122. package/dist/memories/recall/render.d.ts +5 -0
  123. package/dist/memories/recall/render.js +3 -0
  124. package/dist/memories/remember/remember.d.ts +49 -0
  125. package/dist/memories/remember/remember.js +1 -0
  126. package/dist/papers/consensus/consensus.d.ts +12 -0
  127. package/dist/papers/consensus/consensus.js +1 -0
  128. package/dist/papers/consensus/index.d.ts +4 -0
  129. package/dist/papers/consensus/index.js +1 -0
  130. package/dist/papers/consensus/reply.d.ts +24 -0
  131. package/dist/papers/consensus/reply.js +1 -0
  132. package/dist/papers/every.d.ts +6 -0
  133. package/dist/papers/every.js +1 -0
  134. package/dist/papers/index.d.ts +11 -0
  135. package/dist/papers/index.js +1 -0
  136. package/dist/papers/openalex/index.d.ts +2 -0
  137. package/dist/papers/openalex/index.js +1 -0
  138. package/dist/papers/openalex/openalex.d.ts +8 -0
  139. package/dist/papers/openalex/openalex.js +1 -0
  140. package/dist/papers/papers.d.ts +54 -0
  141. package/dist/papers/papers.js +1 -0
  142. package/dist/papers/render.d.ts +2 -0
  143. package/dist/papers/render.js +4 -0
  144. package/dist/papers/semantic-scholar/index.d.ts +4 -0
  145. package/dist/papers/semantic-scholar/index.js +1 -0
  146. package/dist/papers/semantic-scholar/reply.d.ts +29 -0
  147. package/dist/papers/semantic-scholar/reply.js +1 -0
  148. package/dist/papers/semantic-scholar/semantic-scholar.d.ts +8 -0
  149. package/dist/papers/semantic-scholar/semantic-scholar.js +1 -0
  150. package/dist/search/every.d.ts +6 -0
  151. package/dist/search/every.js +4 -0
  152. package/dist/search/index.d.ts +7 -0
  153. package/dist/search/index.js +1 -0
  154. package/dist/search/retry.d.ts +6 -0
  155. package/dist/search/retry.js +1 -0
  156. package/dist/search/search.d.ts +69 -0
  157. package/dist/search/search.js +1 -0
  158. package/dist/search/searxng/index.d.ts +2 -0
  159. package/dist/search/searxng/index.js +1 -0
  160. package/dist/search/searxng/searxng.d.ts +14 -0
  161. package/dist/search/searxng/searxng.js +5 -0
  162. package/dist/search/searxng/text.d.ts +2 -0
  163. package/dist/search/searxng/text.js +3 -0
  164. package/dist/search/sonar/index.d.ts +2 -0
  165. package/dist/search/sonar/index.js +1 -0
  166. package/dist/search/sonar/sonar.d.ts +13 -0
  167. package/dist/search/sonar/sonar.js +1 -0
  168. package/dist/search/tavily/index.d.ts +4 -0
  169. package/dist/search/tavily/index.js +1 -0
  170. package/dist/search/tavily/reply.d.ts +22 -0
  171. package/dist/search/tavily/reply.js +5 -0
  172. package/dist/search/tavily/tavily.d.ts +14 -0
  173. package/dist/search/tavily/tavily.js +1 -0
  174. package/dist/testing/index.d.ts +2 -0
  175. package/dist/testing/index.js +1 -0
  176. package/dist/testing/replay.d.ts +55 -0
  177. package/dist/testing/replay.js +1 -0
  178. package/dist/testing/store.d.ts +35 -0
  179. package/dist/testing/store.js +4 -0
  180. package/dist/tool/tool.d.ts +8 -1
  181. package/dist/tool/tool.js +1 -1
  182. package/dist/types/index.d.ts +1 -1
  183. package/dist/types/result.d.ts +38 -0
  184. package/dist/types/tool.d.ts +74 -0
  185. package/docs/bogus.mdx +85 -0
  186. package/docs/builtins.mdx +217 -0
  187. package/docs/bus.mdx +90 -0
  188. package/docs/declaring.mdx +85 -0
  189. package/docs/effects.mdx +49 -0
  190. package/docs/overview.mdx +76 -0
  191. package/docs/selecting.mdx +79 -0
  192. package/docs/stored.mdx +83 -0
  193. package/docs/turns.mdx +57 -0
  194. package/package.json +28 -9
  195. package/dist/builtin/deep-recall/deep-recall.js +0 -1
  196. package/dist/builtin/write-document/commission.d.ts +0 -56
  197. package/dist/builtin/write-document/commission.js +0 -13
  198. package/dist/builtin/write-document/design.d.ts +0 -49
  199. package/dist/builtin/write-document/design.js +0 -5
  200. package/dist/builtin/write-document/http.d.ts +0 -34
  201. package/dist/builtin/write-document/http.js +0 -1
  202. package/dist/builtin/write-document/index.d.ts +0 -6
  203. package/dist/builtin/write-document/index.js +0 -1
  204. package/dist/builtin/write-document/types.d.ts +0 -33
  205. package/dist/builtin/write-document/write-document.d.ts +0 -69
  206. package/dist/builtin/write-document/write-document.js +0 -1
  207. /package/dist/{builtin/write-document/types.js → bus/only.js} +0 -0
  208. /package/dist/{builtin → memories}/deep-recall/index.d.ts +0 -0
  209. /package/dist/{builtin → memories}/deep-recall/index.js +0 -0
  210. /package/dist/{builtin/web-search → search/sonar}/reply.d.ts +0 -0
  211. /package/dist/{builtin/web-search → search/sonar}/reply.js +0 -0
@@ -1,34 +0,0 @@
1
- /** Anything shaped like an `AbortSignal`, so a Worker's own signal fits too. */
2
- export interface AbortSignalLike {
3
- readonly aborted: boolean;
4
- addEventListener(type: "abort", listener: () => void, opts?: {
5
- once?: boolean;
6
- }): void;
7
- removeEventListener(type: "abort", listener: () => void): void;
8
- }
9
- /** Where Moa lives, unless a config says otherwise. */
10
- export declare const MOA_BASE_URL = "https://api.fnmoa.com";
11
- export interface MoaClientConfig {
12
- /** Read from here rather than the environment, as every other builtin does. */
13
- apiKey?: string;
14
- baseUrl?: string;
15
- /** Ceiling on one HTTP call, not on the commission. Default 60000. */
16
- timeoutMs?: number;
17
- /** Injected for tests. */
18
- fetch?: typeof fetch;
19
- }
20
- /** A non-2xx from Moa, carrying the status so a caller can tell 4xx from 5xx. */
21
- export declare class MoaApiError extends Error {
22
- readonly status: number;
23
- readonly detail?: string;
24
- constructor(message: string, status: number, detail?: string);
25
- }
26
- interface RequestOptions {
27
- method?: string;
28
- body?: unknown;
29
- signal?: AbortSignalLike;
30
- timeoutMs?: number;
31
- }
32
- /** One `request<T>(path, opts)` against Moa, with auth, timeout and error shape settled. */
33
- export declare function createRequest(config?: MoaClientConfig): <T>(path: string, opts?: RequestOptions) => Promise<T>;
34
- export {};
@@ -1 +0,0 @@
1
- const f="https://api.fnmoa.com",M=6e4,_=500;class c extends Error{status;detail;constructor(t,s,n){super(n?`${t}: ${n}`:t),this.name="MoaApiError",this.status=s,this.detail=n}}function T(e){const t=e.cause;return t?.code??t?.message??e.message}function m(e,t){const s=new AbortController,n=()=>s.abort();let r=!1;const o=setTimeout(()=>{r=!0,n()},e);return t?.addEventListener("abort",n,{once:!0}),t?.aborted&&n(),{signal:s.signal,expired:()=>r,release:()=>{clearTimeout(o),t?.removeEventListener("abort",n)}}}function $(e={}){const t=e.fetch??globalThis.fetch.bind(globalThis),s=(e.baseUrl??f).replace(/\/+$/,"");return async function(r,o={}){const u=o.timeoutMs??e.timeoutMs??6e4,i=o.method??"GET",d=`${s}${r}`,{signal:E,expired:h,release:b}=m(u,o.signal);try{const a=await t(d,{method:i,signal:E,headers:{...e.apiKey?{authorization:`Bearer ${e.apiKey}`}:{},...o.body===void 0?{}:{"content-type":"application/json"}},...o.body===void 0?{}:{body:JSON.stringify(o.body)}}).catch(l=>{throw o.signal?.aborted?l:h()?new c(`Moa did not answer ${i} ${r}`,504,`${u}ms`):new c(`Moa is unreachable at ${d}`,0,T(l))});if(!a.ok)throw new c(`Moa returned ${a.status} for ${i} ${r}`,a.status,(await a.text()).slice(0,500));return a.status===204?void 0:await a.json()}finally{b()}}}export{f as MOA_BASE_URL,c as MoaApiError,$ as createRequest};
@@ -1,6 +0,0 @@
1
- export type { CommissionClient, PollOptions } from "./commission.js";
2
- export { CommissionAbortedError, CommissionTimeoutError, createCommissionClient, INTERACTIVE_TIMEOUT_MS, pollUntilDone, } from "./commission.js";
3
- export { DEFAULT_DESIGN, type DesignGuide, mergeDesign, renderDesign } from "./design.js";
4
- export { MOA_BASE_URL, MoaApiError, type MoaClientConfig } from "./http.js";
5
- export type { ArtifactFormat, CommissionArtifact, CommissionInput, CommissionResult, CommissionStatus, } from "./types.js";
6
- export { type WriteDocumentOptions, writeDocument } from "./write-document.js";
@@ -1 +0,0 @@
1
- import{CommissionAbortedError as e,CommissionTimeoutError as i,createCommissionClient as m,INTERACTIVE_TIMEOUT_MS as t,pollUntilDone as n}from"./commission.js";import{DEFAULT_DESIGN as s,mergeDesign as p,renderDesign as A}from"./design.js";import{MOA_BASE_URL as T,MoaApiError as C}from"./http.js";import{writeDocument as f}from"./write-document.js";export{e as CommissionAbortedError,i as CommissionTimeoutError,s as DEFAULT_DESIGN,t as INTERACTIVE_TIMEOUT_MS,T as MOA_BASE_URL,C as MoaApiError,m as createCommissionClient,p as mergeDesign,n as pollUntilDone,A as renderDesign,f as writeDocument};
@@ -1,33 +0,0 @@
1
- /** A document format Moa can leave behind in `artifacts/`. */
2
- export type ArtifactFormat = "md" | "pdf" | "docx" | "pptx";
3
- /** Where a commission has got to. `pending` is queued, `failed` is settled. */
4
- export type CommissionStatus = "pending" | "running" | "done" | "failed";
5
- /** One finished file, either downloadable or carried inline as base64. */
6
- export interface CommissionArtifact {
7
- name: string;
8
- format: ArtifactFormat;
9
- url?: string;
10
- data?: string;
11
- mime?: string;
12
- sizeBytes?: number;
13
- }
14
- /** What to commission: the ask, the material it rests on, and the house style. */
15
- export interface CommissionInput {
16
- task: string;
17
- context?: string;
18
- design?: string;
19
- artifacts?: readonly ArtifactFormat[];
20
- sessionId?: string;
21
- newSessionId?: string;
22
- }
23
- /** A commission as it stands right now. */
24
- export interface CommissionResult {
25
- id: string;
26
- status: CommissionStatus;
27
- output?: string;
28
- error?: string;
29
- costUsd?: number;
30
- numTurns?: number;
31
- sessionId?: string;
32
- artifacts?: CommissionArtifact[];
33
- }
@@ -1,69 +0,0 @@
1
- import { type CommissionClient } from "./commission.js";
2
- import { type DesignGuide } from "./design.js";
3
- import type { AbortSignalLike } from "./http.js";
4
- import type { ArtifactFormat } from "./types.js";
5
- export interface WriteDocumentOptions {
6
- /** Moa key. Required, and read from here rather than the environment. */
7
- apiKey: string;
8
- /** Defaults to `https://api.fnmoa.com`. */
9
- baseUrl?: string;
10
- /**
11
- * House style laid over {@link DEFAULT_DESIGN}: named fields win, `rules`
12
- * accumulate. This is where a brand goes, so the model cannot dilute it.
13
- */
14
- design?: DesignGuide;
15
- /** Formats this deployment will produce. Default all four. */
16
- formats?: readonly ArtifactFormat[];
17
- /** Give up waiting after this. Default 600000 — rendering is minutes, not seconds. */
18
- timeoutMs?: number;
19
- /** Stops the wait. With `cancelOnAbort`, stops the task too. */
20
- signal?: AbortSignalLike;
21
- /** Cancel the task server-side when `signal` fires. Default true. */
22
- cancelOnAbort?: boolean;
23
- /** Return artifact bytes inline. Default false: base64 of a PDF is not context. */
24
- includeData?: boolean;
25
- /** Longest write-up handed back. Default 4000 characters. */
26
- maxChars?: number;
27
- /** Injected for tests, and for anyone fronting Moa with their own transport. */
28
- client?: CommissionClient;
29
- /** Injected for tests. */
30
- fetch?: typeof fetch;
31
- }
32
- /**
33
- * A document agent, briefed in your house style.
34
- *
35
- * Style is the deployment's business and content is the model's: the guide
36
- * comes from `options.design`, and `design_notes` may bend it for one document
37
- * rather than replace it. `effect` is `destructive` because a second call is a
38
- * second bill and a second set of files — never something to retry blindly.
39
- */
40
- export declare function writeDocument(opts: WriteDocumentOptions): import("../../index.js").Tool<import("../../index.js").ArgsOf<readonly [{
41
- readonly name: "brief";
42
- readonly type: "text";
43
- readonly required: true;
44
- readonly maxLength: 8000;
45
- readonly description: string;
46
- }, {
47
- readonly name: "format";
48
- readonly type: "enum";
49
- readonly required: true;
50
- readonly options: readonly ["pdf", "pptx", "docx", "md"];
51
- readonly description: "pptx for anything presented, pdf for anything sent, docx for anything edited.";
52
- }, {
53
- readonly name: "source";
54
- readonly type: "text";
55
- readonly required: false;
56
- readonly maxLength: 40000;
57
- readonly description: string;
58
- }, {
59
- readonly name: "design_notes";
60
- readonly type: "text";
61
- readonly required: false;
62
- readonly maxLength: 2000;
63
- readonly description: string;
64
- }, {
65
- readonly name: "session_id";
66
- readonly type: "string";
67
- readonly required: false;
68
- readonly description: string;
69
- }]>>;
@@ -1 +0,0 @@
1
- import{tool as f}from"../../tool/index.js";import{CommissionAbortedError as l,CommissionTimeoutError as h,createCommissionClient as g,pollUntilDone as p}from"./commission.js";import{DEFAULT_DESIGN as w,mergeDesign as y,renderDesign as _}from"./design.js";const x=["pdf","pptx","docx","md"],b=6e5,M=2e3,U=4e3;function v(e,i){return`Commissions a document agent to write and render a finished file \u2014 ${e.map(t=>`.${t}`).join(", ")} \u2014 and hands back where to download it. Use it when the answer has to be a document somebody opens: a report, a deck, a proposal, a one-pager. Not for text you can simply write in your reply. It runs for minutes and it costs money, so brief it once and brief it fully \u2014 the agent cannot see this conversation, so every fact, figure and quote it must use goes in \`source\`. Design is already settled by ${i.name??"the house style"}; use \`design_notes\` only for what this one document must do differently.`}function E(e,i,t,d){const r=(e.artifacts??[]).map(o=>({name:o.name,format:o.format,url:o.url,mime:o.mime,sizeBytes:o.sizeBytes,...d&&o.data?{data:o.data}:{}}));return{taskId:e.id,sessionId:e.sessionId,status:"done",style:i,documents:r,delivered:r.length>0,writeUp:e.output?.slice(0,t),truncated:(e.output?.length??0)>t,turns:e.numTurns,costMicroUsd:e.costUsd===void 0?void 0:Math.round(e.costUsd*1e6)}}function T(e,i,t){return{taskId:e,status:"running",style:i,documents:[],delivered:!1,note:`Still rendering after ${Math.round(t.timeoutMs/1e3)}s. The task is not lost \u2014 say so rather than commissioning it again.`}}function L(e){if(!e.client&&!e.apiKey?.trim())throw new Error("writeDocument needs a Moa apiKey; it will not read one from the process.");const i=e.formats?.length?e.formats:x,t=y(w,e.design),d=e.maxChars??U,r=e.client??g({apiKey:e.apiKey,baseUrl:e.baseUrl,...e.fetch?{fetch:e.fetch}:{}});return f({name:"write_document",description:v(i,t),effect:"destructive",args:[{name:"brief",type:"text",required:!0,maxLength:8e3,description:"What to produce, who reads it, what it must cover and how long it runs. Write it as you would brief a person who knows the craft and nothing about this account."},{name:"format",type:"enum",required:!0,options:["pdf","pptx","docx","md"],description:"pptx for anything presented, pdf for anything sent, docx for anything edited."},{name:"source",type:"text",required:!1,maxLength:4e4,description:"The material it must build from \u2014 figures, findings, quotes, an outline \u2014 verbatim. Anything missing here the agent will either omit or invent."},{name:"design_notes",type:"text",required:!1,maxLength:2e3,description:"How this one document departs from the house style, in plain words. Leave it empty unless the user asked for something specific."},{name:"session_id",type:"string",required:!1,description:"Continue an earlier write_document instead of starting over \u2014 take it from that result's sessionId. Use it to revise a document or to recast one into another format."}],run:async({brief:o,format:s,source:u,design_notes:m,session_id:c})=>{if(!i.includes(s))throw new Error(`write_document was asked for .${s}, which this deployment does not produce (${i.map(n=>`.${n}`).join(", ")}).`);const a=await r.create({task:o,context:u,design:_(t,s,m),artifacts:[s],...c?{sessionId:c}:{}});try{const n=await p(r,a,{timeoutMs:e.timeoutMs??b,settleMs:M,expectArtifacts:!0,...e.signal?{signal:e.signal}:{}});if(n.status==="failed")throw new Error(`write_document: Moa task ${a} failed: ${n.error??"no reason given"}`);return E(n,t.name,d,e.includeData===!0)}catch(n){if(n instanceof l&&e.cancelOnAbort!==!1&&await r.cancel?.(a).catch(()=>{}),n instanceof h)return T(a,t.name,n);throw n}}})}export{L as writeDocument};
File without changes