@orkestrel/scaffold 0.0.103 → 0.0.104
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/dist/agents/skills/orkestrel-dispatch/scripts/helpers.js +84 -1
- package/dist/agents/skills/orkestrel-dispatch/scripts/launch.js +21 -6
- package/dist/agents/skills/orkestrel-harden/scripts/titles.js +338 -0
- package/dist/agents/skills/orkestrel-publish/scripts/swap.js +3 -39
- package/dist/agents/skills/orkestrel-publish/scripts/wave.js +433 -47
- package/dist/agents/skills/orkestrel-publish/scripts/window.js +2 -1
- package/dist/bin/main.js +16 -9
- package/dist/bin/main.js.map +1 -1
- package/dist/host/agents/orchestration.md +3 -3
- package/dist/host/agents/skills/enterprise-bootstrap/references/components.md +2 -2
- package/dist/host/agents/skills/enterprise-bootstrap/references/inspection.md +1 -1
- package/dist/host/agents/skills/orkestrel-build/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-debrief/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-debrief/references/field-testing.md +1 -1
- package/dist/host/agents/skills/orkestrel-debrief/references/instruction-audit.md +3 -3
- package/dist/host/agents/skills/orkestrel-dispatch/SKILL.md +10 -10
- package/dist/host/agents/skills/orkestrel-dispatch/references/launch.md +1 -0
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/helpers.ts +100 -1
- package/dist/host/agents/skills/orkestrel-dispatch/scripts/launch.ts +27 -6
- package/dist/host/agents/skills/orkestrel-falsify/SKILL.md +4 -4
- package/dist/host/agents/skills/orkestrel-falsify/agents/openai.yaml +1 -1
- package/dist/host/agents/skills/orkestrel-falsify/references/brief.md +8 -7
- package/dist/host/agents/skills/orkestrel-falsify/references/reconcile.md +6 -6
- package/dist/host/agents/skills/orkestrel-harden/SKILL.md +6 -1
- package/dist/host/agents/skills/orkestrel-harden/references/bindings.md +1700 -0
- package/dist/host/agents/skills/orkestrel-harden/references/contract.md +2 -2
- package/dist/host/agents/skills/orkestrel-harden/references/equivalence.md +48 -0
- package/dist/host/agents/skills/orkestrel-harden/references/hardening.md +4 -2
- package/dist/host/agents/skills/orkestrel-harden/scripts/titles.ts +425 -0
- package/dist/host/agents/skills/orkestrel-journey/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-journey/references/captures.md +9 -8
- package/dist/host/agents/skills/orkestrel-polish/SKILL.md +3 -3
- package/dist/host/agents/skills/orkestrel-publish/SKILL.md +2 -2
- package/dist/host/agents/skills/orkestrel-publish/references/release.md +1 -0
- package/dist/host/agents/skills/orkestrel-publish/references/wave.md +56 -13
- package/dist/host/agents/skills/orkestrel-publish/references/window.md +6 -6
- package/dist/host/agents/skills/orkestrel-publish/scripts/swap.ts +5 -49
- package/dist/host/agents/skills/orkestrel-publish/scripts/wave.ts +646 -49
- package/dist/host/agents/skills/orkestrel-publish/scripts/window.ts +2 -1
- package/dist/host/agents/transports/codex.md +1 -1
- package/dist/host/claude/agents/orkestrel.md +54 -53
- package/dist/host/claude/agents/reviewer.md +4 -4
- package/dist/host/claude/rules/documentation.md +2 -1
- package/dist/host/claude/rules/patterns.md +1 -1
- package/dist/host/claude/rules/quality.md +2 -2
- package/dist/host/claude/rules/styles.md +1 -1
- package/dist/host/claude/rules/tests.md +34 -8
- package/dist/host/claude/rules/typescript.md +29 -0
- package/dist/host/claude/rules/workspace.md +32 -22
- package/dist/host/claude/rules/writing.md +34 -26
- package/dist/host/claude/settings.json +2 -0
- package/dist/host/claude/skills/orkestrel-debrief/SKILL.md +1 -1
- package/dist/host/claude/skills/orkestrel-falsify/SKILL.md +1 -1
- package/dist/host/codex/agents/analyst.toml +3 -3
- package/dist/host/codex/agents/reviewer.toml +4 -4
- package/dist/host/configs/policy.ts +13 -2
- package/dist/host/dotfiles/editorconfig +0 -1
- package/dist/host/dotfiles/gitattributes +0 -1
- package/dist/host/dotfiles/gitignore +0 -1
- package/dist/host/dotfiles/oxlintrc.json +24 -0
- package/dist/host/guides/agent.md +1638 -598
- package/dist/host/guides/budget.md +89 -29
- package/dist/host/guides/form.md +477 -91
- package/dist/host/guides/mcp.md +14 -2
- package/dist/host/guides/ollama.md +97 -73
- package/dist/host/guides/probe.md +1 -1
- package/dist/host/guides/scaffold.md +158 -101
- package/dist/host/guides/study.md +2635 -0
- package/dist/host/guides/table.md +225 -15
- package/dist/host/guides/terminal.md +22 -20
- package/dist/host/guides/test.md +689 -255
- package/dist/host/manifest.json +87 -63
- package/dist/host/tests/config.test.ts +136 -82
- package/dist/host/tests/policy.test.ts +39 -1
- package/dist/host/tests/setupPolicy.ts +86 -28
- package/dist/src/core/index.cjs +1387 -611
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +35 -20
- package/dist/src/core/index.d.ts +35 -20
- package/dist/src/core/index.js +1385 -612
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +12 -12
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +12 -12
- package/dist/src/server/index.d.ts +12 -12
- package/dist/src/server/index.js +12 -12
- package/dist/src/server/index.js.map +1 -1
- package/package.json +4 -4
|
@@ -55,9 +55,9 @@ export declare interface BytesReadResult {
|
|
|
55
55
|
* Each step reads one path and moves the climb to one other: a dangling link redirects it to the
|
|
56
56
|
* link's target with the same suffix, and an absent name moves it to the parent with that name added
|
|
57
57
|
* to the suffix. One successor per step makes the climb a bounded recursion rather than a worklist,
|
|
58
|
-
* and the depth argument is its bound, so
|
|
59
|
-
* after `MAX_PATH_DEPTH` steps instead of walking indefinitely.
|
|
60
|
-
* climb at depth 0 with nothing pending.
|
|
58
|
+
* and the depth argument is its bound, so a path or a link cycle whose climb runs past that bound
|
|
59
|
+
* answers `undefined` after `MAX_PATH_DEPTH` steps instead of walking indefinitely.
|
|
60
|
+
* {@link resolveRealPath} starts the climb at depth 0 with nothing pending.
|
|
61
61
|
*
|
|
62
62
|
* @example
|
|
63
63
|
* ```ts
|
|
@@ -233,8 +233,8 @@ export declare const DIGEST_PATTERN: RegExp;
|
|
|
233
233
|
*
|
|
234
234
|
* @remarks
|
|
235
235
|
* The one segment allowed to carry a colon. Every other segment is measured by
|
|
236
|
-
* {@link INVALID_SEGMENT_CHARACTER_PATTERN}, which refuses one, so a
|
|
237
|
-
* such as `file.txt:stream
|
|
236
|
+
* {@link INVALID_SEGMENT_CHARACTER_PATTERN}, which refuses one, so a later
|
|
237
|
+
* segment cannot carry a stream name such as `file.txt:stream`.
|
|
238
238
|
*/
|
|
239
239
|
export declare const DRIVE_PATTERN: RegExp;
|
|
240
240
|
|
|
@@ -557,7 +557,7 @@ export declare const isHostManifest: Guard<HostManifest>;
|
|
|
557
557
|
* @remarks
|
|
558
558
|
* Compose this ahead of an element guard exactly as the core collection guard is
|
|
559
559
|
* composed, and for the same reason: the item count is settled before anything
|
|
560
|
-
* walks the items, and a
|
|
560
|
+
* walks the items, and a throwing `length` accessor answers `false` rather than
|
|
561
561
|
* escaping as a throw. It exists beside that guard rather than reusing it
|
|
562
562
|
* because they bound different things — one bounds what a caller may hand a
|
|
563
563
|
* public method, this one bounds what a checkout may contain.
|
|
@@ -1046,7 +1046,7 @@ export declare function matchesGitPath(path: string): boolean;
|
|
|
1046
1046
|
* The one place absence is told apart from failure. Every read here answers
|
|
1047
1047
|
* `undefined` or an empty result for a path that is not there and reports a path
|
|
1048
1048
|
* that is there but unreadable, so they must never be read from the same
|
|
1049
|
-
* caught value by eye. Total for any caught value, including
|
|
1049
|
+
* caught value by eye. Total for any caught value, including one whose reads throw.
|
|
1050
1050
|
*
|
|
1051
1051
|
* @example
|
|
1052
1052
|
* ```ts
|
|
@@ -1588,7 +1588,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
1588
1588
|
* Far above the core collection ceiling, and deliberately so. A tracked or dirty
|
|
1589
1589
|
* path list is the target repository's own fact rather than an argument a caller
|
|
1590
1590
|
* authored, so measuring it against the ceiling that bounds a public collection
|
|
1591
|
-
* would read a legitimately large checkout as
|
|
1591
|
+
* would read a legitimately large checkout as off contract and refuse the deletion
|
|
1592
1592
|
* verb on it.
|
|
1593
1593
|
*/
|
|
1594
1594
|
export declare const MAX_INVENTORY_PATHS = 100000;
|
|
@@ -1687,7 +1687,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
1687
1687
|
* Candidates are taken deepest first, which is what lets a whole chain go: the
|
|
1688
1688
|
* directory holding nothing but the emptied directory is empty in turn by the
|
|
1689
1689
|
* time it is read. Each one is resolved through the containment law and left
|
|
1690
|
-
* standing when it
|
|
1690
|
+
* standing when it resolves outside the target, is not a physical directory, still holds
|
|
1691
1691
|
* an entry, or refuses removal, and a directory left standing is absent from the
|
|
1692
1692
|
* answer.
|
|
1693
1693
|
*
|
|
@@ -2071,7 +2071,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
2071
2071
|
* concurrent rename or link swap during the call or before the caller finishes
|
|
2072
2072
|
* using the returned path. This helper returns a string, not a filesystem
|
|
2073
2073
|
* handle, so it cannot bind its containment check to a later operation. A caller
|
|
2074
|
-
* that admits
|
|
2074
|
+
* that admits untrusted concurrent namespace mutation needs a handle-bound
|
|
2075
2075
|
* operation instead.
|
|
2076
2076
|
*
|
|
2077
2077
|
* @example
|
|
@@ -2099,7 +2099,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
2099
2099
|
* prefix moves the destination somewhere the text never named. So the deepest
|
|
2100
2100
|
* existing ancestor is resolved and the remaining segments are re-joined onto
|
|
2101
2101
|
* it. {@link climbRealPath} performs the climb and bounds it by the path-depth
|
|
2102
|
-
* ceiling, so
|
|
2102
|
+
* ceiling, so no path can make it walk indefinitely.
|
|
2103
2103
|
*
|
|
2104
2104
|
* The caller's own text is collapsed first, which is what `resolve` does with a
|
|
2105
2105
|
* `..` the caller wrote: it cancels the segment before it as text, before any
|
|
@@ -2325,7 +2325,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
2325
2325
|
* baseline instead of a mixture it would have to reconcile.
|
|
2326
2326
|
*
|
|
2327
2327
|
* Requests are unauthenticated because every fleet repository is public, and
|
|
2328
|
-
* they follow no redirect, so a misconfigured or
|
|
2328
|
+
* they follow no redirect, so a misconfigured or untrusted endpoint cannot move a
|
|
2329
2329
|
* read to another host. Each one is bounded by its endpoint's timeout and by the
|
|
2330
2330
|
* reader's own abort signal, so {@link Upstream.destroy} cancels what is in
|
|
2331
2331
|
* flight instead of waiting for it.
|
|
@@ -55,9 +55,9 @@ export declare interface BytesReadResult {
|
|
|
55
55
|
* Each step reads one path and moves the climb to one other: a dangling link redirects it to the
|
|
56
56
|
* link's target with the same suffix, and an absent name moves it to the parent with that name added
|
|
57
57
|
* to the suffix. One successor per step makes the climb a bounded recursion rather than a worklist,
|
|
58
|
-
* and the depth argument is its bound, so
|
|
59
|
-
* after `MAX_PATH_DEPTH` steps instead of walking indefinitely.
|
|
60
|
-
* climb at depth 0 with nothing pending.
|
|
58
|
+
* and the depth argument is its bound, so a path or a link cycle whose climb runs past that bound
|
|
59
|
+
* answers `undefined` after `MAX_PATH_DEPTH` steps instead of walking indefinitely.
|
|
60
|
+
* {@link resolveRealPath} starts the climb at depth 0 with nothing pending.
|
|
61
61
|
*
|
|
62
62
|
* @example
|
|
63
63
|
* ```ts
|
|
@@ -233,8 +233,8 @@ export declare const DIGEST_PATTERN: RegExp;
|
|
|
233
233
|
*
|
|
234
234
|
* @remarks
|
|
235
235
|
* The one segment allowed to carry a colon. Every other segment is measured by
|
|
236
|
-
* {@link INVALID_SEGMENT_CHARACTER_PATTERN}, which refuses one, so a
|
|
237
|
-
* such as `file.txt:stream
|
|
236
|
+
* {@link INVALID_SEGMENT_CHARACTER_PATTERN}, which refuses one, so a later
|
|
237
|
+
* segment cannot carry a stream name such as `file.txt:stream`.
|
|
238
238
|
*/
|
|
239
239
|
export declare const DRIVE_PATTERN: RegExp;
|
|
240
240
|
|
|
@@ -557,7 +557,7 @@ export declare const isHostManifest: Guard<HostManifest>;
|
|
|
557
557
|
* @remarks
|
|
558
558
|
* Compose this ahead of an element guard exactly as the core collection guard is
|
|
559
559
|
* composed, and for the same reason: the item count is settled before anything
|
|
560
|
-
* walks the items, and a
|
|
560
|
+
* walks the items, and a throwing `length` accessor answers `false` rather than
|
|
561
561
|
* escaping as a throw. It exists beside that guard rather than reusing it
|
|
562
562
|
* because they bound different things — one bounds what a caller may hand a
|
|
563
563
|
* public method, this one bounds what a checkout may contain.
|
|
@@ -1046,7 +1046,7 @@ export declare function matchesGitPath(path: string): boolean;
|
|
|
1046
1046
|
* The one place absence is told apart from failure. Every read here answers
|
|
1047
1047
|
* `undefined` or an empty result for a path that is not there and reports a path
|
|
1048
1048
|
* that is there but unreadable, so they must never be read from the same
|
|
1049
|
-
* caught value by eye. Total for any caught value, including
|
|
1049
|
+
* caught value by eye. Total for any caught value, including one whose reads throw.
|
|
1050
1050
|
*
|
|
1051
1051
|
* @example
|
|
1052
1052
|
* ```ts
|
|
@@ -1588,7 +1588,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
1588
1588
|
* Far above the core collection ceiling, and deliberately so. A tracked or dirty
|
|
1589
1589
|
* path list is the target repository's own fact rather than an argument a caller
|
|
1590
1590
|
* authored, so measuring it against the ceiling that bounds a public collection
|
|
1591
|
-
* would read a legitimately large checkout as
|
|
1591
|
+
* would read a legitimately large checkout as off contract and refuse the deletion
|
|
1592
1592
|
* verb on it.
|
|
1593
1593
|
*/
|
|
1594
1594
|
export declare const MAX_INVENTORY_PATHS = 100000;
|
|
@@ -1687,7 +1687,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
1687
1687
|
* Candidates are taken deepest first, which is what lets a whole chain go: the
|
|
1688
1688
|
* directory holding nothing but the emptied directory is empty in turn by the
|
|
1689
1689
|
* time it is read. Each one is resolved through the containment law and left
|
|
1690
|
-
* standing when it
|
|
1690
|
+
* standing when it resolves outside the target, is not a physical directory, still holds
|
|
1691
1691
|
* an entry, or refuses removal, and a directory left standing is absent from the
|
|
1692
1692
|
* answer.
|
|
1693
1693
|
*
|
|
@@ -2071,7 +2071,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
2071
2071
|
* concurrent rename or link swap during the call or before the caller finishes
|
|
2072
2072
|
* using the returned path. This helper returns a string, not a filesystem
|
|
2073
2073
|
* handle, so it cannot bind its containment check to a later operation. A caller
|
|
2074
|
-
* that admits
|
|
2074
|
+
* that admits untrusted concurrent namespace mutation needs a handle-bound
|
|
2075
2075
|
* operation instead.
|
|
2076
2076
|
*
|
|
2077
2077
|
* @example
|
|
@@ -2099,7 +2099,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
2099
2099
|
* prefix moves the destination somewhere the text never named. So the deepest
|
|
2100
2100
|
* existing ancestor is resolved and the remaining segments are re-joined onto
|
|
2101
2101
|
* it. {@link climbRealPath} performs the climb and bounds it by the path-depth
|
|
2102
|
-
* ceiling, so
|
|
2102
|
+
* ceiling, so no path can make it walk indefinitely.
|
|
2103
2103
|
*
|
|
2104
2104
|
* The caller's own text is collapsed first, which is what `resolve` does with a
|
|
2105
2105
|
* `..` the caller wrote: it cancels the segment before it as text, before any
|
|
@@ -2325,7 +2325,7 @@ export declare class Materializer implements MaterializerInterface {
|
|
|
2325
2325
|
* baseline instead of a mixture it would have to reconcile.
|
|
2326
2326
|
*
|
|
2327
2327
|
* Requests are unauthenticated because every fleet repository is public, and
|
|
2328
|
-
* they follow no redirect, so a misconfigured or
|
|
2328
|
+
* they follow no redirect, so a misconfigured or untrusted endpoint cannot move a
|
|
2329
2329
|
* read to another host. Each one is bounded by its endpoint's timeout and by the
|
|
2330
2330
|
* reader's own abort signal, so {@link Upstream.destroy} cancels what is in
|
|
2331
2331
|
* flight instead of waiting for it.
|
package/dist/src/server/index.js
CHANGED
|
@@ -14,8 +14,8 @@ import { Emitter } from "@orkestrel/emitter";
|
|
|
14
14
|
*
|
|
15
15
|
* @remarks
|
|
16
16
|
* The one segment allowed to carry a colon. Every other segment is measured by
|
|
17
|
-
* {@link INVALID_SEGMENT_CHARACTER_PATTERN}, which refuses one, so a
|
|
18
|
-
* such as `file.txt:stream
|
|
17
|
+
* {@link INVALID_SEGMENT_CHARACTER_PATTERN}, which refuses one, so a later
|
|
18
|
+
* segment cannot carry a stream name such as `file.txt:stream`.
|
|
19
19
|
*/
|
|
20
20
|
var DRIVE_PATTERN = /^[A-Za-z]:$/;
|
|
21
21
|
/**
|
|
@@ -80,7 +80,7 @@ var MAX_PATH_DEPTH = 64;
|
|
|
80
80
|
* Far above the core collection ceiling, and deliberately so. A tracked or dirty
|
|
81
81
|
* path list is the target repository's own fact rather than an argument a caller
|
|
82
82
|
* authored, so measuring it against the ceiling that bounds a public collection
|
|
83
|
-
* would read a legitimately large checkout as
|
|
83
|
+
* would read a legitimately large checkout as off contract and refuse the deletion
|
|
84
84
|
* verb on it.
|
|
85
85
|
*/
|
|
86
86
|
var MAX_INVENTORY_PATHS = 1e5;
|
|
@@ -173,7 +173,7 @@ var PACKUMENT_MEDIA_TYPE = "application/vnd.npm.install-v1+json";
|
|
|
173
173
|
* The one place absence is told apart from failure. Every read here answers
|
|
174
174
|
* `undefined` or an empty result for a path that is not there and reports a path
|
|
175
175
|
* that is there but unreadable, so they must never be read from the same
|
|
176
|
-
* caught value by eye. Total for any caught value, including
|
|
176
|
+
* caught value by eye. Total for any caught value, including one whose reads throw.
|
|
177
177
|
*
|
|
178
178
|
* @example
|
|
179
179
|
* ```ts
|
|
@@ -622,7 +622,7 @@ function computeFileDigest(path) {
|
|
|
622
622
|
* prefix moves the destination somewhere the text never named. So the deepest
|
|
623
623
|
* existing ancestor is resolved and the remaining segments are re-joined onto
|
|
624
624
|
* it. {@link climbRealPath} performs the climb and bounds it by the path-depth
|
|
625
|
-
* ceiling, so
|
|
625
|
+
* ceiling, so no path can make it walk indefinitely.
|
|
626
626
|
*
|
|
627
627
|
* The caller's own text is collapsed first, which is what `resolve` does with a
|
|
628
628
|
* `..` the caller wrote: it cancels the segment before it as text, before any
|
|
@@ -673,9 +673,9 @@ function resolveRealPath(path) {
|
|
|
673
673
|
* Each step reads one path and moves the climb to one other: a dangling link redirects it to the
|
|
674
674
|
* link's target with the same suffix, and an absent name moves it to the parent with that name added
|
|
675
675
|
* to the suffix. One successor per step makes the climb a bounded recursion rather than a worklist,
|
|
676
|
-
* and the depth argument is its bound, so
|
|
677
|
-
* after `MAX_PATH_DEPTH` steps instead of walking indefinitely.
|
|
678
|
-
* climb at depth 0 with nothing pending.
|
|
676
|
+
* and the depth argument is its bound, so a path or a link cycle whose climb runs past that bound
|
|
677
|
+
* answers `undefined` after `MAX_PATH_DEPTH` steps instead of walking indefinitely.
|
|
678
|
+
* {@link resolveRealPath} starts the climb at depth 0 with nothing pending.
|
|
679
679
|
*
|
|
680
680
|
* @example
|
|
681
681
|
* ```ts
|
|
@@ -728,7 +728,7 @@ function climbRealPath(current, pending, depth) {
|
|
|
728
728
|
* concurrent rename or link swap during the call or before the caller finishes
|
|
729
729
|
* using the returned path. This helper returns a string, not a filesystem
|
|
730
730
|
* handle, so it cannot bind its containment check to a later operation. A caller
|
|
731
|
-
* that admits
|
|
731
|
+
* that admits untrusted concurrent namespace mutation needs a handle-bound
|
|
732
732
|
* operation instead.
|
|
733
733
|
*
|
|
734
734
|
* @example
|
|
@@ -1030,7 +1030,7 @@ function listCanonPaths(target, groups) {
|
|
|
1030
1030
|
* Candidates are taken deepest first, which is what lets a whole chain go: the
|
|
1031
1031
|
* directory holding nothing but the emptied directory is empty in turn by the
|
|
1032
1032
|
* time it is read. Each one is resolved through the containment law and left
|
|
1033
|
-
* standing when it
|
|
1033
|
+
* standing when it resolves outside the target, is not a physical directory, still holds
|
|
1034
1034
|
* an entry, or refuses removal, and a directory left standing is absent from the
|
|
1035
1035
|
* answer.
|
|
1036
1036
|
*
|
|
@@ -2080,7 +2080,7 @@ var isDigest = stringOf({ pattern: DIGEST_PATTERN });
|
|
|
2080
2080
|
* @remarks
|
|
2081
2081
|
* Compose this ahead of an element guard exactly as the core collection guard is
|
|
2082
2082
|
* composed, and for the same reason: the item count is settled before anything
|
|
2083
|
-
* walks the items, and a
|
|
2083
|
+
* walks the items, and a throwing `length` accessor answers `false` rather than
|
|
2084
2084
|
* escaping as a throw. It exists beside that guard rather than reusing it
|
|
2085
2085
|
* because they bound different things — one bounds what a caller may hand a
|
|
2086
2086
|
* public method, this one bounds what a checkout may contain.
|
|
@@ -3925,7 +3925,7 @@ var ReadAllowance = class {
|
|
|
3925
3925
|
* baseline instead of a mixture it would have to reconcile.
|
|
3926
3926
|
*
|
|
3927
3927
|
* Requests are unauthenticated because every fleet repository is public, and
|
|
3928
|
-
* they follow no redirect, so a misconfigured or
|
|
3928
|
+
* they follow no redirect, so a misconfigured or untrusted endpoint cannot move a
|
|
3929
3929
|
* read to another host. Each one is bounded by its endpoint's timeout and by the
|
|
3930
3930
|
* reader's own abort signal, so {@link Upstream.destroy} cancels what is in
|
|
3931
3931
|
* flight instead of waiting for it.
|