Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
6b9be80
rust: share reflected tool schema pools
noise64 Sep 22, 2026
3fc7442
moonbit: make reflected snapshots immutable
noise64 Sep 22, 2026
2253479
rust: cover reflected output completion failures
noise64 Sep 22, 2026
ac3aac4
scala: cover fallible generated tool construction
noise64 Sep 23, 2026
97230d6
docs: simplify reflection client approaches
noise64 Sep 23, 2026
d00ed1d
schema: support minimum quantity mantissas
noise64 Sep 23, 2026
b0b2ee0
schema: accept omitted optional record fields
noise64 Sep 23, 2026
d96a6ae
reflection: reject unsupported JSON schema leaves
noise64 Sep 23, 2026
a1705b5
typescript: align reflection JSON semantics
noise64 Sep 23, 2026
01a31a5
scala: use lossless canonical JSON for wide values
noise64 Sep 23, 2026
31578a4
moonbit: use lossless canonical JSON for wide values
noise64 Sep 23, 2026
876270b
test: enforce cross-sdk reflection conformance
noise64 Sep 23, 2026
524b3da
docs: align reflection JSON semantics
noise64 Sep 23, 2026
44ac30d
test: format reflection corpus runners
noise64 Sep 23, 2026
0aa8402
effect: accept omitted recursive option fields
noise64 Sep 23, 2026
b0727d5
typescript: accept omitted reflected options
noise64 Sep 23, 2026
114b57b
scala: align bridge JSON payloads
noise64 Sep 23, 2026
c6ee205
moonbit: align bridge JSON payloads
noise64 Sep 23, 2026
1b99b22
test: extend reflection conformance for binary and config
noise64 Sep 23, 2026
2d66223
docs: preserve code-first RPC terminology
noise64 Sep 23, 2026
d9b5565
Merge remote-tracking branch 'origin/main' into reflection-leftovers
noise64 Sep 23, 2026
dde30c1
moonbit: fix streaming fixture after main merge
noise64 Sep 23, 2026
3c778bf
ci: deliver CLI test binaries as artifact
noise64 Sep 23, 2026
b181fbb
Merge remote-tracking branch 'origin/main' into reflection-leftovers
noise64 Sep 23, 2026
2524d10
test: use protocol base64 for MoonBit stream fixture
noise64 Sep 24, 2026
fd2e5fa
fix: align public bridge JSON encoding
noise64 Sep 24, 2026
3b7c7f7
fix: enforce reflection conformance edge cases
noise64 Sep 24, 2026
0c73bb0
moonbit: refresh generated example interfaces
noise64 Sep 24, 2026
feee9ba
fix: align reflection JSON schemas with canonical validation
noise64 Sep 24, 2026
72719aa
test: enforce reflection rejection categories
noise64 Sep 24, 2026
31706a8
Merge remote-tracking branch 'origin/main' into reflection-leftovers
noise64 Sep 24, 2026
1a53e63
ci: restore cached CLI test binaries
noise64 Sep 24, 2026
e27b2c1
fix: preserve canonical config encoding across bridges
noise64 Sep 25, 2026
e9a4773
fix: align reflection validation edge cases
noise64 Sep 25, 2026
512393d
fix: close reflection review gaps
noise64 Sep 25, 2026
446111a
Merge remote-tracking branch 'origin/main' into reflection-leftovers
noise64 Sep 25, 2026
828eb3a
fix: pass fingerprint in durable stream regression
noise64 Sep 25, 2026
8815ec5
fix: close final bridge review gaps
noise64 Sep 25, 2026
1e40478
fix: preserve unstructured aliases in streaming clients
noise64 Sep 25, 2026
a6d877e
Merge remote-tracking branch 'origin/main' into reflection-leftovers
noise64 Sep 25, 2026
8b512f4
test: tighten reflection conformance regressions
noise64 Sep 25, 2026
f1c84c6
test: preserve reflection regression diagnostics
noise64 Sep 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/ci.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ jobs:
run: cargo make --profile ci check-openapi
- name: Check how-to-guides docs are in sync with golem-skills/
run: cargo make --profile ci check-docs-skills
- name: Check reflection conformance corpus embeds
run: cargo make --profile ci check-reflection-conformance
- name: Check configs are up to date
run: cargo make --profile ci check-configs
- name: Check WIT deps are synced
Expand Down
14 changes: 14 additions & 0 deletions Makefile.toml
Original file line number Diff line number Diff line change
Expand Up @@ -1137,6 +1137,20 @@ script = '''
fi
'''

[tasks.generate-reflection-conformance]
description = "Embeds the reflection conformance corpus in Scala and MoonBit test sources"
script_runner = "@duckscript"
script = '''
exec --fail-on-error node scripts/sync-reflection-conformance.mjs
'''

[tasks.check-reflection-conformance]
description = "Fails if Scala or MoonBit reflection conformance embeds are stale"
script_runner = "@duckscript"
script = '''
exec --fail-on-error node scripts/sync-reflection-conformance.mjs --check
'''

## ** PUBLISH **
[tasks.publish]
description = "Publishes packages to crates.io"
Expand Down
4 changes: 2 additions & 2 deletions cli/golem-cli/src/bridge_gen/moonbit/runtime/json_codec.mbt
Original file line number Diff line number Diff line change
Expand Up @@ -184,7 +184,7 @@ pub fn schema_value_to_json(value : SchemaValue) -> Json {
}
let fields : Array[(String, Json)] = [("bytes", Json::array(arr))]
match mime_type {
Some(m) => fields.push(("mime_type", Json::string(m)))
Some(m) => fields.push(("mimeType", Json::string(m)))
None => ()
}
node("binary", obj(fields))
Expand Down Expand Up @@ -417,7 +417,7 @@ pub fn schema_value_from_json(j : Json) -> SchemaValue raise {
for b in arr {
buf.write_byte(parse_int_range(b, 0, 255, "byte").to_byte())
}
let mime = match field_opt(m, "mime_type") {
let mime = match field_opt(m, "mimeType") {
Some(x) => Some(expect_string(x))
None => None
}
Expand Down
11 changes: 7 additions & 4 deletions cli/golem-cli/src/bridge_gen/moonbit/runtime/protocol.mbt
Original file line number Diff line number Diff line change
Expand Up @@ -73,9 +73,12 @@ pub(all) struct ResolvedAgent {
}

///|
fn encode_config_entry(entry : AgentConfigEntry) -> Json {
fn encode_config_entry(entry : AgentConfigEntry) -> Json raise {
let path : Array[Json] = entry.path.map(Json::string)
obj([("path", Json::array(path)), ("value", schema_value_to_json(entry.value))])
obj([
("path", Json::array(path)),
("value", entry.codec.encode_canonical(entry.value)),
])
}

///|
Expand All @@ -86,7 +89,7 @@ fn encode_create_agent_request(
parameters : SchemaValue,
phantom_id : String?,
config : Array[AgentConfigEntry],
) -> Json {
) -> Json raise {
let fields : Array[(String, Json)] = [
("appName", Json::string(app_name)),
("envName", Json::string(env_name)),
Expand Down Expand Up @@ -114,7 +117,7 @@ fn encode_agent_invocation_request(
mode : String,
schedule_at : String?,
idempotency_key : String?,
) -> Json {
) -> Json raise {
let fields : Array[(String, Json)] = [
("appName", Json::string(app_name)),
("envName", Json::string(env_name)),
Expand Down
Loading
Loading