Skip to content

Commit 050dda9

Browse files
nficanoclaude
andcommitted
fix: restore ArtifactMessages.cs missed by case-insensitive gitignore
The `artifacts/` rule in .gitignore matched both the root build-output directory and the `src/ARCP/Messages/Artifacts/` source folder on macOS's case-insensitive filesystem, so ArtifactPut, ArtifactRef, ArtifactFetch, and ArtifactRelease were never tracked. Linux CI cloned the tree without them and failed to build samples/Handoff and ARCP.IntegrationTests with CS0246. Scope the rule to /artifacts/ and add the missing file. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent c880bfa commit 050dda9

2 files changed

Lines changed: 46 additions & 1 deletion

File tree

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,10 @@ obj/
55
*.userosscache
66
*.sln.docstates
77
[Tt]est[Rr]esult*/
8-
artifacts/
8+
# Leading slash scopes the rule to the repo-root build output dir so it
9+
# doesn't also match source folders like src/ARCP/Messages/Artifacts/
10+
# under macOS's case-insensitive filesystem.
11+
/artifacts/
912

1013
# Coverage
1114
coverage/
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
using ARCP.Envelope;
2+
3+
namespace ARCP.Messages.Artifacts;
4+
5+
/// <summary>§16.2 upload an artifact (inline base64 in v0.1; sidecar deferred).</summary>
6+
public sealed record ArtifactPut(
7+
string MediaType,
8+
Ids.ArtifactId? ArtifactId = null,
9+
string? Data = null,
10+
string? Encoding = null,
11+
int? TtlSeconds = null) : MessageType
12+
{
13+
/// <inheritdoc />
14+
public override string WireType => "artifact.put";
15+
}
16+
17+
/// <summary>§16.2 fetch an artifact by id.</summary>
18+
public sealed record ArtifactFetch(Ids.ArtifactId ArtifactId) : MessageType
19+
{
20+
/// <inheritdoc />
21+
public override string WireType => "artifact.fetch";
22+
}
23+
24+
/// <summary>§16.1 canonical artifact reference.</summary>
25+
public sealed record ArtifactRef(
26+
Ids.ArtifactId ArtifactId,
27+
string Uri,
28+
string MediaType,
29+
long Size,
30+
string? Sha256 = null,
31+
DateTimeOffset? ExpiresAt = null) : MessageType
32+
{
33+
/// <inheritdoc />
34+
public override string WireType => "artifact.ref";
35+
}
36+
37+
/// <summary>§16.2 release a fetched artifact.</summary>
38+
public sealed record ArtifactRelease(Ids.ArtifactId ArtifactId) : MessageType
39+
{
40+
/// <inheritdoc />
41+
public override string WireType => "artifact.release";
42+
}

0 commit comments

Comments
 (0)