-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathspec.json
More file actions
196 lines (196 loc) · 7.34 KB
/
Copy pathspec.json
File metadata and controls
196 lines (196 loc) · 7.34 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
{
"packages/plugin/src/package.ts::PluginPackage": {
"specs": [
{
"cases": [],
"spec": "A Plugin Package does not declare scope or namespace; one enabled PluginInstance activates one Worker, while each Resource carries its own namespace."
}
]
},
"packages/plugin/src/reconcile-context.ts::AskInput": {
"specs": [
{
"cases": [],
"rules": [
"Keep allowOther as the type discriminant; allowOther:true must never expose a choice-only result type."
],
"spec": "Closed-choice asks preserve their choice value union, while any ask that permits free text returns string because the answer may be outside those choices."
}
]
},
"packages/plugin/src/reconcile-context.ts::PluginVerbs": {
"specs": [
{
"cases": [],
"links": [
"docs/plugin.md"
],
"rules": [
"Correlate verb continuation with the Core-issued execution identity, never with Resource identity or a caller-provided key; a crashed execution fails instead of replaying its call stack.",
"Require one total timeout for every verb; draft and harness deadlines cover their Interaction gate and the resulting HarnessInvocation through terminal Turn."
],
"spec": "Every Plugin verb first persists a Core-owned Interaction and suspends the same live Plugin execution until a terminal result; Baton never re-enqueues a Resource merely to deliver that result."
}
]
},
"packages/plugin/src/reconcile-context.ts::VerbResult": {
"specs": [
{
"cases": [],
"rules": [
"Treat deliberate negative answers as successful business values; reserve dismissed for Esc/close and failure for infrastructure or execution errors."
],
"spec": "Every Plugin verb has exactly four terminal outcomes: success with a business value, explicit user dismissal, deadline timeout, or execution failure."
}
]
},
"packages/plugin/src/resource.ts::ResourceClient": {
"specs": [
{
"cases": [],
"spec": "One PluginInstance may own Resources in global, Project, and Session namespaces simultaneously; omitted mutation namespace defaults to `v1`."
}
]
},
"packages/plugin/src/resource.ts::ResourceClient.get": {
"specs": [
{
"cases": [],
"rules": [
"After awaiting a Core verb, use a uid-pinned ref before applying the result so a stale continuation cannot write to a replacement Resource."
],
"spec": "A ResourceRef lookup returns the latest Resource only within the referenced namespace and, when uid is present, only for that exact incarnation; deletion or replacement returns undefined."
}
]
},
"src/commands/registry.ts::CommandRegistry.resolve": {
"specs": [
{
"cases": [],
"spec": "Alias 只改变 slash 调用形式:它先绑定 canonical Command 参数;无剩余命令参数且显式允许 trailing text 的 Commandable,才把后缀作为独立 Prompt 返回。"
}
]
},
"src/controller/index.ts::Controller.sendTurn": {
"specs": [
{
"cases": [],
"links": [
"../../docs/workflow.md"
],
"spec": "每次用户提交只创建一个 Input/messageId;steer rejection 降级 follow-up 时保持身份不变。"
}
]
},
"src/interaction/reconcile.ts::ReconcileInteractionStore": {
"specs": [
{
"cases": [],
"rules": [
"Keep the Event Ledger as the durable fact store, not a continuation store: recovery must fail orphaned Plugin Interactions instead of reviving an old call stack."
],
"spec": "A Plugin Interaction appends its first terminal fact to the Event Ledger before resolving any suspended continuation; later terminal attempts cannot replace it."
}
]
},
"src/plugin/queue.ts::ReconcileCapacityLease": {
"specs": [
{
"cases": [],
"rules": [
"A Plugin verb wait must suspend both the Controller-local and Manager-global leases so one human wait cannot block unrelated Resources at either limit."
],
"spec": "Suspending a reconcile releases its capacity slot for the full external wait and reacquires a slot before the original continuation resumes."
}
]
},
"src/plugin/runner/client.ts::PluginRunnerClient": {
"specs": [
{
"cases": [],
"rules": [
"Exclude a pending host-side Plugin verb from the generic Runner watchdog because the verb owns that wait's timeout; re-arm the watchdog after the host reply.",
"Restore the host async causal scope by executionId before handling a Runner verb callback."
]
}
]
},
"src/queue.ts::Queue.claimFirstForSteer": {
"specs": [
{
"cases": [],
"links": [
"../docs/workflow.md"
],
"spec": "只有仍位于队头的 HarnessInput 才能被 same-turn dispatch claim;claim 后不可被 composer recall。"
}
]
},
"src/queue.ts::Queue.moveUserById": {
"specs": [
{
"cases": [],
"links": [
"../docs/workflow.md"
],
"spec": "Queue reorder is recorded before the in-memory order changes, and user actions cannot cross HarnessInvocation work."
}
]
},
"src/queue.ts::Queue.promoteUserById": {
"specs": [
{
"cases": [],
"links": [
"../docs/workflow.md"
],
"spec": "Dispatch-now preserves Input identity and may only promote across user-manageable queued work."
}
]
},
"src/view/chat-tui/clipboard-paste.tsx::ClipboardPasteInput": {
"specs": [
{
"cases": [],
"links": [
"component://docs/view.md"
],
"rules": [
"OpenTUI ClipboardService is the sole OS/terminal clipboard implementation. Baton may interpret its representations as composer text or prompt attachments, but must not add platform commands, clipboard limits, or fallback policy of its own."
]
}
]
},
"src/view/chat-tui/protocol/index.ts::BatonChatProtocol.command": {
"specs": [
{
"cases": [],
"spec": "一次 Commandable 提交先完整执行并结算 canonical Command;只有成功后,允许的 trailing text 才作为下一条普通 Prompt 提交。"
}
]
},
"src/view/chat-tui/protocol/state.ts::projectChatState": {
"specs": [
{
"cases": [],
"rules": [
"Order status segments by volatility: stable model and configuration precede active phase or tool activity, while changing observations such as context usage stay at the end so frequent updates disturb only the right side.",
"Attribute the primary run status to its HarnessTarget ID; the Harness family name cannot distinguish multiple accounts or runtime configurations backed by the same Harness."
]
}
]
},
"src/view/chat-tui/protocol/transcript.ts::buildTranscript": {
"specs": [
{
"cases": [],
"links": [
"component://docs/view.md"
],
"rules": [
"展示压缩只能发生在 SessionState → Transcript 的 View 投影中。不得为了 UI 少显示 几行而改写、合并或丢弃 Ledger/Session 事实;完整原始记录必须保留给 resume、审计和重投影。"
]
}
]
}
}