@stackbone/cli 0.4.0 → 0.5.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/CHANGELOG.md CHANGED
@@ -7,6 +7,78 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.5.0] - 2026-09-14
11
+
12
+ ### Added
13
+
14
+ - **`stackbone dev` records a write's echo and answers `isOwnEcho`.** A
15
+ connector call that names an `echoPath` has the value extracted from the
16
+ provider's response and recorded on its `connection` run step, and the
17
+ emulator plants the reader `isOwnEcho` queries on first dispatch, looking one
18
+ hour back across every workflow in the project. Three cases leave an
19
+ unresolved marker instead of a value, and reading one makes `isOwnEcho` throw
20
+ `echo_guard_unavailable` rather than answer a false "not ours": the path
21
+ resolved to nothing (missing, `null` and `''` are one case, because an empty
22
+ echo would match every later delivery whose value renders empty), the call
23
+ failed in a way that may still have landed (`execute_failed`, `timeout`, an
24
+ envelope-less `credential_error`), or the write ran with no workflow owner,
25
+ such as inside an agent turn's tool, which blinds every caller on that
26
+ connector. The runtime warns which write left the marker when it writes the
27
+ row. A call with no invocation context at all still writes to the provider
28
+ and records nothing, so it warns. Both halves need the `@stackbone/sdk`
29
+ released alongside this version: a project on an older SDK never sends
30
+ `echoPath`, and its `isOwnEcho` throws "No echo guard reader is bound".
31
+
32
+ ### Fixed
33
+
34
+ - **`stackbone package --target self-host`: the agent no longer races the
35
+ control plane for the shared connect tables.** The two containers share one
36
+ Postgres and both declared `connection_grant`: db-core's migration with a
37
+ bare `CREATE TABLE`, the box's lazy boot DDL with
38
+ `CREATE TABLE IF NOT EXISTS`. Whichever arrived second lost, and a boot where
39
+ the box won killed the control plane's migration and surfaced as a
40
+ health-check timeout. The generated compose now sets
41
+ `STACKBONE_PLATFORM_SCHEMA_OWNER: control-plane` on the agent service and the
42
+ box stands down. Not overridable from `.env`: it is a fact about that compose
43
+ file, not a preference. `stackbone dev` and BYOC set nothing and keep creating
44
+ their own tables.
45
+
46
+ - **A failed broker-context build is no longer cached for the life of the
47
+ process.** One Postgres hiccup on the first Connect request used to disable
48
+ Connect until the container restarted; the next request now rebuilds it.
49
+
50
+ ## [0.4.1] - 2026-09-11
51
+
52
+ ### Added
53
+
54
+ - **Every generated connector signature declares its second parameter.**
55
+ `connection(id).<op>(args, opts)` has forwarded a second argument at run time
56
+ since it existed and no generated signature declared it, so the SDK's
57
+ `idempotent` was reachable only through the untyped `.call(…)` — not the path
58
+ a creator is steered to. Each signature now prints
59
+ `opts?: CallConnectorOptions`, the three overloads of a `'when-requested'` raw
60
+ response included. An operation with no declared arguments prints
61
+ `args?: undefined` rather than nothing: the runtime proxy is `(args?, opts?)`
62
+ for every operation, so a signature that let `opts` come first would hand the
63
+ creator's options to the provider as arguments. The field itself needs
64
+ `@stackbone/sdk` 0.4.1.
65
+
66
+ ### Fixed
67
+
68
+ - **A guarded PATCH whose body columns share names with query filters can now be
69
+ called.** Swagger's body argument name is preserved and its object sent
70
+ separately from the query filters, so a partial write no longer collides with
71
+ the filter that selects the row. Flat POST bodies are unchanged, the narrowing
72
+ guard applies to PATCH before the request leaves, and a fetched row schema no
73
+ longer makes a partial write mandatory by way of its server-generated columns.
74
+ Verified against local PostgREST for partial PATCH, stale-version no-op,
75
+ unsafe PATCH refusal and flat POST.
76
+
77
+ ### Changed
78
+
79
+ - The coding-agent labels in the setup flow come from `@stackbone/format`, so
80
+ the browser and the CLI render one list instead of two that drift.
81
+
10
82
  ## [0.4.0] - 2026-09-10
11
83
 
12
84
  ### Added