@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 +72 -0
- package/main.js +613 -162
- package/package.json +1 -1
- package/runtime-deps/@stackbone/workflow-world/index.js +48 -13
- package/stackbone-cli-0.5.0.tgz +0 -0
- package/stackbone-cli-0.4.0.tgz +0 -0
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
|