@framers/agentos 0.13.3 → 0.13.5

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 (130) hide show
  1. package/dist/api/AgentOS.d.ts +3 -0
  2. package/dist/api/AgentOS.d.ts.map +1 -1
  3. package/dist/api/AgentOS.js +52 -1
  4. package/dist/api/AgentOS.js.map +1 -1
  5. package/dist/api/generateObject.d.ts.map +1 -1
  6. package/dist/api/generateObject.js +1 -150
  7. package/dist/api/generateObject.js.map +1 -1
  8. package/dist/api/index.d.ts +1 -0
  9. package/dist/api/index.d.ts.map +1 -1
  10. package/dist/api/index.js +2 -0
  11. package/dist/api/index.js.map +1 -1
  12. package/dist/api/runtime/AgentOSOrchestrator.d.ts.map +1 -1
  13. package/dist/api/runtime/AgentOSOrchestrator.js +1 -0
  14. package/dist/api/runtime/AgentOSOrchestrator.js.map +1 -1
  15. package/dist/api/runtime/ExternalToolResultHandler.d.ts.map +1 -1
  16. package/dist/api/runtime/ExternalToolResultHandler.js +1 -0
  17. package/dist/api/runtime/ExternalToolResultHandler.js.map +1 -1
  18. package/dist/api/runtime/StreamChunkEmitter.d.ts.map +1 -1
  19. package/dist/api/runtime/StreamChunkEmitter.js +1 -0
  20. package/dist/api/runtime/StreamChunkEmitter.js.map +1 -1
  21. package/dist/api/runtime/structuredReply.d.ts +138 -0
  22. package/dist/api/runtime/structuredReply.d.ts.map +1 -0
  23. package/dist/api/runtime/structuredReply.js +284 -0
  24. package/dist/api/runtime/structuredReply.js.map +1 -0
  25. package/dist/api/types/AgentOSInput.d.ts +6 -0
  26. package/dist/api/types/AgentOSInput.d.ts.map +1 -1
  27. package/dist/api/types/AgentOSResponse.d.ts +2 -0
  28. package/dist/api/types/AgentOSResponse.d.ts.map +1 -1
  29. package/dist/api/types/AgentOSResponse.js.map +1 -1
  30. package/dist/cognition/emergent/EffectsStore.d.ts +6 -1
  31. package/dist/cognition/emergent/EffectsStore.d.ts.map +1 -1
  32. package/dist/cognition/emergent/EffectsStore.js.map +1 -1
  33. package/dist/cognition/emergent/EmergentCapabilityEngine.d.ts +8 -0
  34. package/dist/cognition/emergent/EmergentCapabilityEngine.d.ts.map +1 -1
  35. package/dist/cognition/emergent/EmergentCapabilityEngine.js +84 -9
  36. package/dist/cognition/emergent/EmergentCapabilityEngine.js.map +1 -1
  37. package/dist/cognition/emergent/EmergentJudge.d.ts.map +1 -1
  38. package/dist/cognition/emergent/EmergentJudge.js +8 -1
  39. package/dist/cognition/emergent/EmergentJudge.js.map +1 -1
  40. package/dist/cognition/emergent/ForgeToolMetaTool.d.ts +2 -1
  41. package/dist/cognition/emergent/ForgeToolMetaTool.d.ts.map +1 -1
  42. package/dist/cognition/emergent/ForgeToolMetaTool.js +27 -4
  43. package/dist/cognition/emergent/ForgeToolMetaTool.js.map +1 -1
  44. package/dist/cognition/emergent/SandboxedToolForge.d.ts +7 -3
  45. package/dist/cognition/emergent/SandboxedToolForge.d.ts.map +1 -1
  46. package/dist/cognition/emergent/SandboxedToolForge.js +21 -8
  47. package/dist/cognition/emergent/SandboxedToolForge.js.map +1 -1
  48. package/dist/cognition/emergent/broker/CapabilityBroker.d.ts +56 -18
  49. package/dist/cognition/emergent/broker/CapabilityBroker.d.ts.map +1 -1
  50. package/dist/cognition/emergent/broker/CapabilityBroker.js +309 -47
  51. package/dist/cognition/emergent/broker/CapabilityBroker.js.map +1 -1
  52. package/dist/cognition/emergent/broker/dry-run.d.ts +39 -0
  53. package/dist/cognition/emergent/broker/dry-run.d.ts.map +1 -0
  54. package/dist/cognition/emergent/broker/dry-run.js +88 -0
  55. package/dist/cognition/emergent/broker/dry-run.js.map +1 -0
  56. package/dist/cognition/emergent/broker/fetch.d.ts +30 -7
  57. package/dist/cognition/emergent/broker/fetch.d.ts.map +1 -1
  58. package/dist/cognition/emergent/broker/fetch.js +69 -9
  59. package/dist/cognition/emergent/broker/fetch.js.map +1 -1
  60. package/dist/cognition/emergent/broker/fs-write.d.ts +73 -0
  61. package/dist/cognition/emergent/broker/fs-write.d.ts.map +1 -0
  62. package/dist/cognition/emergent/broker/fs-write.js +268 -0
  63. package/dist/cognition/emergent/broker/fs-write.js.map +1 -0
  64. package/dist/cognition/emergent/broker/protected.d.ts +19 -0
  65. package/dist/cognition/emergent/broker/protected.d.ts.map +1 -0
  66. package/dist/cognition/emergent/broker/protected.js +89 -0
  67. package/dist/cognition/emergent/broker/protected.js.map +1 -0
  68. package/dist/cognition/emergent/capabilities.d.ts +2 -0
  69. package/dist/cognition/emergent/capabilities.d.ts.map +1 -1
  70. package/dist/cognition/emergent/capabilities.js +12 -2
  71. package/dist/cognition/emergent/capabilities.js.map +1 -1
  72. package/dist/cognition/emergent/ceiling.d.ts +38 -3
  73. package/dist/cognition/emergent/ceiling.d.ts.map +1 -1
  74. package/dist/cognition/emergent/ceiling.js +119 -2
  75. package/dist/cognition/emergent/ceiling.js.map +1 -1
  76. package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts +1 -1
  77. package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts.map +1 -1
  78. package/dist/cognition/emergent/executor/QuickJSExecutor.js +45 -15
  79. package/dist/cognition/emergent/executor/QuickJSExecutor.js.map +1 -1
  80. package/dist/cognition/emergent/executor/guest-prelude.d.ts.map +1 -1
  81. package/dist/cognition/emergent/executor/guest-prelude.js +48 -17
  82. package/dist/cognition/emergent/executor/guest-prelude.js.map +1 -1
  83. package/dist/cognition/emergent/executor/guest-surface.d.ts.map +1 -1
  84. package/dist/cognition/emergent/executor/guest-surface.js +18 -5
  85. package/dist/cognition/emergent/executor/guest-surface.js.map +1 -1
  86. package/dist/cognition/emergent/persisted-source.d.ts.map +1 -1
  87. package/dist/cognition/emergent/persisted-source.js +7 -1
  88. package/dist/cognition/emergent/persisted-source.js.map +1 -1
  89. package/dist/cognition/emergent/types.d.ts +117 -6
  90. package/dist/cognition/emergent/types.d.ts.map +1 -1
  91. package/dist/cognition/emergent/types.js.map +1 -1
  92. package/dist/cognition/substrate/GMI.d.ts.map +1 -1
  93. package/dist/cognition/substrate/GMI.js +58 -4
  94. package/dist/cognition/substrate/GMI.js.map +1 -1
  95. package/dist/cognition/substrate/IGMI.d.ts +2 -0
  96. package/dist/cognition/substrate/IGMI.d.ts.map +1 -1
  97. package/dist/cognition/substrate/IGMI.js.map +1 -1
  98. package/dist/core/tools/ITool.d.ts +12 -2
  99. package/dist/core/tools/ITool.d.ts.map +1 -1
  100. package/dist/core/utils/errors.d.ts +2 -0
  101. package/dist/core/utils/errors.d.ts.map +1 -1
  102. package/dist/core/utils/errors.js +3 -0
  103. package/dist/core/utils/errors.js.map +1 -1
  104. package/dist/index.d.ts +2 -0
  105. package/dist/index.d.ts.map +1 -1
  106. package/dist/index.js +1 -0
  107. package/dist/index.js.map +1 -1
  108. package/dist/io/hearing/LiveKitTranscriptionOutput.d.ts +95 -0
  109. package/dist/io/hearing/LiveKitTranscriptionOutput.d.ts.map +1 -0
  110. package/dist/io/hearing/LiveKitTranscriptionOutput.js +108 -0
  111. package/dist/io/hearing/LiveKitTranscriptionOutput.js.map +1 -0
  112. package/dist/io/hearing/livekit.d.ts +15 -0
  113. package/dist/io/hearing/livekit.d.ts.map +1 -0
  114. package/dist/io/hearing/livekit.js +15 -0
  115. package/dist/io/hearing/livekit.js.map +1 -0
  116. package/dist/io/voice-pipeline/browser.d.ts +19 -0
  117. package/dist/io/voice-pipeline/browser.d.ts.map +1 -0
  118. package/dist/io/voice-pipeline/browser.js +20 -0
  119. package/dist/io/voice-pipeline/browser.js.map +1 -0
  120. package/dist/io/voice-pipeline/index.d.ts +1 -0
  121. package/dist/io/voice-pipeline/index.d.ts.map +1 -1
  122. package/dist/io/voice-pipeline/index.js +1 -0
  123. package/dist/io/voice-pipeline/index.js.map +1 -1
  124. package/dist/io/voice-pipeline/transcriptLedger.d.ts +139 -0
  125. package/dist/io/voice-pipeline/transcriptLedger.d.ts.map +1 -0
  126. package/dist/io/voice-pipeline/transcriptLedger.js +192 -0
  127. package/dist/io/voice-pipeline/transcriptLedger.js.map +1 -0
  128. package/dist/io/voice-pipeline/types.d.ts +27 -0
  129. package/dist/io/voice-pipeline/types.d.ts.map +1 -1
  130. package/package.json +11 -1
