Skip to content

Commit 38eb995

Browse files
authored
Merge branch 'main' into repo-assist/design-parity-277-batch3-da69f793ddf235cc
2 parents 6fc0124 + 0761f5d commit 38eb995

9 files changed

Lines changed: 1090 additions & 706 deletions

File tree

.github/aw/actions-lock.json

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,20 @@
1010
"version": "v8",
1111
"sha": "ed597411d8f924073f98dfc5c65a23a2325f34cd"
1212
},
13-
"github/gh-aw/actions/[email protected]": {
13+
"github/gh-aw-actions/[email protected]": {
14+
"repo": "github/gh-aw-actions/setup",
15+
"version": "v0.61.1",
16+
"sha": "be0029bbbaeef8c6bea6825f31d9593219b2dc28"
17+
},
18+
"github/gh-aw-actions/[email protected]": {
19+
"repo": "github/gh-aw-actions/setup",
20+
"version": "v0.62.5",
21+
"sha": "dc50be57c94373431b49d3d0927f318ac2bb5c4c"
22+
},
23+
"github/gh-aw/actions/[email protected]": {
1424
"repo": "github/gh-aw/actions/setup",
15-
"version": "v0.56.2",
16-
"sha": "f1073c5498ee46fec1530555a7c953445417c69b"
25+
"version": "v0.62.5",
26+
"sha": "48d8fdfddc8cad854ac0c70ceb573f09fb8f9c9b"
1727
}
1828
}
1929
}

.github/workflows/repo-assist.lock.yml

Lines changed: 274 additions & 638 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.github/workflows/repo-assist.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
description: |
3-
A friendly repository assistant that runs 4 times a day to support contributors and maintainers.
3+
A friendly repository assistant that runs 2 times a day to support contributors and maintainers.
44
Can also be triggered on-demand via '/repo-assist <instructions>' to perform specific tasks.
55
- Labels and triages open issues
66
- Comments helpfully on open issues to unblock contributors and onboard newcomers
@@ -33,6 +33,19 @@ network:
3333
- rust
3434
- java
3535

36+
checkout:
37+
fetch: ["*"] # fetch all remote branches to allow working on PR branches
38+
fetch-depth: 0 # fetch full history
39+
40+
tools:
41+
web-fetch:
42+
github:
43+
toolsets: [all]
44+
min-integrity: none # This workflow is allowed to examine and comment on any issues or PRs
45+
repos: all
46+
bash: true
47+
repo-memory: true
48+
3649
safe-outputs:
3750
add-comment:
3851
max: 10
@@ -65,13 +78,6 @@ safe-outputs:
6578
max: 5
6679
target: "*"
6780

68-
tools:
69-
web-fetch:
70-
github:
71-
toolsets: [all]
72-
bash: true
73-
repo-memory: true
74-
7581
steps:
7682
- name: Fetch repo data for task weighting
7783
env:
@@ -165,7 +171,7 @@ steps:
165171
json.dump(result, f, indent=2)
166172
EOF
167173
168-
source: githubnext/agentics/workflows/repo-assist.md@346204513ecfa08b81566450d7d599556807389f
174+
source: githubnext/agentics/workflows/repo-assist.md@4957663821dbb3260348084fa2f1659701950fef
169175
---
170176

171177
# Repo Assist

RELEASE_NOTES.md

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,26 @@
11
### 4.11.0
22

