@staix/agent-hub 0.12.7 → 0.12.8
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 +9 -0
- package/LICENSES/Apache-2.0.txt +204 -0
- package/THIRD_PARTY_NOTICES.md +19 -0
- package/docs/events.md +32 -0
- package/docs/operations.md +26 -4
- package/docs/specs/2026-09-19-agent-hub-design.md +10 -0
- package/docs/specs/2026-10-04-switchyard-source-port-design.md +309 -0
- package/package.json +4 -2
- package/plugins/agent-hub/.claude-plugin/plugin.json +1 -1
- package/plugins/agent-hub/server.js +4 -2
- package/src/adapters/codex-appserver.ts +2 -2
- package/src/adapters/local-worker.ts +138 -26
- package/src/adapters/pi.ts +8 -0
- package/src/hub/daemon.ts +55 -14
- package/src/hub/events.ts +5 -0
- package/src/hub/inference.ts +20 -0
- package/src/hub/progress.ts +251 -0
- package/src/hub/routing.ts +4 -0
- package/src/local/tools.ts +9 -0
- package/src/models/relay.ts +10 -1
- package/src/models/route/advisor.ts +102 -0
- package/src/models/route/config.ts +41 -0
- package/src/models/route/escalation.ts +82 -0
- package/src/models/route/judge.ts +23 -0
- package/src/models/route/labels.ts +167 -0
- package/src/models/route/normalize.ts +103 -0
- package/src/models/route/plan-execute.ts +52 -0
- package/src/models/route/prompts.ts +8 -0
- package/src/models/route/relay-selector.ts +102 -0
- package/src/models/route/runtime.ts +156 -0
- package/src/models/route/signals.ts +234 -0
- package/src/models/route/stage.ts +93 -0
- package/src/models/route/state.ts +54 -0
- package/src/models/route/text.ts +61 -0
- package/src/omniroute/client.ts +8 -1
- package/templates/routing.toml +28 -0
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Issue and pull request numbers in the entries for 0.7.7 and earlier refer to the previous repository, archived on 2026-09-30 when this repository's history was rewritten; the one exception is the open smoke-check issue, formerly #12, which moved here as #1. Numbers in newer entries refer to this repository.
|
|
4
4
|
|
|
5
|
+
## 0.12.8
|
|
6
|
+
|
|
7
|
+
- Port Switchyard's Stage signals/scoring, Plan/Execute, advisor gate and escalation policies in-process with source-based golden tests and Apache-2.0 attribution (#124, #125).
|
|
8
|
+
- Add opt-in `hub/` local-worker routes with fixed-model fallback, bounded fail-open judges, completed-turn REDO history and campus-only PII transport. Each local routing decision has an id and exactly one joined outcome label, including failure, cancellation and later escalation; labels contain identifiers and closed values, never text (#126).
|
|
9
|
+
- Add Pi's `hub/auto` alias with session-scoped Stage hold, MLX input/output admission and DGX fallback. Preserve explicit backend pins and the class-specific DGX fast/coding defaults (#127).
|
|
10
|
+
- Record aggregate peer progress and suggest reassignment only from repeated failures across known native turns or spinning. Exclude PII, group native attempts, ignore replayed Pi receipts and stop judging after latch; retain observation series and coverage limits in benchmark ledgers (#128).
|
|
11
|
+
- Preserve retrieval semantics for shell reads, attached output redirections and Unicode fingerprints. Budget escalation anchors to retain the newest trajectory; this intentional upstream correction is documented in the source-port spec.
|
|
12
|
+
- The control protocol remains unchanged. Optional typed judges, Pi advisor stream replay, Rust differential verification and sidecar retirement are deferred.
|
|
13
|
+
|
|
5
14
|
## 0.12.7
|
|
6
15
|
|
|
7
16
|
- CooperBench runner and recovery (#120): from the moment the runner may change anything, before it locks its first input, `restoration.json` says `restored: false` and names the runner, until the runner writes its outcome. A runner killed after that point sends the recovery in, and the recovery waits while the runner it names still runs. A run directory whose earlier run is not restored is refused first, before the runner reads its inputs or any mode (the refusal names `restore.ts`), and checked again right before the runner locks anything, so a runner does not record locked modes as the originals; two runners started on one directory at the same moment are not guarded against. A directory whose earlier invocation ended restored, with no records, can still be used. `restore.ts` trusts `restored: true` only when the restoration ledger agrees (a ledger from before 0.12.5, with no runner identity, still has its locks restored; when `restoration.json` says `restored: true` or names a runner, its trust entry is kept as it was then), so a stale file over a re-run that died no longer reports a run restored while its inputs stay locked; it checks the runners again right before it restores anything. With no ledger, nothing was locked and nothing is restored.
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
Apache License
|
|
5
|
+
Version 2.0, January 2004
|
|
6
|
+
http://www.apache.org/licenses/
|
|
7
|
+
|
|
8
|
+
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
9
|
+
|
|
10
|
+
1. Definitions.
|
|
11
|
+
|
|
12
|
+
"License" shall mean the terms and conditions for use, reproduction,
|
|
13
|
+
and distribution as defined by Sections 1 through 9 of this document.
|
|
14
|
+
|
|
15
|
+
"Licensor" shall mean the copyright owner or entity authorized by
|
|
16
|
+
the copyright owner that is granting the License.
|
|
17
|
+
|
|
18
|
+
"Legal Entity" shall mean the union of the acting entity and all
|
|
19
|
+
other entities that control, are controlled by, or are under common
|
|
20
|
+
control with that entity. For the purposes of this definition,
|
|
21
|
+
"control" means (i) the power, direct or indirect, to cause the
|
|
22
|
+
direction or management of such entity, whether by contract or
|
|
23
|
+
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
|
24
|
+
outstanding shares, or (iii) beneficial ownership of such entity.
|
|
25
|
+
|
|
26
|
+
"You" (or "Your") shall mean an individual or Legal Entity
|
|
27
|
+
exercising permissions granted by this License.
|
|
28
|
+
|
|
29
|
+
"Source" form shall mean the preferred form for making modifications,
|
|
30
|
+
including but not limited to software source code, documentation
|
|
31
|
+
source, and configuration files.
|
|
32
|
+
|
|
33
|
+
"Object" form shall mean any form resulting from mechanical
|
|
34
|
+
transformation or translation of a Source form, including but
|
|
35
|
+
not limited to compiled object code, generated documentation,
|
|
36
|
+
and conversions to other media types.
|
|
37
|
+
|
|
38
|
+
"Work" shall mean the work of authorship, whether in Source or
|
|
39
|
+
Object form, made available under the License, as indicated by a
|
|
40
|
+
copyright notice that is included in or attached to the work
|
|
41
|
+
(an example is provided in the Appendix below).
|
|
42
|
+
|
|
43
|
+
"Derivative Works" shall mean any work, whether in Source or Object
|
|
44
|
+
form, that is based on (or derived from) the Work and for which the
|
|
45
|
+
editorial revisions, annotations, elaborations, or other modifications
|
|
46
|
+
represent, as a whole, an original work of authorship. For the purposes
|
|
47
|
+
of this License, Derivative Works shall not include works that remain
|
|
48
|
+
separable from, or merely link (or bind by name) to the interfaces of,
|
|
49
|
+
the Work and Derivative Works thereof.
|
|
50
|
+
|
|
51
|
+
"Contribution" shall mean any work of authorship, including
|
|
52
|
+
the original version of the Work and any modifications or additions
|
|
53
|
+
to that Work or Derivative Works thereof, that is intentionally
|
|
54
|
+
submitted to Licensor for inclusion in the Work by the copyright owner
|
|
55
|
+
or by an individual or Legal Entity authorized to submit on behalf of
|
|
56
|
+
the copyright owner. For the purposes of this definition, "submitted"
|
|
57
|
+
means any form of electronic, verbal, or written communication sent
|
|
58
|
+
to the Licensor or its representatives, including but not limited to
|
|
59
|
+
communication on electronic mailing lists, source code control systems,
|
|
60
|
+
and issue tracking systems that are managed by, or on behalf of, the
|
|
61
|
+
Licensor for the purpose of discussing and improving the Work, but
|
|
62
|
+
excluding communication that is conspicuously marked or otherwise
|
|
63
|
+
designated in writing by the copyright owner as "Not a Contribution."
|
|
64
|
+
|
|
65
|
+
"Contributor" shall mean Licensor and any individual or Legal Entity
|
|
66
|
+
on behalf of whom a Contribution has been received by Licensor and
|
|
67
|
+
subsequently incorporated within the Work.
|
|
68
|
+
|
|
69
|
+
2. Grant of Copyright License. Subject to the terms and conditions of
|
|
70
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
71
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
72
|
+
copyright license to reproduce, prepare Derivative Works of,
|
|
73
|
+
publicly display, publicly perform, sublicense, and distribute the
|
|
74
|
+
Work and such Derivative Works in Source or Object form.
|
|
75
|
+
|
|
76
|
+
3. Grant of Patent License. Subject to the terms and conditions of
|
|
77
|
+
this License, each Contributor hereby grants to You a perpetual,
|
|
78
|
+
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
|
79
|
+
(except as stated in this section) patent license to make, have made,
|
|
80
|
+
use, offer to sell, sell, import, and otherwise transfer the Work,
|
|
81
|
+
where such license applies only to those patent claims licensable
|
|
82
|
+
by such Contributor that are necessarily infringed by their
|
|
83
|
+
Contribution(s) alone or by combination of their Contribution(s)
|
|
84
|
+
with the Work to which such Contribution(s) was submitted. If You
|
|
85
|
+
institute patent litigation against any entity (including a
|
|
86
|
+
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
|
87
|
+
or a Contribution incorporated within the Work constitutes direct
|
|
88
|
+
or contributory patent infringement, then any patent licenses
|
|
89
|
+
granted to You under this License for that Work shall terminate
|
|
90
|
+
as of the date such litigation is filed.
|
|
91
|
+
|
|
92
|
+
4. Redistribution. You may reproduce and distribute copies of the
|
|
93
|
+
Work or Derivative Works thereof in any medium, with or without
|
|
94
|
+
modifications, and in Source or Object form, provided that You
|
|
95
|
+
meet the following conditions:
|
|
96
|
+
|
|
97
|
+
(a) You must give any other recipients of the Work or
|
|
98
|
+
Derivative Works a copy of this License; and
|
|
99
|
+
|
|
100
|
+
(b) You must cause any modified files to carry prominent notices
|
|
101
|
+
stating that You changed the files; and
|
|
102
|
+
|
|
103
|
+
(c) You must retain, in the Source form of any Derivative Works
|
|
104
|
+
that You distribute, all copyright, patent, trademark, and
|
|
105
|
+
attribution notices from the Source form of the Work,
|
|
106
|
+
excluding those notices that do not pertain to any part of
|
|
107
|
+
the Derivative Works; and
|
|
108
|
+
|
|
109
|
+
(d) If the Work includes a "NOTICE" text file as part of its
|
|
110
|
+
distribution, then any Derivative Works that You distribute must
|
|
111
|
+
include a readable copy of the attribution notices contained
|
|
112
|
+
within such NOTICE file, excluding those notices that do not
|
|
113
|
+
pertain to any part of the Derivative Works, in at least one
|
|
114
|
+
of the following places: within a NOTICE text file distributed
|
|
115
|
+
as part of the Derivative Works; within the Source form or
|
|
116
|
+
documentation, if provided along with the Derivative Works; or,
|
|
117
|
+
within a display generated by the Derivative Works, if and
|
|
118
|
+
wherever such third-party notices normally appear. The contents
|
|
119
|
+
of the NOTICE file are for informational purposes only and
|
|
120
|
+
do not modify the License. You may add Your own attribution
|
|
121
|
+
notices within Derivative Works that You distribute, alongside
|
|
122
|
+
or as an addendum to the NOTICE text from the Work, provided
|
|
123
|
+
that such additional attribution notices cannot be construed
|
|
124
|
+
as modifying the License.
|
|
125
|
+
|
|
126
|
+
You may add Your own copyright statement to Your modifications and
|
|
127
|
+
may provide additional or different license terms and conditions
|
|
128
|
+
for use, reproduction, or distribution of Your modifications, or
|
|
129
|
+
for any such Derivative Works as a whole, provided Your use,
|
|
130
|
+
reproduction, and distribution of the Work otherwise complies with
|
|
131
|
+
the conditions stated in this License.
|
|
132
|
+
|
|
133
|
+
5. Submission of Contributions. Unless You explicitly state otherwise,
|
|
134
|
+
any Contribution intentionally submitted for inclusion in the Work
|
|
135
|
+
by You to the Licensor shall be under the terms and conditions of
|
|
136
|
+
this License, without any additional terms or conditions.
|
|
137
|
+
Notwithstanding the above, nothing herein shall supersede or modify
|
|
138
|
+
the terms of any separate license agreement you may have executed
|
|
139
|
+
with Licensor regarding such Contributions.
|
|
140
|
+
|
|
141
|
+
6. Trademarks. This License does not grant permission to use the trade
|
|
142
|
+
names, trademarks, service marks, or product names of the Licensor,
|
|
143
|
+
except as required for reasonable and customary use in describing the
|
|
144
|
+
origin of the Work and reproducing the content of the NOTICE file.
|
|
145
|
+
|
|
146
|
+
7. Disclaimer of Warranty. Unless required by applicable law or
|
|
147
|
+
agreed to in writing, Licensor provides the Work (and each
|
|
148
|
+
Contributor provides its Contributions) on an "AS IS" BASIS,
|
|
149
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
|
150
|
+
implied, including, without limitation, any warranties or conditions
|
|
151
|
+
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
|
152
|
+
PARTICULAR PURPOSE. You are solely responsible for determining the
|
|
153
|
+
appropriateness of using or redistributing the Work and assume any
|
|
154
|
+
risks associated with Your exercise of permissions under this License.
|
|
155
|
+
|
|
156
|
+
8. Limitation of Liability. In no event and under no legal theory,
|
|
157
|
+
whether in tort (including negligence), contract, or otherwise,
|
|
158
|
+
unless required by applicable law (such as deliberate and grossly
|
|
159
|
+
negligent acts) or agreed to in writing, shall any Contributor be
|
|
160
|
+
liable to You for damages, including any direct, indirect, special,
|
|
161
|
+
incidental, or consequential damages of any character arising as a
|
|
162
|
+
result of this License or out of the use or inability to use the
|
|
163
|
+
Work (including but not limited to damages for loss of goodwill,
|
|
164
|
+
work stoppage, computer failure or malfunction, or any and all
|
|
165
|
+
other commercial damages or losses), even if such Contributor
|
|
166
|
+
has been advised of the possibility of such damages.
|
|
167
|
+
|
|
168
|
+
9. Accepting Warranty or Additional Liability. While redistributing
|
|
169
|
+
the Work or Derivative Works thereof, You may choose to offer,
|
|
170
|
+
and charge a fee for, acceptance of support, warranty, indemnity,
|
|
171
|
+
or other liability obligations and/or rights consistent with this
|
|
172
|
+
License. However, in accepting such obligations, You may act only
|
|
173
|
+
on Your own behalf and on Your sole responsibility, not on behalf
|
|
174
|
+
of any other Contributor, and only if You agree to indemnify,
|
|
175
|
+
defend, and hold each Contributor harmless for any liability
|
|
176
|
+
incurred by, or claims asserted against, such Contributor by reason
|
|
177
|
+
of your accepting any such warranty or additional liability.
|
|
178
|
+
|
|
179
|
+
END OF TERMS AND CONDITIONS
|
|
180
|
+
|
|
181
|
+
APPENDIX: How to apply the Apache License to your work.
|
|
182
|
+
|
|
183
|
+
To apply the Apache License to your work, attach the following
|
|
184
|
+
boilerplate notice, with the fields enclosed by brackets "[]"
|
|
185
|
+
replaced with your own identifying information. (Don't include
|
|
186
|
+
the brackets!) The text should be enclosed in the appropriate
|
|
187
|
+
comment syntax for the file format. We also recommend that a
|
|
188
|
+
file or class name and description of purpose be included on the
|
|
189
|
+
same "printed page" as the copyright notice for easier
|
|
190
|
+
identification within third-party archives.
|
|
191
|
+
|
|
192
|
+
Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
193
|
+
|
|
194
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
|
195
|
+
you may not use this file except in compliance with the License.
|
|
196
|
+
You may obtain a copy of the License at
|
|
197
|
+
|
|
198
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
199
|
+
|
|
200
|
+
Unless required by applicable law or agreed to in writing, software
|
|
201
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
|
202
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
203
|
+
See the License for the specific language governing permissions and
|
|
204
|
+
limitations under the License.
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Third-party notices
|
|
2
|
+
|
|
3
|
+
## NVIDIA NeMo Switchyard
|
|
4
|
+
|
|
5
|
+
The TypeScript routing modules in `src/models/route/` contain modified ports from NVIDIA NeMo Switchyard, commit `c8848511a7e2e1d605070c7a68905bdc24c6481a`. These portions are licensed under Apache-2.0; see [the license](LICENSES/Apache-2.0.txt). The remainder of agent-hub retains its existing MIT license.
|
|
6
|
+
|
|
7
|
+
Switchyard
|
|
8
|
+
Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
|
9
|
+
|
|
10
|
+
This product is licensed under the Apache License, Version 2.0 (the "License").
|
|
11
|
+
You may obtain a copy of the License in the LICENSE file at the root of this
|
|
12
|
+
repository, or at:
|
|
13
|
+
|
|
14
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
|
15
|
+
|
|
16
|
+
Unless required by applicable law or agreed to in writing, software distributed
|
|
17
|
+
under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
|
|
18
|
+
CONDITIONS OF ANY KIND, either express or implied. See the License for the
|
|
19
|
+
specific language governing permissions and limitations under the License.
|
package/docs/events.md
CHANGED
|
@@ -18,6 +18,11 @@ marked `private: true`, and PII tasks `pii: true`.
|
|
|
18
18
|
| `quiet` | `id`, `from`, `peers`: an agent message held back from these members of a silent turn-free cohort; its other recipients got it (issue #107) |
|
|
19
19
|
| `fact` | `peer`, `id` (the offer), `files` (files whose diff it carried), `plans`, `unknown` (files whose change it showed with attribution unknown), `named` (files under a named directory it named without a diff, those counted as "N more" or held back by the PII filter included), `bytes` (the injected text), `via` (`hook` for Claude, `steer` for Codex, `done` with an integration request), `ms` (the hub's time to build it), `hookMs` (the hook process's own start-up and connect time), `accepted` (whether app-server took the steer), `unanswered` (app-server did not answer it within 10 s: it may have gone in), `rttMs` (an accepted steer: from sending it to app-server's answer), `probe` (a context check), `coverage` (it named files earlier changes are not covered for): one fact offer (issue #108) |
|
|
20
20
|
| `fact_ack` | `peer`, `id`, `via` (`hook` and `steer`: a readback found the offer in the native session; `done`: the next `hub_task_done`), `ms` (from the offer): an acknowledged offer, the only thing that moves a peer's view |
|
|
21
|
+
| `route` | `peer`, `route`, `tier`, `source` (`override`, `dimensions`, `hold`, `classifier`, `default`), `score`, `ms`. Local decisions also carry `decision`, `turn`, optional numeric `task`, `pii`, and decision-time `severity`, `spinning`, `exploring`, `production`; no prompt text |
|
|
22
|
+
| `route_outcome` | `peer`, `decision`, `turnId`, `turn` (`completed` or `failed`), optional `task`, `pii`, `latched`, optional `next` (`severity`, `tests`: `pass`/`fail`/`none`, `repeat`) and `advisor` (`approve`/`redo`/`failed`). Exactly once per local decision at turn settlement, including failure/cancellation |
|
|
23
|
+
| `advisor` | `peer`, `route`, `trigger`, `verdict` (`approve`, `redo`, `failed`), `discardedChars`: an advisor check result; no transcript or feedback text |
|
|
24
|
+
| `progress` | `peer`, `task` (task id), `severity`, `spinning`, `exploring`, `production`: normalized tool activity dimensions for an open task; coverage differs by peer and no commands or task text are recorded |
|
|
25
|
+
| `stuck` | `peer`, `task` (task id), `category` (`repetition`, `false_progress`, `drift`, `desperation`, `capability_gap`), `streak`, `latched`: an escalation verdict; it recommends considering reassignment and never reassigns automatically |
|
|
21
26
|
| `capability` | `peer`, `state` (`verified` or `lost`), `via`: a peer's context path for facts |
|
|
22
27
|
| `native_turn_end` | `peer`: Claude's Stop hook, the end of its turn (Codex's is its `turn_end`); quiescence evidence for an integration |
|
|
23
28
|
| `hook_stats` | `peer`, `n` (facts hook calls in the turn, its Stop included), `startupMs` and `maxStartupMs` (the hook processes' start-up and connect time, summed and the largest), `hubMs` (the hub's own time for them): at Claude's Stop (issue #108) |
|
|
@@ -47,3 +52,30 @@ Token usage by adapter:
|
|
|
47
52
|
|
|
48
53
|
The file is local and never uploaded. It grows without rotation; delete it to start
|
|
49
54
|
over (the hub recreates it).
|
|
55
|
+
|
|
56
|
+
## Offline route outcome joins
|
|
57
|
+
|
|
58
|
+
For local-worker decisions, join `route_outcome.decision` to `route.decision` (one-to-one).
|
|
59
|
+
The route row records the chosen tier and decision-time dimensions; `next` describes only
|
|
60
|
+
the tool results answering that response, not an aggregate over later unrelated calls.
|
|
61
|
+
A final no-tool response has no `next`. Advisor checks add their closed verdict.
|
|
62
|
+
`latched` includes escalation that occurred later in the same turn.
|
|
63
|
+
|
|
64
|
+
Join `route.turn` or `route_outcome.turnId` to `turn_start.turn` / `turn_end.turn`.
|
|
65
|
+
The outcome's `turn` field is the completion status, not the turn id. To add offline
|
|
66
|
+
review supervision, join `route.task` to `task.id` and inspect subsequent task events
|
|
67
|
+
whose `state` is `approved` or `changes_requested`. Keep their timestamps so a review
|
|
68
|
+
from a different task revision is not treated as immediate per-call evidence.
|
|
69
|
+
|
|
70
|
+
Exclude both decisions and outcomes with `pii: true` before exporting a training set.
|
|
71
|
+
Labels contain ids, numbers, booleans and closed values only; they never retain tool
|
|
72
|
+
output, task text, advisor feedback, or raw failure fingerprints. A failed telemetry
|
|
73
|
+
sink does not affect model selection, budget admission or delivery. Pi outcome labels
|
|
74
|
+
are deferred: its existing route events retain their original shape. No control WebSocket
|
|
75
|
+
message changed, so the protocol number is unchanged.
|
|
76
|
+
|
|
77
|
+
Progress coverage is asymmetric: Codex contributes completed command and file-change items, local and Pi contribute
|
|
78
|
+
per-model-step tool observations, and Claude contributes tool inputs from turn-free pre-hooks without tool results or
|
|
79
|
+
a native turn id. Missing peers or intervals therefore mean unobserved, not zero activity. Escalation uses only known
|
|
80
|
+
native turn ids; observations without one still contribute progress dimensions but cannot establish separate attempts
|
|
81
|
+
or the eight-turn spinning threshold.
|
package/docs/operations.md
CHANGED
|
@@ -647,21 +647,21 @@ Rows without a live process are stale registrations; forget them with
|
|
|
647
647
|
|
|
648
648
|
Upgrade running projects with the target release's own coordinator. It accepts
|
|
649
649
|
a running source on control protocol 9 (0.6.x), 10 (0.7.0 through 0.12.0),
|
|
650
|
-
11 (0.12.1 and 0.12.2), 12 (0.12.3) or 13 (0.12.4 through 0.12.
|
|
650
|
+
11 (0.12.1 and 0.12.2), 12 (0.12.3) or 13 (0.12.4 through 0.12.8) and only
|
|
651
651
|
a target on its own protocol, so the target's coordinator fits every supported
|
|
652
652
|
source and carries every recovery fix released up to it. Protocol 8 and older
|
|
653
653
|
(0.5.x and earlier) are refused as `manual-bootstrap-required`. Run from the
|
|
654
654
|
project directory, without replacing the global CLI first:
|
|
655
655
|
|
|
656
656
|
```bash
|
|
657
|
-
bunx --package @staix/agent-hub@0.12.
|
|
658
|
-
bunx --package @staix/agent-hub@0.12.
|
|
657
|
+
bunx --package @staix/agent-hub@0.12.8 ahub upgrade --to 0.12.8 --dry-run
|
|
658
|
+
bunx --package @staix/agent-hub@0.12.8 ahub upgrade --to 0.12.8 --yes
|
|
659
659
|
```
|
|
660
660
|
|
|
661
661
|
| Running now | Coordinator to use |
|
|
662
662
|
| --- | --- |
|
|
663
663
|
| 0.6.x (protocol 9) | the target's, through `bunx` as above |
|
|
664
|
-
| 0.7.0 through 0.12.0 (protocol 10), 0.12.1 and 0.12.2 (protocol 11), 0.12.3 (protocol 12), 0.12.4 through 0.12.
|
|
664
|
+
| 0.7.0 through 0.12.0 (protocol 10), 0.12.1 and 0.12.2 (protocol 11), 0.12.3 (protocol 12), 0.12.4 through 0.12.8 (protocol 13) | the target's, through `bunx` as above |
|
|
665
665
|
| any supported source, with the installed CLI already at the target | `ahub upgrade` below, which is the same coordinator |
|
|
666
666
|
| 0.5.x or earlier (protocol 8 and older) | not supported: bootstrap by hand with the matching CLI |
|
|
667
667
|
|
|
@@ -874,3 +874,25 @@ headroom for templates/tool metadata and choose a larger dedicated recipe
|
|
|
874
874
|
only after measuring memory. This path does not change local-worker PII
|
|
875
875
|
routing or the DGX backend. Rollback requires explicitly restoring the old
|
|
876
876
|
config with `provider: "legacy"`; Ollama errors never launch Python.
|
|
877
|
+
|
|
878
|
+
### In-process model routes
|
|
879
|
+
|
|
880
|
+
`routing.toml` supports `[hub_routes."hub/<id>"]`, separate from sidecar `[routes]`.
|
|
881
|
+
Set `[local] route = "hub/stage"` or a task class's `route` to enable a hub route.
|
|
882
|
+
The shipped examples use OmniRoute `fast` and `coding`; `fixed_model` remains the fallback.
|
|
883
|
+
`--model` pins the worker and bypasses both routing engines. Sidecar `sy/` routes remain optional.
|
|
884
|
+
|
|
885
|
+
Route types: `stage` scores recent tools and holds capable recovery for two calls;
|
|
886
|
+
`plan_execute` plans on capable until the first mutation and then stays efficient;
|
|
887
|
+
`advisor` holds no-tool answers for APPROVE/REDO review; `escalation` starts efficient
|
|
888
|
+
and latches capable after two same-category judgements with new evidence.
|
|
889
|
+
Optional judges have an eight-second deadline and five-minute failure backoff.
|
|
890
|
+
REDO feedback is kept in the completed local turn history and counts toward `max_steps`.
|
|
891
|
+
PII calls require a positively confirmed campus gateway immediately before transport;
|
|
892
|
+
PII turns never enter shared history, memory capture, or progress observation.
|
|
893
|
+
The `route`, `advisor`, `progress` and `stuck` events contain identifiers and aggregates only.
|
|
894
|
+
|
|
895
|
+
Pi exposes `hub/auto` for stage routing when available. Fixed `dgx/coding`, `dgx/fast`
|
|
896
|
+
and `mlx/fast` aliases still pin the backend. Automatic MLX selection admits the complete
|
|
897
|
+
input, tool schemas and requested output within the configured context window.
|
|
898
|
+
Progress judgements suggest reassignment; they never change task ownership.
|
|
@@ -317,6 +317,16 @@ pii = "local_only" # hard: on-prem models only
|
|
|
317
317
|
budget_paused = "skip_peer"
|
|
318
318
|
```
|
|
319
319
|
|
|
320
|
+
L2 in-process routing (2026-10-04 source port): `[hub_routes."hub/<id>"]` selects
|
|
321
|
+
stage, plan_execute, advisor or escalation policies inside the hub. The host retains
|
|
322
|
+
transport, budget admission and complete-turn history ownership; algorithms make decisions
|
|
323
|
+
from normalized chat input and bounded session state. See
|
|
324
|
+
[the source-port contract](2026-10-04-switchyard-source-port-design.md) for upstream
|
|
325
|
+
provenance, intentional fail-open escalation and REDO history differences. These tables
|
|
326
|
+
are never copied to sidecar configuration. Existing `sy/` routes and fixed-model fallback
|
|
327
|
+
remain supported. The Pi `hub/auto` alias uses the same stage signals with session-scoped
|
|
328
|
+
hold and context admission; peer progress observations suggest but never execute reassignment.
|
|
329
|
+
|
|
320
330
|
L2, Switchyard sidecar (amended in M3, verified against `switchyard-server` 0.2.0 built with
|
|
321
331
|
`cargo install --locked switchyard-server`; there is no prebuilt macOS binary).
|
|
322
332
|
`routing.toml` carries `[targets.*]` and `[routes."sy/..."]` in Switchyard's own table
|