@@ -0,0 +1,88 @@
1
+ /**
2
+ * @fileoverview A forge test's view of the files it touched. In a dry run
3
+ * every check is made as in a real call, but a write lands in a temporary
4
+ * directory made for the run, a delete marks its target gone for the run,
5
+ * and every check that asks whether a path exists, or what it is, asks this
6
+ * overlay first and the real tree second. A state-changing request is never
7
+ * sent: it takes the first unused answer the test case gave for its method
8
+ * and URL, or a `204` saying it was not sent.
9
+ * @module @framers/agentos/emergent/broker/dry-run
10
+ */
11
+ import { mkdtemp, readFile, rm, writeFile } from 'node:fs/promises';
12
+ import { tmpdir } from 'node:os';
13
+ import * as path from 'node:path';
14
+ /** The answers one forge test case may give its state-changing requests. */
15
+ export const MAX_TEST_RESPONSES = 16;
16
+ /** The header a state-changing request answered by a dry run carries when the test case gave no answer for it. */
17
+ export const NOT_SENT_HEADER = 'x-agentos-forge-test';
18
+ export class DryRunOverlay {
19
+ constructor(responses) {
20
+ this.responses = responses;
21
+ this.written = new Map();
22
+ this.deleted = new Set();
23
+ this.used = new Set();
24
+ this.counter = 0;
25
+ }
26
+ /** What the run did to `target` (a real path), if anything. */
27
+ look(target) {
28
+ if (this.written.has(target)) {
29
+ return 'file';
30
+ }
31
+ return this.deleted.has(target) ? 'absent' : undefined;
32
+ }
33
+ /** A write: the data goes to the run's own directory; the target reads as that file for the rest of the run. */
34
+ async write(target, data) {
35
+ this.dir ?? (this.dir = mkdtemp(path.join(tmpdir(), 'agentos-dry-run-')));
36
+ const dir = await this.dir;
37
+ this.counter += 1;
38
+ const file = path.join(dir, String(this.counter));
39
+ await writeFile(file, data, { flag: 'wx' });
40
+ this.written.set(target, file);
41
+ this.deleted.delete(target);
42
+ }
43
+ /** A delete: the target reads as absent for the rest of the run. */
44
+ remove(target) {
45
+ this.written.delete(target);
46
+ this.deleted.add(target);
47
+ }
48
+ /** The bytes the run wrote at `target`, or undefined when it wrote none there. */
49
+ async read(target) {
50
+ const file = this.written.get(target);
51
+ return file === undefined ? undefined : readFile(file);
52
+ }
53
+ /** The answer for a state-changing request, which is not sent. */
54
+ answer(method, url) {
55
+ for (let index = 0; index < this.responses.length; index += 1) {
56
+ const candidate = this.responses[index];
57
+ if (this.used.has(index) || candidate.method !== method) {
58
+ continue;
59
+ }
60
+ let candidateUrl;
61
+ try {
62
+ candidateUrl = new URL(candidate.url).href;
63
+ }
64
+ catch {
65
+ continue;
66
+ }
67
+ if (candidateUrl === url.href) {
68
+ this.used.add(index);
69
+ // These statuses carry no body; the forge refuses an answer outside 200 to 599.
70
+ const noBody = candidate.status === 204 || candidate.status === 205 || candidate.status === 304;
71
+ return new Response(noBody ? null : (candidate.body ?? null), {
72
+ status: candidate.status,
73
+ headers: candidate.headers ?? {},
74
+ });
75
+ }
76
+ }
77
+ return new Response(null, { status: 204, headers: { [NOT_SENT_HEADER]: 'not-sent' } });
78
+ }
79
+ /** Removes the run's directory. */
80
+ async dispose() {
81
+ const dir = this.dir;
82
+ this.dir = undefined;
83
+ if (dir) {
84
+ await rm(await dir, { recursive: true, force: true }).catch(() => undefined);
85
+ }
86
+ }
87
+ }
88
+ //# sourceMappingURL=dry-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/dry-run.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,4EAA4E;AAC5E,MAAM,CAAC,MAAM,kBAAkB,GAAG,EAAE,CAAC;AAErC,kHAAkH;AAClH,MAAM,CAAC,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAKtD,MAAM,OAAO,aAAa;IAOxB,YAA6B,SAAuC;QAAvC,cAAS,GAAT,SAAS,CAA8B;QALnD,YAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;QACpC,YAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAC5B,SAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,YAAO,GAAG,CAAC,CAAC;IAEmD,CAAC;IAExE,+DAA+D;IAC/D,IAAI,CAAC,MAAc;QACjB,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;IACzD,CAAC;IAED,gHAAgH;IAChH,KAAK,CAAC,KAAK,CAAC,MAAc,EAAE,IAAgB;QAC1C,IAAI,CAAC,GAAG,KAAR,IAAI,CAAC,GAAG,GAAK,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC,CAAC,EAAC;QAC9D,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC;QAC3B,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC;QAClB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAClD,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAED,oEAAoE;IACpE,MAAM,CAAC,MAAc;QACnB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAED,kFAAkF;IAClF,KAAK,CAAC,IAAI,CAAC,MAAc;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtC,OAAO,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IAED,kEAAkE;IAClE,MAAM,CAAC,MAAkB,EAAE,GAAQ;QACjC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBACxD,SAAS;YACX,CAAC;YACD,IAAI,YAAoB,CAAC;YACzB,IAAI,CAAC;gBACH,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YACD,IAAI,YAAY,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACrB,gFAAgF;gBAChF,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,GAAG,CAAC;gBAChG,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,IAAI,IAAI,CAAC,EAAE;oBAC5D,MAAM,EAAE,SAAS,CAAC,MAAM;oBACxB,OAAO,EAAE,SAAS,CAAC,OAAO,IAAI,EAAE;iBACjC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,eAAe,CAAC,EAAE,UAAU,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,mCAAmC;IACnC,KAAK,CAAC,OAAO;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC;QACrB,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,EAAE,CAAC,MAAM,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;CACF"}
@@ -7,19 +7,39 @@
7
7
  * body as a stream that is refused past its limit.