3-
* Added `AsyncSeq.insertManyAt` — inserts multiple values before the element at the given index. Mirrors `Seq.insertManyAt` and `TaskSeq.insertManyAt`.
4-
* Added `AsyncSeq.removeManyAt` — removes a run of elements starting at the given index. Mirrors `Seq.removeManyAt` and `TaskSeq.removeManyAt`.
5-
* Added `AsyncSeq.box` — boxes each element to `obj`. Mirrors `TaskSeq.box`.
6-
* Added `AsyncSeq.unbox<'T>` — unboxes each `obj` element to `'T`. Mirrors `TaskSeq.unbox`.
7-
* Added `AsyncSeq.cast<'T>` — dynamically casts each `obj` element to `'T`. Mirrors `TaskSeq.cast`.
8-
* Added `AsyncSeq.lengthOrMax` — counts elements up to a maximum, avoiding full enumeration of long or infinite sequences. Mirrors `TaskSeq.lengthOrMax`.
9-
* Note: `AsyncSeq.except` already accepts `seq<'T>` for the excluded collection, so no separate `exceptOfSeq` is needed.
103
* Part of ongoing design-parity work with FSharp.Control.TaskSeq (see #277).
4+
* Design parity with FSharp.Control.TaskSeq (#277, batch 2):
5+
* Added `AsyncSeq.tryTail` — returns `None` if the sequence is empty; otherwise returns `Some` of the tail. Safe counterpart to `tail`. Mirrors `TaskSeq.tryTail`.
6+
* Added `AsyncSeq.where` / `AsyncSeq.whereAsync` — aliases for `filter` / `filterAsync`, mirroring the naming convention in `TaskSeq` and F# 8 collection expressions.
7+
* Added `AsyncSeq.lengthBy` / `AsyncSeq.lengthByAsync` — counts elements satisfying a predicate. Mirrors `TaskSeq.lengthBy` / `TaskSeq.lengthByAsync`.
8+
* Added `AsyncSeq.compareWith` / `AsyncSeq.compareWithAsync` — lexicographically compares two async sequences using a comparison function. Mirrors `TaskSeq.compareWith` / `TaskSeq.compareWithAsync`.
9+
* Added `AsyncSeq.takeWhileInclusiveAsync` — async variant of the existing `takeWhileInclusive`. Mirrors `TaskSeq.takeWhileInclusiveAsync`.
10+
* Added `AsyncSeq.skipWhileInclusive` / `AsyncSeq.skipWhileInclusiveAsync` — skips elements while predicate holds and also skips the first non-matching boundary element. Mirrors `TaskSeq.skipWhileInclusive` / `TaskSeq.skipWhileInclusiveAsync`.
11+
* Added `AsyncSeq.appendSeq` — appends a synchronous `seq<'T>` after an async sequence. Mirrors `TaskSeq.appendSeq`.
12+
* Added `AsyncSeq.prependSeq` — prepends a synchronous `seq<'T>` before an async sequence. Mirrors `TaskSeq.prependSeq`.
13+
* Added `AsyncSeq.delay` — defers sequence creation to enumeration time by calling a factory function each time `GetAsyncEnumerator` is called. Mirrors `TaskSeq.delay`.
14+
* Added `AsyncSeq.collectAsync` — like `collect` but the mapping function is asynchronous (`'T -> Async<AsyncSeq<'U>>`). Mirrors `TaskSeq.collectAsync`.
15+
* Added `AsyncSeq.partition` / `AsyncSeq.partitionAsync` — splits a sequence into two arrays using a (optionally async) predicate; the first array contains matching elements, the second non-matching. Mirrors `TaskSeq.partition` / `TaskSeq.partitionAsync`.
16+
* Added `AsyncSeq.insertManyAt` — inserts multiple values before the element at the given index. Mirrors `Seq.insertManyAt` and `TaskSeq.insertManyAt`.
17+
* Added `AsyncSeq.removeManyAt` — removes a run of elements starting at the given index. Mirrors `Seq.removeManyAt` and `TaskSeq.removeManyAt`.
18+
* Added `AsyncSeq.box` — boxes each element to `obj`. Mirrors `TaskSeq.box`.
19+
* Added `AsyncSeq.unbox<'T>` — unboxes each `obj` element to `'T`. Mirrors `TaskSeq.unbox`.
20+
* Added `AsyncSeq.cast<'T>` — dynamically casts each `obj` element to `'T`. Mirrors `TaskSeq.cast`.
21+
* Added `AsyncSeq.lengthOrMax` — counts elements up to a maximum, avoiding full enumeration of long or infinite sequences. Mirrors `TaskSeq.lengthOrMax`.
22+
* Note: `AsyncSeq.except` already accepts `seq<'T>` for the excluded collection, so no separate `exceptOfSeq` is needed.
23+
* Tests: added 14 new unit tests covering previously untested functions — `AsyncSeq.indexed`, `AsyncSeq.iteriAsync`, `AsyncSeq.tryLast`, `AsyncSeq.replicateUntilNoneAsync`, and `AsyncSeq.reduceAsync` (empty-sequence edge case).
1124

1225
### 4.10.0
1326

@@ -18,7 +31,9 @@
1831
* Performance: `filterAsync` — replaced `asyncSeq`-builder implementation with a direct optimised enumerator, reducing allocation and generator overhead.
1932
* Performance: `chooseAsync` — fallback (non-`AsyncSeqOp`) path now uses a direct optimised enumerator instead of the `asyncSeq` builder.
2033
* Performance: `foldAsync` — fallback (non-`AsyncSeqOp`) path now uses a direct loop instead of composing `scanAsync` + `lastOrDefault`, avoiding intermediate sequence allocations.
21-
* Benchmarks: added `AsyncSeqFilterChooseFoldBenchmarks` and `AsyncSeqPipelineBenchmarks` benchmark classes to measure `filterAsync`, `chooseAsync`, `foldAsync`, `toArrayAsync`, and common multi-step pipelines.
34+
* Performance: `take` — replaced `asyncSeq`-builder implementation with a direct optimised enumerator (`OptimizedTakeEnumerator`), eliminating generator-machinery overhead for this common slicing operation.
35+
* Performance: `skip` — replaced `asyncSeq`-builder implementation with a direct optimised enumerator (`OptimizedSkipEnumerator`), eliminating generator-machinery overhead for this common slicing operation.
36+
* Benchmarks: added `AsyncSeqFilterChooseFoldBenchmarks`, `AsyncSeqPipelineBenchmarks`, and `AsyncSeqSliceBenchmarks` benchmark classes.
2237

2338
### 4.8.0
2439

0 commit comments

Comments
 (0)