specrails-desktop 2.45.0 → 2.47.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/client/dist/assets/{ActivityFeedPage-D3SQklu5.js → ActivityFeedPage-DSCpSOGV.js} +1 -1
- package/client/dist/assets/{AgentBrowserCapture-DNGxE33d.js → AgentBrowserCapture-mc1c5pgS.js} +1 -1
- package/client/dist/assets/AgentModeAnalyticsPane--UkamBTm.js +2 -0
- package/client/dist/assets/AgentModeCodePane-DJCswsvU.js +2 -0
- package/client/dist/assets/AgentModeJobsPane-Dw3DNFkh.js +1 -0
- package/client/dist/assets/AgentsPage-ChElPUL9.js +87 -0
- package/client/dist/assets/{AnalyticsPage-BqV6mM2O.js → AnalyticsPage-BGtkFHBp.js} +1 -1
- package/client/dist/assets/CodePage-BBnw3VGn.js +3 -0
- package/client/dist/assets/{DesktopAnalyticsPage-D6WNax3K.js → DesktopAnalyticsPage-B85tNScc.js} +1 -1
- package/client/dist/assets/{DocsDialog-68jKUH9f.js → DocsDialog-D4cXrOMl.js} +1 -1
- package/client/dist/assets/{DocsPage-BoGJgRpm.js → DocsPage-BCAbC6qy.js} +1 -1
- package/client/dist/assets/{ExportDropdown-B2C_XLGp.js → ExportDropdown-BwuvqS2Y.js} +1 -1
- package/client/dist/assets/InteractiveJobComposer-Coq-Zhk0.js +19 -0
- package/client/dist/assets/JobDetailModal--Mjam0Nc.js +1 -0
- package/client/dist/assets/JobDetailPage-B6ShWSBh.js +1 -0
- package/client/dist/assets/JobsPage-DHU_ep_B.js +1 -0
- package/client/dist/assets/{LoopBuilderPage-D21GxFmL.js → LoopBuilderPage-Byvq8Oqx.js} +2 -2
- package/client/dist/assets/{LoopPreviewModal-Bo3fYFxN.js → LoopPreviewModal-BMC9Mgj1.js} +1 -1
- package/client/dist/assets/{LoopsPage-BcrBw1cg.js → LoopsPage-CFGl-Nw8.js} +1 -1
- package/client/dist/assets/{MinimizedChatsContext-Dsv2eHf_.js → MinimizedChatsContext-DHjHBYqa.js} +1 -1
- package/client/dist/assets/{PluginsPage-BbyTmSLx.js → PluginsPage-BHygRnW6.js} +2 -2
- package/client/dist/assets/{ProjectSettingsDialog-B3lEXLv7.js → ProjectSettingsDialog-nspqxH-M.js} +1 -1
- package/client/dist/assets/{RepositoryDeliveries-ok_Wo65C.js → RepositoryDeliveries-Dq9NJOWi.js} +1 -1
- package/client/dist/assets/{RepositoryScopeSelector-DU6QwNaS.js → RepositoryScopeSelector-C3jKG2z0.js} +1 -1
- package/client/dist/assets/{ReviewPacketPage-BBCeHtgd.js → ReviewPacketPage-C9mqhi65.js} +1 -1
- package/client/dist/assets/{TemplatePreviewModal-CfNmxS6O.js → TemplatePreviewModal-BmwoAjOr.js} +1 -1
- package/client/dist/assets/{TicketDetailModalContext-DW3eQ0I7.js → TicketDetailModalContext-lYmoONrd.js} +1 -1
- package/client/dist/assets/{Trans-BHPMWkOw.js → Trans-C0KyPo2O.js} +1 -1
- package/client/dist/assets/agentRuntime-62GWdc26.js +1 -0
- package/client/dist/assets/agentRuntime-BN1mKAuY.js +1 -0
- package/client/dist/assets/agentRuntime-BNBCzQLM.js +1 -0
- package/client/dist/assets/agentRuntime-BQE_K1GG.js +1 -0
- package/client/dist/assets/agentRuntime-CCU3HCtS.js +1 -0
- package/client/dist/assets/agentRuntime-DT72Bpdv.js +1 -0
- package/client/dist/assets/agentRuntime-ZfMPeeiP.js +1 -0
- package/client/dist/assets/agentRuntime-g3W8Ry4d.js +1 -0
- package/client/dist/assets/{agents-IUOgqT5t.js → agents-BIT1UdTy.js} +1 -1
- package/client/dist/assets/{agents-DaYcxAr1.js → agents-C7fKfvm8.js} +1 -1
- package/client/dist/assets/{agents-ms7TwG16.js → agents-CST-lpYX.js} +1 -1
- package/client/dist/assets/{agents-Bvyi3y6R.js → agents-Cm2JYrAa.js} +1 -1
- package/client/dist/assets/{agents-BHp0_FQt.js → agents-DsgGMGwU.js} +1 -1
- package/client/dist/assets/{agents-45GbINfh.js → agents-DyI4rbHa.js} +1 -1
- package/client/dist/assets/{agents-rzPnqoBR.js → agents-H6tVQUNP.js} +1 -1
- package/client/dist/assets/{agents-DMKFStHL.js → agents-_5mJMkAE.js} +1 -1
- package/client/dist/assets/format-duration-NJVPOPBG.js +1 -0
- package/client/dist/assets/{formatDistanceToNow-Bq8iptrG.js → formatDistanceToNow-D44phX1J.js} +1 -1
- package/client/dist/assets/{getTimezoneOffsetInMilliseconds-BVFky3l_.js → getTimezoneOffsetInMilliseconds-EAh9LFSx.js} +1 -1
- package/client/dist/assets/index-Cfh9aaep.css +2 -0
- package/client/dist/assets/index-DgMBighL.js +76 -0
- package/client/dist/assets/{jira-api-zrRdZFBB.js → jira-api-BQR6G0YY.js} +1 -1
- package/client/dist/assets/narration-B1uGfofH.js +1 -0
- package/client/dist/assets/narration-BKcL4Srl.js +1 -0
- package/client/dist/assets/narration-BtjKyHVM.js +1 -0
- package/client/dist/assets/narration-CqNvgRi9.js +1 -0
- package/client/dist/assets/narration-DiPyj06T.js +1 -0
- package/client/dist/assets/narration-DrBAf8uv.js +1 -0
- package/client/dist/assets/narration-OyujFouL.js +1 -0
- package/client/dist/assets/narration-UWi_xIZ-.js +1 -0
- package/client/dist/assets/{project-repositories-CFRaB9UB.js → project-repositories-GRYdjlKB.js} +1 -1
- package/client/dist/assets/{provider-capabilities-B-wOHfLP.js → provider-capabilities-CXipwrXJ.js} +1 -1
- package/client/dist/assets/{settings-OOyDrZQo.js → settings-B3rWEwOx.js} +1 -1
- package/client/dist/assets/{settings-CNiERE-R.js → settings-BcVoiMyw.js} +1 -1
- package/client/dist/assets/settings-BlYvaQ7w.js +1 -0
- package/client/dist/assets/{settings-DJ2jl3hJ.js → settings-CD5uEBiL.js} +1 -1
- package/client/dist/assets/{settings-a7NIODme.js → settings-CyhS0DLJ.js} +1 -1
- package/client/dist/assets/{settings-DVRVybR_.js → settings-DCMFUGDs.js} +1 -1
- package/client/dist/assets/{settings-CrtCs5-B.js → settings-DEgcA0jd.js} +1 -1
- package/client/dist/assets/{settings-ChOCVjX_.js → settings-DmbYKyMJ.js} +1 -1
- package/client/dist/assets/{spending-lTZ-bm_y.js → spending-CN9PHM65.js} +1 -1
- package/client/dist/assets/{useDesktop-Duv5ddAa.js → useDesktop-iius_s5d.js} +1 -1
- package/client/dist/assets/{useSharedWebSocket-5mj2SMKn.js → useSharedWebSocket-D7hkZ3Ka.js} +2 -2
- package/client/dist/index.html +20 -19
- package/docs/internals/programmatic-agent-runtime.md +19 -8
- package/docs/plans/implementation-efficiency-artifact.json +18 -0
- package/docs/plans/implementation-efficiency-evaluation.json +1817 -0
- package/docs/plans/implementation-efficiency-evaluation.md +41 -0
- package/docs/plans/implementation-efficiency-progress.md +48 -0
- package/docs/plans/implementation-efficiency-release.md +41 -0
- package/docs/plans/implementation-efficiency.md +124 -0
- package/package.json +1 -1
- package/server/dist/agent-mcp-config.js +5 -0
- package/server/dist/agent-operator-prompt.js +2 -2
- package/server/dist/agent-runtime-bridge.js +69 -17
- package/server/dist/agent-runtime-controls-router.js +50 -0
- package/server/dist/agent-runtime-controls.js +123 -12
- package/server/dist/agent-runtime-effective-config.js +32 -0
- package/server/dist/agent-runtime-events.js +46 -0
- package/server/dist/agent-runtime-history.js +47 -0
- package/server/dist/agent-runtime-loader.js +90 -5
- package/server/dist/agent-runtime-metrics.js +122 -0
- package/server/dist/agent-runtime-package.js +205 -0
- package/server/dist/agent-runtime-repositories.js +37 -0
- package/server/dist/agent-runtime-settings-router.js +29 -6
- package/server/dist/agent-runtime-settings.js +151 -21
- package/server/dist/agent-runtime-settlement.js +133 -0
- package/server/dist/contract-refine-runner.js +7 -7
- package/server/dist/core-completion.js +8 -5
- package/server/dist/desktop-router.js +26 -0
- package/server/dist/job-listing.js +7 -3
- package/server/dist/loop-command-catalog.js +2 -2
- package/server/dist/loop-executors.js +6 -4
- package/server/dist/loop-run-manager.js +12 -4
- package/server/dist/mcp/tools/rails.js +1 -0
- package/server/dist/mcp/tools/specs.js +7 -4
- package/server/dist/multi-repo-execution.js +1 -0
- package/server/dist/project-router-jobs.js +8 -2
- package/server/dist/project-router-tickets.js +4 -4
- package/server/dist/providers/runtime.js +6 -0
- package/server/dist/rail-isolated-launch.js +2 -1
- package/server/dist/rails-router.js +29 -1
- package/server/dist/runtime-role-prompts-router.js +25 -0
- package/server/dist/schemas/agent-runtime.schema.json +25 -3
- package/server/dist/schemas/fixtures/runtime-efficiency-summary.v1.json +790 -0
- package/server/dist/worktree-overlay.js +32 -1
- package/client/dist/assets/AgentModeAnalyticsPane-BUvZNoj0.js +0 -2
- package/client/dist/assets/AgentModeCodePane-YW717UvJ.js +0 -2
- package/client/dist/assets/AgentModeJobsPane-Cxg_eNmd.js +0 -1
- package/client/dist/assets/AgentsPage-B_DCByok.js +0 -87
- package/client/dist/assets/CodePage-PyZKCj1B.js +0 -3
- package/client/dist/assets/InteractiveJobComposer-l8q-r5Yy.js +0 -19
- package/client/dist/assets/JobDetailModal-C-X2GI9j.js +0 -1
- package/client/dist/assets/JobDetailPage-C6Jdm7S9.js +0 -1
- package/client/dist/assets/JobsPage-DycM6Vgp.js +0 -1
- package/client/dist/assets/agentRuntime-14faDjWM.js +0 -1
- package/client/dist/assets/agentRuntime-BIokojkJ.js +0 -1
- package/client/dist/assets/agentRuntime-Bu4xEcRw.js +0 -1
- package/client/dist/assets/agentRuntime-Cz0ASixB.js +0 -1
- package/client/dist/assets/agentRuntime-DESdGXLV.js +0 -1
- package/client/dist/assets/agentRuntime-DhX5Xy5S.js +0 -1
- package/client/dist/assets/agentRuntime-Dpbh_gLp.js +0 -1
- package/client/dist/assets/agentRuntime-jS2lplFm.js +0 -1
- package/client/dist/assets/index-CBLYwPw6.css +0 -2
- package/client/dist/assets/index-DOKftX7y.js +0 -76
- package/client/dist/assets/narration-BA8Yw5ZL.js +0 -1
- package/client/dist/assets/narration-BuMFUS7Q.js +0 -1
- package/client/dist/assets/narration-Bv_iQQG5.js +0 -1
- package/client/dist/assets/narration-C6Ost9nL.js +0 -1
- package/client/dist/assets/narration-CIbjo2pA.js +0 -1
- package/client/dist/assets/narration-CNJ2-2-a.js +0 -1
- package/client/dist/assets/narration-OzsPJCXM.js +0 -1
- package/client/dist/assets/narration-zCdgiuSU.js +0 -1
- package/client/dist/assets/settings-DzXZCb1h.js +0 -1
package/client/dist/index.html
CHANGED
|
@@ -204,7 +204,7 @@
|
|
|
204
204
|
.specrails-splash__mark .pill { opacity: 1; }
|
|
205
205
|
}
|
|
206
206
|
</style>
|
|
207
|
-
<script type="module" crossorigin src="/assets/index-
|
|
207
|
+
<script type="module" crossorigin src="/assets/index-DgMBighL.js"></script>
|
|
208
208
|
<link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-CNC7AqOf.js">
|
|
209
209
|
<link rel="modulepreload" crossorigin href="/assets/jsx-runtime-zu2_FqZY.js">
|
|
210
210
|
<link rel="modulepreload" crossorigin href="/assets/react-dom-DiWzBDP9.js">
|
|
@@ -213,8 +213,8 @@
|
|
|
213
213
|
<link rel="modulepreload" crossorigin href="/assets/activity-DiyjsgQV.js">
|
|
214
214
|
<link rel="modulepreload" crossorigin href="/assets/addspec-D2YIQ0GU.js">
|
|
215
215
|
<link rel="modulepreload" crossorigin href="/assets/agent-Bh9K7iEt.js">
|
|
216
|
-
<link rel="modulepreload" crossorigin href="/assets/agentRuntime-
|
|
217
|
-
<link rel="modulepreload" crossorigin href="/assets/agents-
|
|
216
|
+
<link rel="modulepreload" crossorigin href="/assets/agentRuntime-BNBCzQLM.js">
|
|
217
|
+
<link rel="modulepreload" crossorigin href="/assets/agents-CST-lpYX.js">
|
|
218
218
|
<link rel="modulepreload" crossorigin href="/assets/agentstudio-CN2pokQu.js">
|
|
219
219
|
<link rel="modulepreload" crossorigin href="/assets/aiedit-iIjz2_Qk.js">
|
|
220
220
|
<link rel="modulepreload" crossorigin href="/assets/analytics-BMzCvrCU.js">
|
|
@@ -232,23 +232,23 @@
|
|
|
232
232
|
<link rel="modulepreload" crossorigin href="/assets/jobs-DMPU64ms.js">
|
|
233
233
|
<link rel="modulepreload" crossorigin href="/assets/loops-B7YpGizO.js">
|
|
234
234
|
<link rel="modulepreload" crossorigin href="/assets/mcp-CUAN6ORK.js">
|
|
235
|
-
<link rel="modulepreload" crossorigin href="/assets/narration-
|
|
235
|
+
<link rel="modulepreload" crossorigin href="/assets/narration-OyujFouL.js">
|
|
236
236
|
<link rel="modulepreload" crossorigin href="/assets/nav-Ch-zHBG5.js">
|
|
237
237
|
<link rel="modulepreload" crossorigin href="/assets/packet-Cx-zRuWn.js">
|
|
238
|
-
<link rel="modulepreload" crossorigin href="/assets/settings-
|
|
238
|
+
<link rel="modulepreload" crossorigin href="/assets/settings-BlYvaQ7w.js">
|
|
239
239
|
<link rel="modulepreload" crossorigin href="/assets/setup-Ba11l2JA.js">
|
|
240
240
|
<link rel="modulepreload" crossorigin href="/assets/specs-DII0C8gw.js">
|
|
241
241
|
<link rel="modulepreload" crossorigin href="/assets/terminal-BAzpHtpY.js">
|
|
242
242
|
<link rel="modulepreload" crossorigin href="/assets/tickets-W6pBmbrX.js">
|
|
243
243
|
<link rel="modulepreload" crossorigin href="/assets/createLucideIcon-Bjbbp_KS.js">
|
|
244
|
-
<link rel="modulepreload" crossorigin href="/assets/useSharedWebSocket-
|
|
245
|
-
<link rel="modulepreload" crossorigin href="/assets/Trans-
|
|
246
|
-
<link rel="modulepreload" crossorigin href="/assets/useDesktop-
|
|
244
|
+
<link rel="modulepreload" crossorigin href="/assets/useSharedWebSocket-D7hkZ3Ka.js">
|
|
245
|
+
<link rel="modulepreload" crossorigin href="/assets/Trans-C0KyPo2O.js">
|
|
246
|
+
<link rel="modulepreload" crossorigin href="/assets/useDesktop-iius_s5d.js">
|
|
247
247
|
<link rel="modulepreload" crossorigin href="/assets/save-B6wGWwBR.js">
|
|
248
|
-
<link rel="modulepreload" crossorigin href="/assets/spending-
|
|
248
|
+
<link rel="modulepreload" crossorigin href="/assets/spending-CN9PHM65.js">
|
|
249
249
|
<link rel="modulepreload" crossorigin href="/assets/sparkles-DrY8hb0X.js">
|
|
250
250
|
<link rel="modulepreload" crossorigin href="/assets/x-CBMI9ejn.js">
|
|
251
|
-
<link rel="modulepreload" crossorigin href="/assets/MinimizedChatsContext-
|
|
251
|
+
<link rel="modulepreload" crossorigin href="/assets/MinimizedChatsContext-DHjHBYqa.js">
|
|
252
252
|
<link rel="modulepreload" crossorigin href="/assets/file-text-BcLCfcWZ.js">
|
|
253
253
|
<link rel="modulepreload" crossorigin href="/assets/circle-x-CMYsN4ZH.js">
|
|
254
254
|
<link rel="modulepreload" crossorigin href="/assets/download-CFHyyHcw.js">
|
|
@@ -260,23 +260,24 @@
|
|
|
260
260
|
<link rel="modulepreload" crossorigin href="/assets/search-Cq_gE3Ik.js">
|
|
261
261
|
<link rel="modulepreload" crossorigin href="/assets/trash-2-BOU3WdZZ.js">
|
|
262
262
|
<link rel="modulepreload" crossorigin href="/assets/triangle-alert-H9T4jAmh.js">
|
|
263
|
-
<link rel="modulepreload" crossorigin href="/assets/jira-api-
|
|
263
|
+
<link rel="modulepreload" crossorigin href="/assets/jira-api-BQR6G0YY.js">
|
|
264
264
|
<link rel="modulepreload" crossorigin href="/assets/zap-CHo3aCD1.js">
|
|
265
265
|
<link rel="modulepreload" crossorigin href="/assets/clsx-CjueKrWZ.js">
|
|
266
266
|
<link rel="modulepreload" crossorigin href="/assets/utils-BC4DHlz2.js">
|
|
267
267
|
<link rel="modulepreload" crossorigin href="/assets/dialog-xXB2q5HJ.js">
|
|
268
268
|
<link rel="modulepreload" crossorigin href="/assets/lib-CGdyxIWg.js">
|
|
269
|
-
<link rel="modulepreload" crossorigin href="/assets/getTimezoneOffsetInMilliseconds-
|
|
270
|
-
<link rel="modulepreload" crossorigin href="/assets/formatDistanceToNow-
|
|
269
|
+
<link rel="modulepreload" crossorigin href="/assets/getTimezoneOffsetInMilliseconds-EAh9LFSx.js">
|
|
270
|
+
<link rel="modulepreload" crossorigin href="/assets/formatDistanceToNow-D44phX1J.js">
|
|
271
271
|
<link rel="modulepreload" crossorigin href="/assets/button-Ccc9Dc-D.js">
|
|
272
|
-
<link rel="modulepreload" crossorigin href="/assets/project-repositories-
|
|
273
|
-
<link rel="modulepreload" crossorigin href="/assets/RepositoryScopeSelector-
|
|
274
|
-
<link rel="modulepreload" crossorigin href="/assets/provider-capabilities-
|
|
275
|
-
<link rel="modulepreload" crossorigin href="/assets/TicketDetailModalContext-
|
|
272
|
+
<link rel="modulepreload" crossorigin href="/assets/project-repositories-GRYdjlKB.js">
|
|
273
|
+
<link rel="modulepreload" crossorigin href="/assets/RepositoryScopeSelector-C3jKG2z0.js">
|
|
274
|
+
<link rel="modulepreload" crossorigin href="/assets/provider-capabilities-CXipwrXJ.js">
|
|
275
|
+
<link rel="modulepreload" crossorigin href="/assets/TicketDetailModalContext-lYmoONrd.js">
|
|
276
276
|
<link rel="modulepreload" crossorigin href="/assets/core-B3mKBIh5.js">
|
|
277
|
-
<link rel="modulepreload" crossorigin href="/assets/RepositoryDeliveries-
|
|
277
|
+
<link rel="modulepreload" crossorigin href="/assets/RepositoryDeliveries-Dq9NJOWi.js">
|
|
278
|
+
<link rel="modulepreload" crossorigin href="/assets/format-duration-NJVPOPBG.js">
|
|
278
279
|
<link rel="modulepreload" crossorigin href="/assets/event-Bt7f3wXe.js">
|
|
279
|
-
<link rel="stylesheet" crossorigin href="/assets/index-
|
|
280
|
+
<link rel="stylesheet" crossorigin href="/assets/index-Cfh9aaep.css">
|
|
280
281
|
</head>
|
|
281
282
|
<body>
|
|
282
283
|
<div id="specrails-splash" aria-hidden="false" role="status" aria-label="Loading Specrails">
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Desktop can hand implementation to Core's **runtime API 1**. Core runs architect, developer, deterministic verification, reviewer and archive as separate LangGraph phases. Desktop keeps project/worktree selection, rail lifecycle, logs, accounting and delivery ownership.
|
|
4
4
|
|
|
5
|
-
This is
|
|
5
|
+
This is the only implementation engine in the current source tree. It applies to implementation rail steps and their Core completion check. Mission chat and unrelated AI features keep their existing transports. Provider-native implementation prompts and skills are not invoked inside the programmatic phases.
|
|
6
6
|
|
|
7
7
|
## Build the paired source
|
|
8
8
|
|
|
@@ -53,16 +53,16 @@ Desktop negotiates `runtime api` and sends configuration to `runtime validate --
|
|
|
53
53
|
|
|
54
54
|
`SPECRAILS_CORE_RUNTIME_PATH` selects this execution module. The existing `SPECRAILS_CORE_BIN` controls the installation/lifecycle resolver and is a different setting. Prefer a paired source bundle when testing the complete installation and execution flow.
|
|
55
55
|
|
|
56
|
-
##
|
|
56
|
+
## Configure a project
|
|
57
57
|
|
|
58
58
|
1. Open **Project settings → Agent runtime** (its own section in the project dialog).
|
|
59
|
-
2. Choose a provider per role. The model dropdown lists each CLI's catalog with the default marked; turns, attempts and timeout show their defaults in the fields. Claude, Codex, Gemini and Kimi remain available; open **
|
|
59
|
+
2. Choose a provider per role. The model dropdown lists each CLI's catalog with the default marked; turns, attempts and timeout show their defaults in the fields. Claude, Codex, Gemini and Kimi remain available; open **General settings → Specrails Agents → Provider connections** to add an OpenAI-compatible endpoint for a local or remote model (local endpoints do not require a key; API providers need an explicit model).
|
|
60
60
|
3. Verification commands are optional. A project that never saved runtime settings is prefilled with the checks Desktop detects offline (`package.json` test/type-check/lint scripts with the right package manager, Cargo, Go, pytest, Gradle, Maven, .NET, Make); **Detect project checks** re-runs that detection. Each row is a repository plus one command line (`npm run test -- --strict`; quotes group arguments). Leave the list empty and the architect proposes the project's own checks on each run; repositories with no automated check are still reviewed and recorded as unverified in Core's receipt.
|
|
61
61
|
4. **Review gate** and **Architect confidence** are optional. Review thresholds (overall score and the five aspects: type correctness, pattern adherence, test coverage, security, architectural alignment) can only *tighten* Core's own gate: the floors are 70 overall, 75 for security and 60 for every other aspect, and Desktop rejects lower values before saving (`Review threshold review.minScore must be at least 70 (Core's own review gate)`). Empty fields omit the key so Core's defaults apply. `architect.onLowConfidence` decides what happens when, after one autonomous investigation pass, the architect's design is still low in confidence: `ask` (default) pauses the run with the architect's question; `proceed` continues on stated assumptions.
|
|
62
|
-
5.
|
|
62
|
+
5. Save the project settings. Implementation always uses the agent runtime.
|
|
63
63
|
6. Start an implementation through the normal rail flow.
|
|
64
64
|
|
|
65
|
-
Settings are saved at `<project execution .specrails directory>/agent-runtime.json`. Missing
|
|
65
|
+
Settings are saved at `<project execution .specrails directory>/agent-runtime.json`. Missing configuration uses the default agent runtime. The retired enabled flag cannot select another engine. Malformed configuration blocks admission; it is not ignored. Saving verifies that Core exposes the expected API. Connections are stored globally in `~/.specrails/runtime-providers.json`; project files retain role references, models, limits and verification. Existing embedded connections migrate once, with stable disambiguated IDs on endpoint conflicts. New runs freeze the resolved configuration, while saved runs retain their original snapshot.
|
|
66
66
|
|
|
67
67
|
Core owns role instructions and permissions. The developer role edits and runs commands inside its CLI sandbox (the same autonomy as the legacy Implement step); architect and reviewer are read-only. A legacy rail profile/model selection does not override the runtime's per-role provider configuration. The JSON schema is [server/schemas/agent-runtime.schema.json](../../server/schemas/agent-runtime.schema.json), mirrored from Core. For a complete configuration, custom executor examples, Kimi capabilities and API tooling details, see [Core's runtime guide](https://github.com/fjpulidop/specrails-core/blob/main/docs/agent-runtime.md) in the paired revision.
|
|
68
68
|
|
|
@@ -77,6 +77,7 @@ The rail creates a frozen Core execution context for its original repository/wor
|
|
|
77
77
|
| File | Purpose |
|
|
78
78
|
| --- | --- |
|
|
79
79
|
| `desktop-context.json` | Selected repositories, original worktrees, frozen scope and ownership |
|
|
80
|
+
| `desktop-runtime-config.json` | Admission snapshot of project settings with verification commands restricted to the selected repositories; project settings remain unchanged |
|
|
80
81
|
| `desktop-runtime-host.json` | Allowlisted host settings needed to reconstruct execution |
|
|
81
82
|
| `agent-runtime-request.json` | Core's frozen configuration and change name |
|
|
82
83
|
| `state.json`, `receipts/` | Core gates and verification receipts |
|
|
@@ -84,11 +85,13 @@ The rail creates a frozen Core execution context for its original repository/wor
|
|
|
84
85
|
|
|
85
86
|
A run pauses (Core exit code 2) either on an **approval** (`pendingApproval`, for example before archive) or on a **question** (`pendingQuestion: { stepId, requestedAt, question }`) when the architect is configured to ask on low confidence. A pending question can only be resumed together with an answer: the runs panel shows the question with a textarea and an **Answer and resume** action, which posts `{ "answer": "…" }` (nonempty, at most 20,000 characters). Resuming without an answer while a question is open is rejected with `400 answer_required`. Once Core records `answeredAt`, the question is history and ordinary resume applies again. The bridge reports a paused run's reason in the job log: awaiting approval, or the pending question text.
|
|
86
87
|
|
|
87
|
-
**
|
|
88
|
+
**Implementation cards and job detail** expose resume, archive approval, question answering, interrupted-step recovery and continuation cancellation actions next to the work. Cards query their latest job by original rail identity; job detail queries its exact run. Legacy jobs render no runtime panel. **Jobs → Saved executions** retains the cross-run history. Project settings contain runtime configuration only. A continuation resumes from the phase shown, in the original worktree, and writes its progress into that job's log (a `[runtime] continuation started from phase …` banner, tool activity, phase notes and the final outcome). Resuming a run that stopped at the developer attempt limit grants a fresh attempt budget. Wait for the original rail execution to settle before resuming. Active rail jobs are stopped through their job controls; the continuation's Cancel action owns only continuations started from this panel.
|
|
88
89
|
|
|
89
90
|
Resume retains valid completed phases and rechecks Core evidence. Changed code or environment requires fresh verification/review. An ambiguous interrupted write requires an explicit recovery action after inspecting partial changes. A changed frozen config/identity requires a new run. Missing original worktrees or mismatched execution manifests block recovery; the controller never invents a replacement worktree.
|
|
90
91
|
|
|
91
|
-
|
|
92
|
+
Saved executions link directly to the original job log. Continuations broadcast readable logs and raw runtime events to that job, publish `runtime.continuation` lifecycle updates, and reserve the original implementation card until settlement. Jobs list/detail project the continuation as running while it is active (including the running filter); the failed attempt remains in history. Job and card cancellation route to the continuation process. After a successful continuation, Desktop revalidates Core receipts, commits the exact preserved worktrees locally, and reconciles the job and repository delivery cards to completed / ready for review. A new completion event supersedes the earlier failed summary while retaining the failed attempt and its usage. The activity reservation then clears.
|
|
93
|
+
|
|
94
|
+
**A continuation prepares local delivery for review after Core succeeds; it does not create a PR or merge code.** Use the normal delivery card actions to review and publish. Older successful continuations expose **Prepare delivery**, which performs the same receipt validation and local settlement without invoking a model. This also applies when approval is granted after the original rail has settled. Core archive success is not a claim that a PR was created. The initial uninterrupted successful rail retains its normal host delivery flow.
|
|
92
95
|
|
|
93
96
|
Disabling project runtime settings affects future admission. Existing runs retain their frozen runtime request and remain available for explicit continuation; they do not switch back to a platform prompt.
|
|
94
97
|
|
|
@@ -122,8 +125,16 @@ A production release must:
|
|
|
122
125
|
|
|
123
126
|
Do not relabel an old 5.1.1 bundle or copy only `dist/agent-runtime`: LangGraph and the complete runtime dependency closure are required. Source assembly writes `source-bundle.json` with the Core version, runtime API and lock hash for traceability; it does not publish Core or update the production registry lock.
|
|
124
127
|
|
|
125
|
-
|
|
128
|
+
Verify role outputs, delivery ownership and saved-run recovery before releasing the paired app. Implementation has no legacy fallback; profile v1 remains only for other workflows. Core's programmatic archive writes reviewed **complete specification replacements**; it does not merge partial OpenSpec delta snippets. Preserve unchanged requirements in the architect's output and inspect that behavior during the pilot.
|
|
126
129
|
|
|
127
130
|
See [Core runtime selection and recovery](core-runtime-updates.md) for the separate framework-update lifecycle and [the original evaluation](agent-runtime-framework-evaluation.md) for the architecture rationale.
|
|
128
131
|
|
|
129
132
|
The [implementation verification record](programmatic-agent-runtime-validation.md) lists the completed checks and outstanding release validation.
|
|
133
|
+
|
|
134
|
+
## Efficiency metrics
|
|
135
|
+
|
|
136
|
+
Core's additive runtime metrics v1 are passed from compact status to each saved run's optional `metrics` field. The contextual run panels and Jobs history render a collapsed **Usage and time** panel with reported cost, active execution/agent time, calls and token/cache totals, plus per-phase attempts, duration, provider calls and cost. All eight locales include the panel labels.
|
|
137
|
+
|
|
138
|
+
Older Core versions continue to work without the panel. The server validates numeric fields and known phase IDs, drops unsupported/malformed metrics and projects only the supported fields; it never forwards arbitrary transcripts from the metrics object. Missing billing is displayed as unavailable rather than zero. Cache tokens are already included in input tokens, and agent duration already includes native tool work. The panel does not estimate savings or measure implementation quality.
|
|
139
|
+
|
|
140
|
+
The paired `agent-runtime-efficiency` OpenSpec change in specrails-core documents verification ownership, efficient API tools and the measurement contract. Core exposes the same report through `runtime status` / `runtime-result`, so a fixed set of real tasks can be compared without a Desktop database migration.
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schemaVersion": 1,
|
|
3
|
+
"name": "specrails-core",
|
|
4
|
+
"version": "5.3.0",
|
|
5
|
+
"sha": "2427141bf61ea38785b3741cd1f66270743a476b",
|
|
6
|
+
"filename": "specrails-core-5.3.0.tgz",
|
|
7
|
+
"integrity": "sha512-pi0GRKWv7QbygU16i1AJVWme/IJ3vVrpSh80huGLE1yusHxGvLDN+ugy2REkdBlxreICbgXzR6lkaAEGQUMPWA==",
|
|
8
|
+
"developmentOnly": true,
|
|
9
|
+
"sourceCommitDescribes": "Uncommitted development tree based on this commit; use package integrity for artifact identity.",
|
|
10
|
+
"runtimeIdentity": {
|
|
11
|
+
"apiVersion": 1,
|
|
12
|
+
"packageVersion": "5.3.0",
|
|
13
|
+
"workflowVersion": "5",
|
|
14
|
+
"instructionsVersion": "7",
|
|
15
|
+
"packageIntegrity": "sha256:6a3005a4e0eb16a42da74b7fa39a5a7d694b1782ee73a2d64bc0872fb51bc340"
|
|
16
|
+
},
|
|
17
|
+
"artifactPath": "/tmp/specrails-core-efficiency-ready/specrails-core-5.3.0.tgz"
|
|
18
|
+
}
|