8
8
  * @module @framers/agentos/emergent/broker/fetch
9
9
  */
10
+ import type { HttpMethod } from '../types.js';
11
+ import { CapabilityRefusal } from './refusal.js';
10
12
  /** The scope a ceiling grants `fetch` under, with its defaults applied. */
11
13
  export interface FetchScope {
12
14
  domains: string[] | '*';
13
- methods: Array<'GET' | 'HEAD'>;
15
+ methods: HttpMethod[];
14
16
  maxResponseBytes: number;
15
17
  maxRedirects: number;
16
18
  timeoutMs: number;
19
+ /** Set when `methods` holds a state-changing method. */
20
+ maxRequestBytes?: number;
17
21
  }
18
22
  /** A request that passed every check made before anything is sent. */
19
23
  export interface PreparedFetch {
20
24
  url: URL;
21
- method: 'GET' | 'HEAD';
25
+ method: HttpMethod;
22
26
  headers: Headers;
27
+ /** A state-changing request's body; GET and HEAD carry none. */
28
+ body?: string | Uint8Array;
29
+ /** The body's size in bytes. */
30
+ bodyBytes?: number;
31
+ }
32
+ /** The methods that change state: sent with a bounded body, never redirected, recorded with their method. */
33
+ export declare const STATE_CHANGING: ReadonlySet<HttpMethod>;
34
+ /**
35
+ * A state-changing request cut (by the call's end or its time bound) after
36
+ * `fetch()` was called. Node's fetch does not say how far the request got,
37
+ * so the broker cannot tell whether the server acted on it: the record keeps
38
+ * no outcome (the store's unknown) and the code `cut_in_flight`.
39
+ */
40
+ export declare class InFlightCut extends CapabilityRefusal {
41
+ readonly how: 'aborted' | 'timed_out';
42
+ constructor(how: 'aborted' | 'timed_out', host: string);
23
43
  }
