@animalabs/agent-framework 0.26.1 → 0.27.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.
- package/README.md +57 -7
- package/dist/src/agent.d.ts +263 -22
- package/dist/src/agent.d.ts.map +1 -1
- package/dist/src/agent.js +531 -54
- package/dist/src/agent.js.map +1 -1
- package/dist/src/api/server.d.ts.map +1 -1
- package/dist/src/api/server.js +1 -2
- package/dist/src/api/server.js.map +1 -1
- package/dist/src/auto-continue.d.ts +33 -0
- package/dist/src/auto-continue.d.ts.map +1 -0
- package/dist/src/auto-continue.js +35 -0
- package/dist/src/auto-continue.js.map +1 -0
- package/dist/src/code-execution/isolate/scripts.d.ts +11 -0
- package/dist/src/code-execution/isolate/scripts.d.ts.map +1 -1
- package/dist/src/code-execution/isolate/scripts.js +5 -1
- package/dist/src/code-execution/isolate/scripts.js.map +1 -1
- package/dist/src/framework.d.ts +829 -156
- package/dist/src/framework.d.ts.map +1 -1
- package/dist/src/framework.js +3906 -1008
- package/dist/src/framework.js.map +1 -1
- package/dist/src/gate/event-gate.d.ts +309 -46
- package/dist/src/gate/event-gate.d.ts.map +1 -1
- package/dist/src/gate/event-gate.js +2117 -395
- package/dist/src/gate/event-gate.js.map +1 -1
- package/dist/src/gate/index.d.ts +2 -2
- package/dist/src/gate/index.d.ts.map +1 -1
- package/dist/src/gate/index.js +1 -1
- package/dist/src/gate/index.js.map +1 -1
- package/dist/src/gate/recipe-reconcile.d.ts +103 -0
- package/dist/src/gate/recipe-reconcile.d.ts.map +1 -0
- package/dist/src/gate/recipe-reconcile.js +325 -0
- package/dist/src/gate/recipe-reconcile.js.map +1 -0
- package/dist/src/gate/types.d.ts +68 -8
- package/dist/src/gate/types.d.ts.map +1 -1
- package/dist/src/index.d.ts +6 -4
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +5 -2
- package/dist/src/index.js.map +1 -1
- package/dist/src/mcpl/channel-registry.d.ts +433 -113
- package/dist/src/mcpl/channel-registry.d.ts.map +1 -1
- package/dist/src/mcpl/channel-registry.js +1152 -434
- package/dist/src/mcpl/channel-registry.js.map +1 -1
- package/dist/src/mcpl/conversation-router.d.ts +16 -8
- package/dist/src/mcpl/conversation-router.d.ts.map +1 -1
- package/dist/src/mcpl/conversation-router.js +29 -15
- package/dist/src/mcpl/conversation-router.js.map +1 -1
- package/dist/src/mcpl/convert-block.d.ts.map +1 -1
- package/dist/src/mcpl/convert-block.js +14 -2
- package/dist/src/mcpl/convert-block.js.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts +7 -1
- package/dist/src/mcpl/hook-orchestrator.d.ts.map +1 -1
- package/dist/src/mcpl/hook-orchestrator.js +32 -7
- package/dist/src/mcpl/hook-orchestrator.js.map +1 -1
- package/dist/src/mcpl/index.d.ts +5 -1
- package/dist/src/mcpl/index.d.ts.map +1 -1
- package/dist/src/mcpl/index.js +4 -0
- package/dist/src/mcpl/index.js.map +1 -1
- package/dist/src/mcpl/inference-router.d.ts +14 -2
- package/dist/src/mcpl/inference-router.d.ts.map +1 -1
- package/dist/src/mcpl/inference-router.js +73 -28
- package/dist/src/mcpl/inference-router.js.map +1 -1
- package/dist/src/mcpl/prose-grammar.d.ts +4 -0
- package/dist/src/mcpl/prose-grammar.d.ts.map +1 -1
- package/dist/src/mcpl/prose-grammar.js +6 -0
- package/dist/src/mcpl/prose-grammar.js.map +1 -1
- package/dist/src/mcpl/protocol-family.d.ts.map +1 -1
- package/dist/src/mcpl/protocol-family.js +3 -0
- package/dist/src/mcpl/protocol-family.js.map +1 -1
- package/dist/src/mcpl/push-coalescer.d.ts +20 -2
- package/dist/src/mcpl/push-coalescer.d.ts.map +1 -1
- package/dist/src/mcpl/push-coalescer.js +33 -11
- package/dist/src/mcpl/push-coalescer.js.map +1 -1
- package/dist/src/mcpl/reference-fetcher.d.ts +63 -42
- package/dist/src/mcpl/reference-fetcher.d.ts.map +1 -1
- package/dist/src/mcpl/reference-fetcher.js +177 -145
- package/dist/src/mcpl/reference-fetcher.js.map +1 -1
- package/dist/src/mcpl/references.d.ts +380 -46
- package/dist/src/mcpl/references.d.ts.map +1 -1
- package/dist/src/mcpl/references.js +737 -78
- package/dist/src/mcpl/references.js.map +1 -1
- package/dist/src/mcpl/server-connection.d.ts +82 -3
- package/dist/src/mcpl/server-connection.d.ts.map +1 -1
- package/dist/src/mcpl/server-connection.js +132 -7
- package/dist/src/mcpl/server-connection.js.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.d.ts +11 -0
- package/dist/src/mcpl/tool-lifecycle.d.ts.map +1 -1
- package/dist/src/mcpl/tool-lifecycle.js +21 -0
- package/dist/src/mcpl/tool-lifecycle.js.map +1 -1
- package/dist/src/mcpl/tool-presence.d.ts +259 -0
- package/dist/src/mcpl/tool-presence.d.ts.map +1 -0
- package/dist/src/mcpl/tool-presence.js +628 -0
- package/dist/src/mcpl/tool-presence.js.map +1 -0
- package/dist/src/mcpl/tool-result-normalize.d.ts +9 -3
- package/dist/src/mcpl/tool-result-normalize.d.ts.map +1 -1
- package/dist/src/mcpl/tool-result-normalize.js +14 -6
- package/dist/src/mcpl/tool-result-normalize.js.map +1 -1
- package/dist/src/mcpl/tool-signature.d.ts +39 -0
- package/dist/src/mcpl/tool-signature.d.ts.map +1 -0
- package/dist/src/mcpl/tool-signature.js +292 -0
- package/dist/src/mcpl/tool-signature.js.map +1 -0
- package/dist/src/mcpl/toolset-host.d.ts +200 -0
- package/dist/src/mcpl/toolset-host.d.ts.map +1 -0
- package/dist/src/mcpl/toolset-host.js +621 -0
- package/dist/src/mcpl/toolset-host.js.map +1 -0
- package/dist/src/mcpl/toolsets-module.d.ts +80 -0
- package/dist/src/mcpl/toolsets-module.d.ts.map +1 -0
- package/dist/src/mcpl/toolsets-module.js +431 -0
- package/dist/src/mcpl/toolsets-module.js.map +1 -0
- package/dist/src/mcpl/transport.d.ts +2 -2
- package/dist/src/mcpl/transport.d.ts.map +1 -1
- package/dist/src/mcpl/transport.js +3 -2
- package/dist/src/mcpl/transport.js.map +1 -1
- package/dist/src/mcpl/types.d.ts +21 -1
- package/dist/src/mcpl/types.d.ts.map +1 -1
- package/dist/src/mcpl/types.js.map +1 -1
- package/dist/src/mcpl/visible-content.d.ts +7 -9
- package/dist/src/mcpl/visible-content.d.ts.map +1 -1
- package/dist/src/mcpl/visible-content.js +21 -9
- package/dist/src/mcpl/visible-content.js.map +1 -1
- package/dist/src/module-registry.d.ts +23 -8
- package/dist/src/module-registry.d.ts.map +1 -1
- package/dist/src/module-registry.js +68 -15
- package/dist/src/module-registry.js.map +1 -1
- package/dist/src/modules/discord/index.js +1 -1
- package/dist/src/modules/discord/index.js.map +1 -1
- package/dist/src/modules/history/index.d.ts +2 -1
- package/dist/src/modules/history/index.d.ts.map +1 -1
- package/dist/src/modules/history/index.js +51 -17
- package/dist/src/modules/history/index.js.map +1 -1
- package/dist/src/modules/history/semantic.d.ts +108 -6
- package/dist/src/modules/history/semantic.d.ts.map +1 -1
- package/dist/src/modules/history/semantic.js +273 -57
- package/dist/src/modules/history/semantic.js.map +1 -1
- package/dist/src/modules/workspace/direct-write.d.ts +181 -0
- package/dist/src/modules/workspace/direct-write.d.ts.map +1 -0
- package/dist/src/modules/workspace/direct-write.js +384 -0
- package/dist/src/modules/workspace/direct-write.js.map +1 -0
- package/dist/src/modules/workspace/edit-text.d.ts +26 -12
- package/dist/src/modules/workspace/edit-text.d.ts.map +1 -1
- package/dist/src/modules/workspace/edit-text.js +58 -28
- package/dist/src/modules/workspace/edit-text.js.map +1 -1
- package/dist/src/modules/workspace/effects.d.ts +10 -0
- package/dist/src/modules/workspace/effects.d.ts.map +1 -1
- package/dist/src/modules/workspace/effects.js +1 -1
- package/dist/src/modules/workspace/effects.js.map +1 -1
- package/dist/src/modules/workspace/index.d.ts +246 -27
- package/dist/src/modules/workspace/index.d.ts.map +1 -1
- package/dist/src/modules/workspace/index.js +1216 -236
- package/dist/src/modules/workspace/index.js.map +1 -1
- package/dist/src/modules/workspace/read-page.d.ts +41 -0
- package/dist/src/modules/workspace/read-page.d.ts.map +1 -0
- package/dist/src/modules/workspace/read-page.js +213 -0
- package/dist/src/modules/workspace/read-page.js.map +1 -0
- package/dist/src/modules/workspace/result-text.d.ts +67 -0
- package/dist/src/modules/workspace/result-text.d.ts.map +1 -0
- package/dist/src/modules/workspace/result-text.js +94 -0
- package/dist/src/modules/workspace/result-text.js.map +1 -0
- package/dist/src/modules/workspace/text.d.ts +29 -12
- package/dist/src/modules/workspace/text.d.ts.map +1 -1
- package/dist/src/modules/workspace/text.js +35 -33
- package/dist/src/modules/workspace/text.js.map +1 -1
- package/dist/src/modules/workspace/types.d.ts +41 -17
- package/dist/src/modules/workspace/types.d.ts.map +1 -1
- package/dist/src/modules/workspace/types.js.map +1 -1
- package/dist/src/sent-rows.d.ts +59 -0
- package/dist/src/sent-rows.d.ts.map +1 -0
- package/dist/src/sent-rows.js +145 -0
- package/dist/src/sent-rows.js.map +1 -0
- package/dist/src/silent-heartbeat.d.ts +17 -10
- package/dist/src/silent-heartbeat.d.ts.map +1 -1
- package/dist/src/silent-heartbeat.js.map +1 -1
- package/dist/src/stable-hash.d.ts +3 -0
- package/dist/src/stable-hash.d.ts.map +1 -0
- package/dist/src/stable-hash.js +15 -0
- package/dist/src/stable-hash.js.map +1 -0
- package/dist/src/stored-injections.d.ts +99 -0
- package/dist/src/stored-injections.d.ts.map +1 -0
- package/dist/src/stored-injections.js +106 -0
- package/dist/src/stored-injections.js.map +1 -0
- package/dist/src/text-as-stored.d.ts +4 -3
- package/dist/src/text-as-stored.d.ts.map +1 -1
- package/dist/src/text-as-stored.js +4 -3
- package/dist/src/text-as-stored.js.map +1 -1
- package/dist/src/thinking-drops.d.ts +81 -0
- package/dist/src/thinking-drops.d.ts.map +1 -0
- package/dist/src/thinking-drops.js +103 -0
- package/dist/src/thinking-drops.js.map +1 -0
- package/dist/src/tool-image-ledger.d.ts +9 -8
- package/dist/src/tool-image-ledger.d.ts.map +1 -1
- package/dist/src/tool-image-ledger.js +9 -8
- package/dist/src/tool-image-ledger.js.map +1 -1
- package/dist/src/tool-presentation.d.ts.map +1 -1
- package/dist/src/tool-presentation.js +3 -1
- package/dist/src/tool-presentation.js.map +1 -1
- package/dist/src/tool-result-guard.d.ts +4 -2
- package/dist/src/tool-result-guard.d.ts.map +1 -1
- package/dist/src/tool-result-guard.js +21 -6
- package/dist/src/tool-result-guard.js.map +1 -1
- package/dist/src/tool-result-history.d.ts +186 -21
- package/dist/src/tool-result-history.d.ts.map +1 -1
- package/dist/src/tool-result-history.js +428 -89
- package/dist/src/tool-result-history.js.map +1 -1
- package/dist/src/tune-out/coordinator.d.ts +17 -9
- package/dist/src/tune-out/coordinator.d.ts.map +1 -1
- package/dist/src/tune-out/coordinator.js +84 -37
- package/dist/src/tune-out/coordinator.js.map +1 -1
- package/dist/src/types/agent.d.ts +186 -7
- package/dist/src/types/agent.d.ts.map +1 -1
- package/dist/src/types/events.d.ts +19 -2
- package/dist/src/types/events.d.ts.map +1 -1
- package/dist/src/types/framework.d.ts +24 -3
- package/dist/src/types/framework.d.ts.map +1 -1
- package/dist/src/types/module.d.ts +90 -7
- package/dist/src/types/module.d.ts.map +1 -1
- package/dist/src/types/trace.d.ts +57 -2
- package/dist/src/types/trace.d.ts.map +1 -1
- package/package.json +4 -3
- package/src/agent.ts +593 -60
- package/src/api/server.ts +1 -2
- package/src/auto-continue.ts +42 -0
- package/src/code-execution/isolate/scripts.ts +11 -3
- package/src/framework.ts +4004 -1026
- package/src/gate/event-gate.ts +2315 -389
- package/src/gate/index.ts +2 -1
- package/src/gate/recipe-reconcile.ts +355 -0
- package/src/gate/types.ts +70 -8
- package/src/index.ts +7 -4
- package/src/mcpl/channel-registry.ts +1220 -467
- package/src/mcpl/conversation-router.ts +34 -16
- package/src/mcpl/convert-block.ts +14 -1
- package/src/mcpl/hook-orchestrator.ts +33 -6
- package/src/mcpl/index.ts +6 -1
- package/src/mcpl/inference-router.ts +79 -34
- package/src/mcpl/prose-grammar.ts +7 -0
- package/src/mcpl/protocol-family.ts +2 -0
- package/src/mcpl/push-coalescer.ts +51 -13
- package/src/mcpl/reference-fetcher.ts +201 -162
- package/src/mcpl/references.ts +852 -78
- package/src/mcpl/server-connection.ts +145 -7
- package/src/mcpl/tool-lifecycle.ts +21 -0
- package/src/mcpl/tool-presence.ts +650 -0
- package/src/mcpl/tool-result-normalize.ts +18 -6
- package/src/mcpl/tool-signature.ts +285 -0
- package/src/mcpl/toolset-host.ts +637 -0
- package/src/mcpl/toolsets-module.ts +451 -0
- package/src/mcpl/transport.ts +3 -2
- package/src/mcpl/types.ts +22 -1
- package/src/mcpl/visible-content.ts +22 -9
- package/src/module-registry.ts +77 -24
- package/src/modules/discord/index.ts +1 -1
- package/src/modules/history/index.ts +48 -18
- package/src/modules/history/semantic.ts +308 -54
- package/src/modules/workspace/direct-write.ts +425 -0
- package/src/modules/workspace/edit-text.ts +82 -35
- package/src/modules/workspace/effects.ts +1 -1
- package/src/modules/workspace/index.ts +1274 -241
- package/src/modules/workspace/read-page.ts +222 -0
- package/src/modules/workspace/result-text.ts +119 -0
- package/src/modules/workspace/text.ts +58 -32
- package/src/modules/workspace/types.ts +41 -17
- package/src/sent-rows.ts +162 -0
- package/src/silent-heartbeat.ts +17 -10
- package/src/stable-hash.ts +14 -0
- package/src/stored-injections.ts +131 -0
- package/src/text-as-stored.ts +4 -3
- package/src/thinking-drops.ts +141 -0
- package/src/tool-image-ledger.ts +9 -8
- package/src/tool-presentation.ts +3 -1
- package/src/tool-result-guard.ts +19 -6
- package/src/tool-result-history.ts +488 -88
- package/src/tune-out/coordinator.ts +80 -37
- package/src/types/agent.ts +189 -7
- package/src/types/events.ts +19 -2
- package/src/types/framework.ts +21 -3
- package/src/types/module.ts +86 -7
- package/src/types/trace.ts +58 -2
|
@@ -25,14 +25,21 @@
|
|
|
25
25
|
* Autofetch policy (host default, not protocol): eager only below
|
|
26
26
|
* DEFAULT_EAGER_FETCH_MAX_BYTES from the connection origin — anything under
|
|
27
27
|
* that threshold the server could legitimately have inlined, so eager
|
|
28
|
-
* materialization is never worse than the status quo
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
* that
|
|
28
|
+
* materialization is never worse than the status quo for a reference whose
|
|
29
|
+
* claim is true. A fetch the eager default starts reads no further than the
|
|
30
|
+
* first chunk past its server's eager limit (autofetch.maxBytes, this
|
|
31
|
+
* default when that's unset), whatever size the server claims; one it joins
|
|
32
|
+
* is its starter's, whose success answers it too. The eager default doesn't
|
|
33
|
+
* choose a reference again once its fetch of it failed. Everything larger
|
|
34
|
+
* is fetched on demand (the fetch_reference tool, or the code-execution
|
|
35
|
+
* result hook, where a script receiving a result is the strongest available
|
|
36
|
+
* signal that the bytes are wanted). Per-server budgets cap cumulative
|
|
37
|
+
* appetite.
|
|
32
38
|
*/
|
|
33
39
|
import { createHash } from 'node:crypto';
|
|
34
40
|
import { boundedForLog, describeCause } from './errors.js';
|
|
35
|
-
import {
|
|
41
|
+
import { dialCheck, dialServer, FRESH_REFERENCE, NOTHING_TO_DO, REFERENCE_LIMITS, sanitizeLabel, shownServerId } from './references.js';
|
|
42
|
+
export { normalizedOrigin } from './references.js';
|
|
36
43
|
/** Per-fetch hard ceiling on actual bytes. A call can lower it for itself
|
|
37
44
|
* (fetch_reference's max_bytes, which it clamps to this); nothing raises it. */
|
|
38
45
|
export const DEFAULT_FETCH_MAX_BYTES = 256 * 1024 * 1024;
|
|
@@ -42,16 +49,17 @@ export const DEFAULT_EAGER_FETCH_MAX_BYTES = 256 * 1024;
|
|
|
42
49
|
* through a server reads counts against that server's, whether or not it's
|
|
43
50
|
* kept. */
|
|
44
51
|
export const DEFAULT_MAX_TOTAL_BYTES = 1024 * 1024 * 1024;
|
|
52
|
+
/** How long a caller waits for a fetch, its save included, unless it asks
|
|
53
|
+
* for another time. */
|
|
45
54
|
const FETCH_TIMEOUT_MS = 60_000;
|
|
55
|
+
/** How long the eager default waits for one reference. */
|
|
46
56
|
const EAGER_FETCH_TIMEOUT_MS = 10_000;
|
|
47
57
|
// What calling again can do, as each failure's remedy says it. The fetcher
|
|
48
58
|
// doesn't know where a reference came from (a tool result, a push, a channel
|
|
49
59
|
// message), so none names a tool, and fetch_reference's max_bytes is named
|
|
50
|
-
// only where a larger one can fetch it.
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
* uri arrives as this very id and refreshes its record. */
|
|
54
|
-
const FRESH_REFERENCE = "Once a fresh reference to it arrives, fetching may work; until then, fetching it again won't.";
|
|
60
|
+
// only where a larger one can fetch it. The refusals before dialing that a
|
|
61
|
+
// stub shares come from references.ts (dialServer, dialCheck) with their
|
|
62
|
+
// remedies (NOTHING_TO_DO, FRESH_REFERENCE, SERVER_BACK).
|
|
55
63
|
const TRY_LATER = 'Trying again later may work.';
|
|
56
64
|
/** A request that failed before an answer: a refused or reset connection
|
|
57
65
|
* can clear, and a cause that repeats on every try (a port fetch refuses, a
|
|
@@ -68,10 +76,28 @@ const BUDGET = "The budget doesn't renew on its own, so calling again won't chan
|
|
|
68
76
|
/** The host's own ceiling: fetch_reference clamps max_bytes to it, and no
|
|
69
77
|
* config sets another. */
|
|
70
78
|
const HOST_CEILING = "No max_bytes or setting lifts that limit, so calling again won't change it.";
|
|
71
|
-
/** The resolver reads the host's server configs as they are at each fetch. */
|
|
72
|
-
const SERVER_BACK = "Calling again won't change that unless whoever runs this host adds that server back.";
|
|
73
79
|
const refused = (error, remedy) => ({ refusal: { error, remedy } });
|
|
74
80
|
const fail = (error, remedy) => ({ ok: false, error, remedy });
|
|
81
|
+
/** A timeout, naming the timeout that ran out: its starter's, when the
|
|
82
|
+
* fetch is aborted at its deadline, or a caller's own, when its wait ends
|
|
83
|
+
* while the fetch or its save goes on. */
|
|
84
|
+
function tookLonger(timeoutMs) {
|
|
85
|
+
const seconds = timeoutMs / 1000;
|
|
86
|
+
return fail(`it took longer than ${seconds} second${seconds === 1 ? '' : 's'}`, TRY_LATER);
|
|
87
|
+
}
|
|
88
|
+
/** The two endings that name a call's own byte ceiling, as a function of it,
|
|
89
|
+
* so a caller that joined a fetch is told its own ceiling, not its
|
|
90
|
+
* starter's. */
|
|
91
|
+
const claimOver = (claimed) => (ceiling) => `it claims ${claimed} bytes, over the ${ceiling} bytes this call allows`;
|
|
92
|
+
const readPast = (received) => (ceiling) => `the download had reached ${received} bytes, past the ${ceiling} bytes this call allows, so it was stopped and nothing was kept`;
|
|
93
|
+
/** What the promise settles to, or undefined if the deadline, on the
|
|
94
|
+
* monotonic clock, comes first. */
|
|
95
|
+
function settledBy(promise, deadline) {
|
|
96
|
+
return new Promise((resolve, reject) => {
|
|
97
|
+
const timer = setTimeout(() => resolve(undefined), Math.max(0, deadline - performance.now()));
|
|
98
|
+
promise.finally(() => clearTimeout(timer)).then(resolve, reject);
|
|
99
|
+
});
|
|
100
|
+
}
|
|
75
101
|
/** What calling again can do about a server's HTTP status. A later try can
|
|
76
102
|
* work after a timeout, a conflict or lock the server's state can clear, a
|
|
77
103
|
* request it calls too early, a rate limit or a server's passing trouble,
|
|
@@ -156,27 +182,6 @@ const EXT_BY_MIME = new Map(Object.entries({
|
|
|
156
182
|
'video/mp4': 'mp4', 'application/json': 'json', 'text/plain': 'txt',
|
|
157
183
|
'application/pdf': 'pdf', 'application/zip': 'zip',
|
|
158
184
|
}));
|
|
159
|
-
/** A server's address as it's configured, its scheme and host, for a
|
|
160
|
-
* clause: never its userinfo, path or query. URL's own origin is 'null' for
|
|
161
|
-
* a scheme that isn't special, which normalizedOrigin accepts. The caller
|
|
162
|
-
* has already parsed it. */
|
|
163
|
-
function configuredOrigin(url) {
|
|
164
|
-
const u = new URL(url);
|
|
165
|
-
return `${u.protocol}//${u.host}`;
|
|
166
|
-
}
|
|
167
|
-
/** ws→http / wss→https with default ports elided, for origin comparison. */
|
|
168
|
-
export function normalizedOrigin(url) {
|
|
169
|
-
try {
|
|
170
|
-
const u = new URL(url);
|
|
171
|
-
const scheme = u.protocol === 'ws:' ? 'http:' : u.protocol === 'wss:' ? 'https:' : u.protocol;
|
|
172
|
-
const defaultPort = scheme === 'https:' ? '443' : '80';
|
|
173
|
-
const port = u.port === '' || u.port === defaultPort ? '' : `:${u.port}`;
|
|
174
|
-
return `${scheme}//${u.hostname.toLowerCase()}${port}`;
|
|
175
|
-
}
|
|
176
|
-
catch {
|
|
177
|
-
return null;
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
185
|
export class ReferenceFetcher {
|
|
181
186
|
resolveServer;
|
|
182
187
|
saveFile;
|
|
@@ -186,73 +191,97 @@ export class ReferenceFetcher {
|
|
|
186
191
|
* others have taken. */
|
|
187
192
|
totals = new Map();
|
|
188
193
|
inFlight = new Map();
|
|
189
|
-
constructor(
|
|
194
|
+
constructor(
|
|
195
|
+
/** A server's address, credential and limits, by id, from the
|
|
196
|
+
* framework's own config: the origin a fetch is checked against and the
|
|
197
|
+
* token it carries come from one answer. */
|
|
198
|
+
resolveServer,
|
|
190
199
|
/** Persist the payload; returns a mount-prefixed path or null when no
|
|
191
200
|
* writable mount without an include exists. File name is host-generated (§7.3). */
|
|
192
201
|
saveFile) {
|
|
193
202
|
this.resolveServer = resolveServer;
|
|
194
203
|
this.saveFile = saveFile;
|
|
195
204
|
}
|
|
196
|
-
/**
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
*
|
|
200
|
-
*
|
|
201
|
-
|
|
202
|
-
|
|
205
|
+
/** The server a check (dialServer or dialCheck) chose, with its credential
|
|
206
|
+
* and limits from the same resolver answer whose address the check read:
|
|
207
|
+
* each server's resolution is read once here, so the origin the check
|
|
208
|
+
* passes and the token the fetch sends come from one answer, whatever a
|
|
209
|
+
* resolver answers the next time it's asked. */
|
|
210
|
+
chosen(check) {
|
|
211
|
+
const resolutions = new Map();
|
|
212
|
+
const addressOf = (serverId) => {
|
|
213
|
+
if (!resolutions.has(serverId))
|
|
214
|
+
resolutions.set(serverId, this.resolveServer(serverId));
|
|
215
|
+
const resolution = resolutions.get(serverId);
|
|
216
|
+
return resolution === undefined || resolution === 'no-address' ? resolution : { url: resolution.url };
|
|
217
|
+
};
|
|
218
|
+
const server = check(addressOf);
|
|
219
|
+
if ('refusal' in server)
|
|
220
|
+
return server;
|
|
221
|
+
// The check chose only a server whose address it read as a url, so that
|
|
222
|
+
// server's resolution is a binding.
|
|
223
|
+
return { serverId: server.serverId, binding: resolutions.get(server.serverId) };
|
|
224
|
+
}
|
|
225
|
+
/** The server a fetch of a record dials (§6.2), with its credential and
|
|
226
|
+
* limits, or why none can be. */
|
|
227
|
+
serverFor(record) {
|
|
228
|
+
return this.chosen((addressOf) => dialServer(record, addressOf));
|
|
229
|
+
}
|
|
230
|
+
/** Would the eager (autofetch) default fetch this record? Not one whose
|
|
231
|
+
* eager fetch already failed; not one the fetch would refuse before
|
|
232
|
+
* dialing, asked with the default ceiling, so such a record takes no eager
|
|
233
|
+
* slot; and only one whose claimed size is within the eager limit of the
|
|
234
|
+
* server it dials. For one whose fetch is already under way, which the
|
|
235
|
+
* eager fetch would join as fetch() does, only the server and its eager
|
|
236
|
+
* limit enter: the expiry, the budget and the ceiling were checked when
|
|
237
|
+
* that fetch began. */
|
|
203
238
|
isEagerEligible(record) {
|
|
204
|
-
if (record.fetchedPath)
|
|
239
|
+
if (record.fetchedPath || record.eagerFailed)
|
|
205
240
|
return false;
|
|
206
241
|
const check = this.inFlight.has(record.refId) ? this.serverFor(record) : this.beforeDial(record);
|
|
207
242
|
if ('refusal' in check)
|
|
208
243
|
return false;
|
|
209
|
-
|
|
210
|
-
return record.testimony.sizeBytes !== undefined && record.testimony.sizeBytes <= cap;
|
|
244
|
+
return record.testimony.sizeBytes !== undefined && record.testimony.sizeBytes <= this.eagerLimit(check.binding);
|
|
211
245
|
}
|
|
212
|
-
/** The
|
|
213
|
-
*
|
|
214
|
-
*
|
|
215
|
-
*
|
|
216
|
-
*
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
// A later delivery of the same uri by a server binds this record.
|
|
235
|
-
return refusal ?? refused(`it's ${UNBOUND_REASON}`, FRESH_REFERENCE);
|
|
246
|
+
/** The eager default's fetch. One it starts reads no further than the first
|
|
247
|
+
* chunk past the server's eager limit, whatever size the reference claims;
|
|
248
|
+
* one it joins reads under its starter's ceiling, and that fetch's success
|
|
249
|
+
* answers it too (fetch()). It waits no longer than
|
|
250
|
+
* EAGER_FETCH_TIMEOUT_MS. One that fails is remembered on the record, so
|
|
251
|
+
* the eager default doesn't choose that reference again; fetch_reference
|
|
252
|
+
* still fetches it. */
|
|
253
|
+
async fetchEager(record) {
|
|
254
|
+
const server = this.serverFor(record);
|
|
255
|
+
const maxBytes = this.eagerLimit('refusal' in server ? undefined : server.binding);
|
|
256
|
+
const outcome = await this.fetch(record, { maxBytes, timeoutMs: EAGER_FETCH_TIMEOUT_MS });
|
|
257
|
+
if (!outcome.ok)
|
|
258
|
+
record.eagerFailed = true;
|
|
259
|
+
return outcome;
|
|
260
|
+
}
|
|
261
|
+
/** This server's eager limit: its autofetch.maxBytes,
|
|
262
|
+
* DEFAULT_EAGER_FETCH_MAX_BYTES when that's unset. Eligibility holds a
|
|
263
|
+
* claim to it, and a fetch the eager default starts stops reading at the
|
|
264
|
+
* first chunk past it. The host's own ceiling, which every fetch checks
|
|
265
|
+
* first, still holds past a larger one. */
|
|
266
|
+
eagerLimit(binding) {
|
|
267
|
+
return binding?.autofetch?.maxBytes ?? DEFAULT_EAGER_FETCH_MAX_BYTES;
|
|
236
268
|
}
|
|
237
269
|
/** Every check the fetch makes before it dials, in its order: the server
|
|
238
270
|
* (none, unknown, no address, an address of its own or the reference's
|
|
239
271
|
* that doesn't parse, a reference address carrying a user name or
|
|
240
|
-
* password, a scheme other than http: or https:, off the uri's origin)
|
|
241
|
-
* the expiry,
|
|
242
|
-
*
|
|
243
|
-
*
|
|
244
|
-
*
|
|
245
|
-
*
|
|
246
|
-
* refused. */
|
|
272
|
+
* password, a scheme other than http: or https:, off the uri's origin)
|
|
273
|
+
* and the expiry, which dialCheck makes as a reference's stub does; then
|
|
274
|
+
* a claimed size over the host's own ceiling, the server's spent budget,
|
|
275
|
+
* a claimed size over a call's ceiling. For a record with no saved copy
|
|
276
|
+
* and no fetch under way, the fetch, `refusal()` and the eager check all
|
|
277
|
+
* ask this, so what save_recent_image says is the reason the fetch would
|
|
278
|
+
* refuse with, and no eager slot goes to a fetch that would be refused. */
|
|
247
279
|
beforeDial(record, opts) {
|
|
248
|
-
const server = this.
|
|
280
|
+
const server = this.chosen((addressOf) => dialCheck(record, addressOf));
|
|
249
281
|
if ('refusal' in server)
|
|
250
282
|
return server;
|
|
251
283
|
const { serverId, binding } = server;
|
|
252
284
|
const t = record.testimony;
|
|
253
|
-
const expiry = referenceExpiry(t);
|
|
254
|
-
if (expiry)
|
|
255
|
-
return refused(`the reference is ${EXPIRY_REASON[expiry]}`, FRESH_REFERENCE);
|
|
256
285
|
const ceiling = opts?.maxBytes ?? DEFAULT_FETCH_MAX_BYTES;
|
|
257
286
|
// A claim past the host's own ceiling is refused first: nothing lifts
|
|
258
287
|
// it, not even a budget whoever runs the host raises.
|
|
@@ -265,19 +294,26 @@ export class ReferenceFetcher {
|
|
|
265
294
|
const budget = binding.autofetch?.maxTotalBytes ?? DEFAULT_MAX_TOTAL_BYTES;
|
|
266
295
|
const used = this.totals.get(serverId) ?? 0;
|
|
267
296
|
if (used >= budget) {
|
|
268
|
-
return refused(`this host's fetch budget for the "${serverId}" server is used up (${used} of ${budget} bytes)`, BUDGET);
|
|
297
|
+
return refused(`this host's fetch budget for the "${shownServerId(serverId)}" server is used up (${used} of ${budget} bytes)`, BUDGET);
|
|
269
298
|
}
|
|
270
299
|
// Vector 4: a claim already over the ceiling refuses without dialing. One
|
|
271
300
|
// that's also over what's left of the budget is told about the budget,
|
|
272
301
|
// which no max_bytes lifts. A claim over what's left but within the
|
|
273
302
|
// ceiling still dials, and the budget stops it at its first chunk past.
|
|
303
|
+
// Both refusals here are reached only through the call's own ceiling, so
|
|
304
|
+
// each is that ceiling's ending: a caller whose ceiling holds the claim
|
|
305
|
+
// would dial, and one that joined this call's fetch does (fetch()).
|
|
274
306
|
if (t.sizeBytes !== undefined && t.sizeBytes > ceiling) {
|
|
275
307
|
if (t.sizeBytes > budget - used) {
|
|
276
|
-
return
|
|
308
|
+
return {
|
|
309
|
+
...refused(`it claims ${t.sizeBytes} bytes, more than the ${budget - used} bytes left of this host's fetch budget for the "${shownServerId(serverId)}" server`, BUDGET),
|
|
310
|
+
byCeiling: true,
|
|
311
|
+
};
|
|
277
312
|
}
|
|
278
313
|
// Within what's left of the budget and the host's ceiling, so a
|
|
279
314
|
// ceiling of the call's own is what a larger max_bytes lifts.
|
|
280
|
-
|
|
315
|
+
const atCeiling = claimOver(t.sizeBytes);
|
|
316
|
+
return { ...refused(atCeiling(ceiling), `Pass max_bytes of at least ${t.sizeBytes} to fetch it.`), byCeiling: true, atCeiling };
|
|
281
317
|
}
|
|
282
318
|
return { serverId, binding, ceiling, budget };
|
|
283
319
|
}
|
|
@@ -292,66 +328,63 @@ export class ReferenceFetcher {
|
|
|
292
328
|
const check = this.beforeDial(record);
|
|
293
329
|
return 'refusal' in check ? check.refusal : null;
|
|
294
330
|
}
|
|
295
|
-
/**
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
331
|
+
/** Fetch a reference to workspace storage. Idempotent per record. Callers
|
|
332
|
+
* of one record share the fetch in flight, each under its own bounds: it
|
|
333
|
+
* waits no longer than its own timeout, counted from its call and covering
|
|
334
|
+
* the save. When the fetch it joined stopped on its starter's byte ceiling
|
|
335
|
+
* and its own is wider, it fetches again under its own. When that fetch
|
|
336
|
+
* stopped at its starter's deadline, it fetches again only if it has more
|
|
337
|
+
* time left than that starter's whole timeout, since a fresh fetch with no
|
|
338
|
+
* more time than one that ran out unanswered would likely be stopped too;
|
|
339
|
+
* otherwise it takes that ending. (A refetch's flight had less than its
|
|
340
|
+
* starter's timeout, so this errs toward not dialing.) A fetch that
|
|
341
|
+
* succeeds answers every caller waiting on it, whatever its own ceiling. A
|
|
342
|
+
* save still running when a caller stops waiting goes on, and the record
|
|
343
|
+
* is marked fetched when it lands. */
|
|
344
|
+
async fetch(record, opts) {
|
|
345
|
+
const ceiling = opts?.maxBytes ?? DEFAULT_FETCH_MAX_BYTES;
|
|
346
|
+
const timeoutMs = opts?.timeoutMs ?? FETCH_TIMEOUT_MS;
|
|
347
|
+
const deadline = performance.now() + timeoutMs;
|
|
348
|
+
for (;;) {
|
|
349
|
+
if (record.fetchedPath) {
|
|
350
|
+
return { ok: true, path: record.fetchedPath, bytes: record.verifiedBytes,
|
|
351
|
+
mimeType: record.verifiedMimeType, digestVerified: record.digestVerified };
|
|
352
|
+
}
|
|
353
|
+
const flight = this.inFlight.get(record.refId) ?? this.start(record, ceiling, deadline, timeoutMs);
|
|
354
|
+
const ended = await settledBy(flight.ended, deadline);
|
|
355
|
+
if (ended === undefined)
|
|
356
|
+
return tookLonger(timeoutMs);
|
|
357
|
+
const { stoppedBy, atCeiling, ...outcome } = ended;
|
|
358
|
+
if (stoppedBy === 'ceiling') {
|
|
359
|
+
if (ceiling > flight.ceiling)
|
|
360
|
+
continue;
|
|
361
|
+
return (atCeiling ? { ...outcome, error: atCeiling(ceiling) } : outcome);
|
|
362
|
+
}
|
|
363
|
+
if (stoppedBy === 'deadline' && deadline - performance.now() > flight.timeoutMs)
|
|
364
|
+
continue;
|
|
365
|
+
return outcome;
|
|
328
366
|
}
|
|
329
|
-
return null;
|
|
330
367
|
}
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
if (existing)
|
|
340
|
-
return existing;
|
|
341
|
-
const p = this.doFetch(record, opts).finally(() => this.inFlight.delete(record.refId));
|
|
342
|
-
this.inFlight.set(record.refId, p);
|
|
343
|
-
return p;
|
|
368
|
+
start(record, ceiling, deadline, timeoutMs) {
|
|
369
|
+
const flight = {
|
|
370
|
+
ceiling,
|
|
371
|
+
timeoutMs,
|
|
372
|
+
ended: this.doFetch(record, ceiling, deadline, timeoutMs).finally(() => this.inFlight.delete(record.refId)),
|
|
373
|
+
};
|
|
374
|
+
this.inFlight.set(record.refId, flight);
|
|
375
|
+
return flight;
|
|
344
376
|
}
|
|
345
|
-
async doFetch(record,
|
|
377
|
+
async doFetch(record, ceiling, deadline, timeoutMs) {
|
|
346
378
|
const t = record.testimony;
|
|
347
|
-
const check = this.beforeDial(record,
|
|
348
|
-
if ('refusal' in check)
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const
|
|
379
|
+
const check = this.beforeDial(record, { maxBytes: ceiling });
|
|
380
|
+
if ('refusal' in check) {
|
|
381
|
+
const refusal = fail(check.refusal.error, check.refusal.remedy);
|
|
382
|
+
return check.byCeiling ? { ...refusal, stoppedBy: 'ceiling', atCeiling: check.atCeiling } : refusal;
|
|
383
|
+
}
|
|
384
|
+
const { serverId, binding, budget } = check;
|
|
385
|
+
const server = `the "${shownServerId(serverId)}" server`;
|
|
353
386
|
const controller = new AbortController();
|
|
354
|
-
const timer = setTimeout(() => controller.abort(),
|
|
387
|
+
const timer = setTimeout(() => controller.abort(), Math.max(0, deadline - performance.now()));
|
|
355
388
|
try {
|
|
356
389
|
const headers = {};
|
|
357
390
|
if (binding.token)
|
|
@@ -393,8 +426,8 @@ export class ReferenceFetcher {
|
|
|
393
426
|
}
|
|
394
427
|
if (received > ceiling) {
|
|
395
428
|
controller.abort();
|
|
396
|
-
|
|
397
|
-
|
|
429
|
+
const atCeiling = readPast(received);
|
|
430
|
+
return { ...fail(atCeiling(ceiling), largerMaxBytes(received, budget - total, server)), stoppedBy: 'ceiling', atCeiling };
|
|
398
431
|
}
|
|
399
432
|
const buf = Buffer.from(value);
|
|
400
433
|
hash.update(buf);
|
|
@@ -444,11 +477,11 @@ export class ReferenceFetcher {
|
|
|
444
477
|
}
|
|
445
478
|
catch (e) {
|
|
446
479
|
// The timer is the only abort that throws: the budget and the ceiling
|
|
447
|
-
// abort the download and return at once.
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
480
|
+
// abort the download and return at once. It fires at the starter's
|
|
481
|
+
// deadline, and a caller with more time left than the starter's whole
|
|
482
|
+
// timeout fetches again (fetch()).
|
|
483
|
+
if (e?.name === 'AbortError')
|
|
484
|
+
return { ...tookLonger(timeoutMs), stoppedBy: 'deadline' };
|
|
452
485
|
return fail(`the request to ${server} failed: ${boundedForLog(whyFetchFailed(e))}`, REQUEST_FAILED);
|
|
453
486
|
}
|
|
454
487
|
finally {
|
|
@@ -456,5 +489,4 @@ export class ReferenceFetcher {
|
|
|
456
489
|
}
|
|
457
490
|
}
|
|
458
491
|
}
|
|
459
|
-
export { EAGER_FETCH_TIMEOUT_MS };
|
|
460
492
|
//# sourceMappingURL=reference-fetcher.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reference-fetcher.js","sourceRoot":"","sources":["../../../src/mcpl/reference-fetcher.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"reference-fetcher.js","sourceRoot":"","sources":["../../../src/mcpl/reference-fetcher.ts"],"names":[],"mappings":"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"}
|