24
44
  /**
25
45
  * The URL a forged tool's first argument names: a string, a URL, or an object
@@ -29,15 +49,18 @@ export interface PreparedFetch {
29
49
  export declare function fetchTarget(input: unknown): string | undefined;
30
50
  /**
31
51
  * The checks made before anything is sent. The caller's options are read for
32
- * `method` and `headers` only: a body, a redirect mode, credentials or a
33
- * signal of the caller's are never passed on.
52
+ * `method`, `headers` and, for a state-changing method, `body` only: a
53
+ * redirect mode, credentials or a signal of the caller's are never passed
54
+ * on, and a body on GET or HEAD is dropped, as stage 1 dropped it.
34
55
  */
35
56
  export declare function prepareFetch(input: unknown, init: unknown, scope: FetchScope): PreparedFetch;
36
57
  /**
37
58
  * Sends a prepared request. `signal` is the call's; the scope's `timeoutMs`
38
- * bounds the whole request, redirects and body included. Every redirect is
39
- * followed here, its host checked like the first; GET and HEAD keep their
40
- * method through every redirect status.
59
+ * bounds the whole request, redirects and body included. For GET and HEAD
60
+ * every redirect is followed here, its host checked like the first, and the
61
+ * method kept through every redirect status. A state-changing request is
62
+ * never redirected: its redirect answer is returned as it came, and a cut
63
+ * after it was sent is an {@link InFlightCut}.
41
64
  */
42
65
  export declare function sendFetch(prepared: PreparedFetch, scope: FetchScope, signal: AbortSignal): Promise<{
43
66
  response: Response;
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACxB,OAAO,EAAE,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC,CAAC;IAC/B,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,KAAK,GAAG,MAAM,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;CAClB;AAOD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAY9D;AAuCD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa,CAmB5F;AA8BD;;;;;GAKG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAiEhD;AAED,4EAA4E;AAC5E,wBAAsB,aAAa,CACjC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAEnB"}
1
+ {"version":3,"file":"fetch.d.ts","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC;IACxB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,wDAAwD;IACxD,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,sEAAsE;AACtE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;IACjB,gEAAgE;IAChE,IAAI,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC3B,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,6GAA6G;AAC7G,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,UAAU,CAA2D,CAAC;AAE/G;;;;;GAKG;AACH,qBAAa,WAAY,SAAQ,iBAAiB;IAE9C,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,WAAW;gBAA5B,GAAG,EAAE,SAAS,GAAG,WAAW,EACrC,IAAI,EAAE,MAAM;CAIf;AAOD;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAY9D;AA6DD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,GAAG,aAAa,CAwB5F;AA8BD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAC7B,QAAQ,EAAE,aAAa,EACvB,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAiFhD;AAED,4EAA4E;AAC5E,wBAAsB,aAAa,CACjC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,OAAO,EACb,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,QAAQ,CAAC,CAEnB"}
@@ -8,6 +8,20 @@
8
8
  * @module @framers/agentos/emergent/broker/fetch
9
9
  */
10
10
  import { CapabilityRefusal } from './refusal.js';
11
+ /** The methods that change state: sent with a bounded body, never redirected, recorded with their method. */
12
+ export const STATE_CHANGING = new Set(['POST', 'PUT', 'PATCH', 'DELETE']);
13
+ /**
14
+ * A state-changing request cut (by the call's end or its time bound) after
15
+ * `fetch()` was called. Node's fetch does not say how far the request got,
16
+ * so the broker cannot tell whether the server acted on it: the record keeps
17
+ * no outcome (the store's unknown) and the code `cut_in_flight`.
18
+ */
19
+ export class InFlightCut extends CapabilityRefusal {
20
+ constructor(how, host) {
21
+ super('cut_in_flight', `${host}: the request was sent, and whether the server acted on it is unknown`);
22
+ this.how = how;
23
+ }
24
+ }
11
25
  const REDIRECT_STATUSES = new Set([301, 302, 303, 307, 308]);
12
26
  const NULL_BODY_STATUSES = new Set([204, 205, 304]);
13
27
  /** Dropped when a redirect changes the origin, as fetch itself does. */
@@ -67,10 +81,35 @@ function headersFrom(given) {
67
81
  }
68
82
  return headers;
69
83
  }
84
+ /** A state-changing request's body: a string or bytes within the scope's bound, read once. */
85
+ function requestBody(given, limit) {
86
+ if (given === undefined || given === null) {
87
+ return {};
88
+ }
89
+ let body;
90
+ if (typeof given === 'string') {
91
+ body = given;
92
+ }
93
+ else if (given instanceof Uint8Array) {
94
+ body = given;
95
+ }
96
+ else if (given instanceof ArrayBuffer) {
97
+ body = new Uint8Array(given);
98
+ }
99
+ else {
100
+ throw new CapabilityRefusal('unsupported_body', 'a request body is a string or bytes');
101
+ }
102
+ const bodyBytes = typeof body === 'string' ? Buffer.byteLength(body, 'utf8') : body.byteLength;
103
+ if (bodyBytes > limit) {
104
+ throw new CapabilityRefusal('request_too_large', `${bodyBytes} bytes, more than ${limit}`);
105
+ }
106
+ return { body, bodyBytes };
107
+ }
70
108
  /**
71
109
  * The checks made before anything is sent. The caller's options are read for
72
- * `method` and `headers` only: a body, a redirect mode, credentials or a
73
- * signal of the caller's are never passed on.
110
+ * `method`, `headers` and, for a state-changing method, `body` only: a
111
+ * redirect mode, credentials or a signal of the caller's are never passed
112
+ * on, and a body on GET or HEAD is dropped, as stage 1 dropped it.
74
113
  */
75
114
  export function prepareFetch(input, init, scope) {
76
115
  const raw = fetchTarget(input);
@@ -91,7 +130,11 @@ export function prepareFetch(input, init, scope) {
91
130
  throw new CapabilityRefusal('method_not_allowed', method);
92
131
  }
93
132
  checkHost(url, scope);
94
- return { url, method: method, headers: headersFrom(options.headers) };
133
+ const headers = headersFrom(options.headers);
134
+ if (!STATE_CHANGING.has(method)) {
135
+ return { url, method: method, headers };
136
+ }
137
+ return { url, method: method, headers, ...requestBody(options.body, scope.maxRequestBytes ?? 0) };
95
138
  }
96
139
  async function cappedBody(response, limit) {
97
140
  if (!response.body) {
@@ -122,19 +165,36 @@ async function cappedBody(response, limit) {
122
165
  }
123
166
  /**
124
167
  * Sends a prepared request. `signal` is the call's; the scope's `timeoutMs`
125
- * bounds the whole request, redirects and body included. Every redirect is
126
- * followed here, its host checked like the first; GET and HEAD keep their
127
- * method through every redirect status.
168
+ * bounds the whole request, redirects and body included. For GET and HEAD
169
+ * every redirect is followed here, its host checked like the first, and the
170
+ * method kept through every redirect status. A state-changing request is
171
+ * never redirected: its redirect answer is returned as it came, and a cut
172
+ * after it was sent is an {@link InFlightCut}.
128
173
  */
129
174
  export async function sendFetch(prepared, scope, signal) {
130
175
  const bounded = AbortSignal.any([signal, AbortSignal.timeout(scope.timeoutMs)]);
131
- const ended = (host) => new CapabilityRefusal(signal.aborted ? 'aborted' : 'timed_out', host);
176
+ const changesState = STATE_CHANGING.has(prepared.method);
177
+ const ended = (host) => changesState
178
+ ? new InFlightCut(signal.aborted ? 'aborted' : 'timed_out', host)
179
+ : new CapabilityRefusal(signal.aborted ? 'aborted' : 'timed_out', host);
180
+ // A typed array is not a BodyInit under TypeScript 5.7 and later; its own copy is.
181
+ const sentBody = prepared.body === undefined
182
+ ? undefined
183
+ : typeof prepared.body === 'string'
184
+ ? prepared.body
185
+ : prepared.body.slice().buffer;
132
186
  const headers = new Headers(prepared.headers);
133
187
  let url = prepared.url;
134
188
  for (let redirects = 0;; redirects += 1) {
135
189
  let response;
136
190
  try {
137
- response = await fetch(url, { method: prepared.method, headers, redirect: 'manual', signal: bounded });
191
+ response = await fetch(url, {
192
+ method: prepared.method,
193
+ headers,
194
+ redirect: 'manual',
195
+ signal: bounded,
196
+ ...(sentBody !== undefined ? { body: sentBody } : {}),
197
+ });
138
198
  }
139
199
  catch (error) {
140
200
  if (bounded.aborted) {
@@ -143,7 +203,7 @@ export async function sendFetch(prepared, scope, signal) {
143
203
  throw error;
144
204
  }
145
205
  const location = response.headers.get('location');
146
- if (REDIRECT_STATUSES.has(response.status) && location !== null) {
206
+ if (!changesState && REDIRECT_STATUSES.has(response.status) && location !== null) {
147
207
  await response.body?.cancel().catch(() => undefined);
148
208
  if (redirects >= scope.maxRedirects) {
149
209
  throw new CapabilityRefusal('too_many_redirects', `more than ${scope.maxRedirects}`);
@@ -1 +1 @@
1
- {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/fetch.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fetch.js","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/fetch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ /**
2
+ * @fileoverview The broker's `fs.writeFile` and `fs.unlink` for code-forged
3
+ * tools under a ceiling: the path checks against the roots (lexical, then
4
+ * the parent's real path, then the last component), and the operations. A
5
+ * write opens its file with an exclusive create and no signal, so the broker
6
+ * always knows whether it made the file, and writes through the handle in
7
+ * chunks, checking the call's signal and its own time bound between them: a
8
+ * cut write closes the handle and removes what it made. A removal or a
9
+ * rename, once started, runs to its end. Node has no `openat`, so a process
10
+ * that swaps a parent directory for a link between the check and the open is
11
+ * outside what these checks stop; and an exclusive create on a network file
12
+ * system that does not honour it is too. The documentation says both.
13
+ * @module @framers/agentos/emergent/broker/fs-write
14
+ */
15
+ import type { DryRunOverlay } from './dry-run.js';
16
+ import { CapabilityRefusal } from './refusal.js';
17
+ /**
18
+ * An effect cut by the call's end or by its own time bound before it was
19
+ * done. `fileLeft` is set when the broker could not remove a file it made.
20
+ */
21
+ export declare class EffectCut extends CapabilityRefusal {
22
+ readonly outcome: 'aborted' | 'timed_out';
23
+ readonly fileLeft: boolean;
24
+ constructor(outcome: 'aborted' | 'timed_out', detail: string, fileLeft?: boolean);
25
+ }
26
+ /**
27
+ * Write or delete roots, each root's real path resolved lazily and pinned,
28
+ * as the broker's read roots are. A root whose real path is protected (see
29
+ * protected.ts) is set apart when it resolves: a target under it is refused
30
+ * with `protected_path`, whether the root existed at construction or not.
31
+ */
32
+ export declare class EffectRoots {
33
+ readonly roots: readonly string[];
34
+ private readonly protectedReal;
35
+ private readonly cache;
36
+ private readonly guarded;
37
+ constructor(roots: readonly string[], protectedReal: readonly string[]);
38
+ /** The roots' real paths, the protected ones set apart. */
39
+ real(): Promise<{
40
+ allowed: string[];
41
+ guarded: string[];
42
+ }>;
43
+ private realOf;
44
+ }
45
+ /**
46
+ * A write's scope: the path checks, then the last component, which may
47
+ * exist only as a regular file, and under `create-only` not at all.
48
+ */
49
+ export declare function checkWrite(filePath: unknown, roots: EffectRoots, mode: 'create-only' | 'create-or-replace', overlay?: DryRunOverlay): Promise<string>;
50
+ /** A delete's scope: the path checks, then the last component, which must be a regular file. */
51
+ export declare function checkDelete(filePath: unknown, roots: EffectRoots, overlay?: DryRunOverlay): Promise<string>;
52
+ /** The data a write carries, as bytes: a string is written as UTF-8. */
53
+ export declare function writeBytes(data: unknown): Uint8Array;
54
+ /**
55
+ * Writes `data` at `target` (already checked). Under `create-only` the
56
+ * target itself is created exclusively; under `create-or-replace` a
57
+ * temporary file beside it, named for the call, is created exclusively and
58
+ * then renamed over the target. A cut (the call's `signal`, or the effect's
59
+ * `timer`, started when the effect was admitted) that arrives while the open
60
+ * runs takes effect once the open settles.
61
+ */
62
+ export declare function writeAt(target: string, data: Uint8Array, mode: 'create-only' | 'create-or-replace', callId: string, signal: AbortSignal, timer: AbortSignal): Promise<{
63
+ bytes: number;
64
+ }>;
65
+ /**
66
+ * Removes `target` (already checked): one directory entry, a regular file.
67
+ * The removal is one system call: the call's `signal` and the effect's
68
+ * `timer` can stop it from starting, and once started it runs to its end.
69
+ */
70
+ export declare function removeAt(target: string, signal: AbortSignal, timer: AbortSignal): Promise<{
71
+ bytes: number;
72
+ }>;
73
+ //# sourceMappingURL=fs-write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-write.d.ts","sourceRoot":"","sources":["../../../../src/cognition/emergent/broker/fs-write.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAGlD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAKjD;;;GAGG;AACH,qBAAa,SAAU,SAAQ,iBAAiB;IAE5C,QAAQ,CAAC,OAAO,EAAE,SAAS,GAAG,WAAW;IAEzC,QAAQ,CAAC,QAAQ,EAAE,OAAO;gBAFjB,OAAO,EAAE,SAAS,GAAG,WAAW,EACzC,MAAM,EAAE,MAAM,EACL,QAAQ,GAAE,OAAe;CAIrC;AAED;;;;;GAKG;AACH,qBAAa,WAAW;IAKpB,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE;IACjC,OAAO,CAAC,QAAQ,CAAC,aAAa;IALhC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAkD;IACxE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAqB;gBAGlC,KAAK,EAAE,SAAS,MAAM,EAAE,EAChB,aAAa,EAAE,SAAS,MAAM,EAAE;IAGnD,2DAA2D;IACrD,IAAI,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAW/D,OAAO,CAAC,MAAM;CAqBf;AA8DD;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,WAAW,EAClB,IAAI,EAAE,aAAa,GAAG,mBAAmB,EACzC,OAAO,CAAC,EAAE,aAAa,GACtB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAED,gGAAgG;AAChG,wBAAsB,WAAW,CAAC,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAUjH;AAED,wEAAwE;AACxE,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,UAAU,CAcpD;AAWD;;;;;;;GAOG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,EAChB,IAAI,EAAE,aAAa,GAAG,mBAAmB,EACzC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,WAAW,EACnB,KAAK,EAAE,WAAW,GACjB,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAqD5B;AAED;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CASlH"}