ptbk 0.119.0-16 → 0.119.0-21

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.
Files changed (330) hide show
  1. package/README.md +27 -9
  2. package/dist/book/commitments.d.ts +38 -10
  3. package/dist/book/commitments.js +61 -17
  4. package/dist/book/commitments.js.map +1 -1
  5. package/dist/book/convert.d.ts +36 -0
  6. package/dist/book/convert.js +156 -0
  7. package/dist/book/convert.js.map +1 -0
  8. package/dist/book/parse.d.ts +50 -13
  9. package/dist/book/parse.js +132 -45
  10. package/dist/book/parse.js.map +1 -1
  11. package/dist/book/references.d.ts +12 -4
  12. package/dist/book/references.js +34 -9
  13. package/dist/book/references.js.map +1 -1
  14. package/dist/book/write.d.ts +42 -0
  15. package/dist/book/write.js +74 -0
  16. package/dist/book/write.js.map +1 -0
  17. package/dist/browser/browser.d.ts +122 -12
  18. package/dist/browser/browser.js +372 -21
  19. package/dist/browser/browser.js.map +1 -1
  20. package/dist/browser/recording.d.ts +3 -3
  21. package/dist/browser/recording.js +5 -5
  22. package/dist/browser/recording.js.map +1 -1
  23. package/dist/chats/chat-book.d.ts +105 -0
  24. package/dist/chats/chat-book.js +180 -0
  25. package/dist/chats/chat-book.js.map +1 -0
  26. package/dist/chats/conversation.d.ts +54 -0
  27. package/dist/chats/conversation.js +188 -0
  28. package/dist/chats/conversation.js.map +1 -0
  29. package/dist/chats/local.d.ts +46 -0
  30. package/dist/chats/local.js +184 -0
  31. package/dist/chats/local.js.map +1 -0
  32. package/dist/chats/migration.d.ts +12 -0
  33. package/dist/chats/migration.js +62 -0
  34. package/dist/chats/migration.js.map +1 -0
  35. package/dist/chats/service.d.ts +81 -0
  36. package/dist/chats/service.js +122 -0
  37. package/dist/chats/service.js.map +1 -0
  38. package/dist/chats/store.d.ts +132 -0
  39. package/dist/chats/store.js +181 -0
  40. package/dist/chats/store.js.map +1 -0
  41. package/dist/chats/task-chats.d.ts +52 -0
  42. package/dist/chats/task-chats.js +96 -0
  43. package/dist/chats/task-chats.js.map +1 -0
  44. package/dist/cli/chats.d.ts +45 -0
  45. package/dist/cli/chats.js +108 -0
  46. package/dist/cli/chats.js.map +1 -0
  47. package/dist/cli/commands/add.js +32 -22
  48. package/dist/cli/commands/add.js.map +1 -1
  49. package/dist/cli/commands/answer.d.ts +2 -1
  50. package/dist/cli/commands/answer.js +35 -41
  51. package/dist/cli/commands/answer.js.map +1 -1
  52. package/dist/cli/commands/ask.d.ts +7 -0
  53. package/dist/cli/commands/ask.js +37 -0
  54. package/dist/cli/commands/ask.js.map +1 -0
  55. package/dist/cli/commands/boilerplates.js +14 -3
  56. package/dist/cli/commands/boilerplates.js.map +1 -1
  57. package/dist/cli/commands/chat.d.ts +9 -0
  58. package/dist/cli/commands/chat.js +89 -0
  59. package/dist/cli/commands/chat.js.map +1 -0
  60. package/dist/cli/commands/dashboard.d.ts +3 -1
  61. package/dist/cli/commands/dashboard.js +41 -3
  62. package/dist/cli/commands/dashboard.js.map +1 -1
  63. package/dist/cli/commands/find.js +6 -8
  64. package/dist/cli/commands/find.js.map +1 -1
  65. package/dist/cli/commands/fix.js +4 -6
  66. package/dist/cli/commands/fix.js.map +1 -1
  67. package/dist/cli/commands/init.d.ts +0 -1
  68. package/dist/cli/commands/init.js +38 -38
  69. package/dist/cli/commands/init.js.map +1 -1
  70. package/dist/cli/commands/lint.js +16 -2
  71. package/dist/cli/commands/lint.js.map +1 -1
  72. package/dist/cli/commands/list.js +21 -13
  73. package/dist/cli/commands/list.js.map +1 -1
  74. package/dist/cli/commands/migrate.d.ts +2 -1
  75. package/dist/cli/commands/migrate.js +70 -24
  76. package/dist/cli/commands/migrate.js.map +1 -1
  77. package/dist/cli/commands/pause.d.ts +8 -0
  78. package/dist/cli/commands/pause.js +40 -0
  79. package/dist/cli/commands/pause.js.map +1 -0
  80. package/dist/cli/commands/plan.js +6 -9
  81. package/dist/cli/commands/plan.js.map +1 -1
  82. package/dist/cli/commands/recover.js +7 -3
  83. package/dist/cli/commands/recover.js.map +1 -1
  84. package/dist/cli/commands/restart.d.ts +3 -1
  85. package/dist/cli/commands/restart.js +74 -18
  86. package/dist/cli/commands/restart.js.map +1 -1
  87. package/dist/cli/commands/resume.d.ts +8 -0
  88. package/dist/cli/commands/resume.js +15 -0
  89. package/dist/cli/commands/resume.js.map +1 -0
  90. package/dist/cli/commands/run.js +6 -9
  91. package/dist/cli/commands/run.js.map +1 -1
  92. package/dist/cli/commands/start.js +40 -36
  93. package/dist/cli/commands/start.js.map +1 -1
  94. package/dist/cli/commands/status.d.ts +2 -1
  95. package/dist/cli/commands/status.js +5 -1
  96. package/dist/cli/commands/status.js.map +1 -1
  97. package/dist/cli/commands/stop.d.ts +3 -1
  98. package/dist/cli/commands/stop.js +18 -8
  99. package/dist/cli/commands/stop.js.map +1 -1
  100. package/dist/cli/commands/verify.js +7 -7
  101. package/dist/cli/commands/verify.js.map +1 -1
  102. package/dist/cli/common.d.ts +13 -0
  103. package/dist/cli/common.js +22 -0
  104. package/dist/cli/common.js.map +1 -1
  105. package/dist/cli/engine-delegation.d.ts +14 -0
  106. package/dist/cli/engine-delegation.js +46 -0
  107. package/dist/cli/engine-delegation.js.map +1 -0
  108. package/dist/cli/lifecycle.d.ts +40 -0
  109. package/dist/cli/lifecycle.js +71 -0
  110. package/dist/cli/lifecycle.js.map +1 -0
  111. package/dist/cli/registry.js +113 -31
  112. package/dist/cli/registry.js.map +1 -1
  113. package/dist/cli/service-view.d.ts +14 -2
  114. package/dist/cli/service-view.js +46 -5
  115. package/dist/cli/service-view.js.map +1 -1
  116. package/dist/cli/sources.js +5 -8
  117. package/dist/cli/sources.js.map +1 -1
  118. package/dist/cli/spec.js +1 -1
  119. package/dist/cli/spec.js.map +1 -1
  120. package/dist/common/app-data.d.ts +9 -0
  121. package/dist/common/app-data.js +20 -0
  122. package/dist/common/app-data.js.map +1 -0
  123. package/dist/common/errors.d.ts +2 -0
  124. package/dist/common/errors.js.map +1 -1
  125. package/dist/common/time.d.ts +6 -0
  126. package/dist/common/time.js +9 -0
  127. package/dist/common/time.js.map +1 -1
  128. package/dist/engine/agenda.d.ts +213 -43
  129. package/dist/engine/agenda.js +846 -260
  130. package/dist/engine/agenda.js.map +1 -1
  131. package/dist/engine/executor.d.ts +23 -7
  132. package/dist/engine/executor.js +131 -84
  133. package/dist/engine/executor.js.map +1 -1
  134. package/dist/engine/generated.d.ts +21 -1
  135. package/dist/engine/generated.js +36 -21
  136. package/dist/engine/generated.js.map +1 -1
  137. package/dist/engine/preview.js +10 -10
  138. package/dist/engine/preview.js.map +1 -1
  139. package/dist/engine/prompt.d.ts +16 -4
  140. package/dist/engine/prompt.js +22 -4
  141. package/dist/engine/prompt.js.map +1 -1
  142. package/dist/engine/routing.js +28 -4
  143. package/dist/engine/routing.js.map +1 -1
  144. package/dist/engine/snapshot.d.ts +178 -29
  145. package/dist/engine/state.d.ts +40 -13
  146. package/dist/engine/state.js +20 -5
  147. package/dist/engine/state.js.map +1 -1
  148. package/dist/engine/task-trace.d.ts +35 -7
  149. package/dist/engine/task-trace.js +74 -15
  150. package/dist/engine/task-trace.js.map +1 -1
  151. package/dist/engine/team.d.ts +20 -7
  152. package/dist/engine/team.js +30 -24
  153. package/dist/engine/team.js.map +1 -1
  154. package/dist/engine/traces.d.ts +1 -1
  155. package/dist/engine/traces.js +1 -1
  156. package/dist/expert/_main.md +67 -52
  157. package/dist/expert/agents/_index.md +11 -13
  158. package/dist/expert/agents/chatter.md +31 -0
  159. package/dist/expert/agents/consistency.md +6 -11
  160. package/dist/expert/agents/core-agents.md +9 -7
  161. package/dist/expert/agents/expert.md +2 -2
  162. package/dist/expert/agents/fixer.md +24 -0
  163. package/dist/expert/agents/learning.md +1 -1
  164. package/dist/expert/agents/non-agents.md +6 -4
  165. package/dist/expert/agents/teacher.md +1 -1
  166. package/dist/expert/agents/visual-identity.md +4 -4
  167. package/dist/expert/book-language/_index.md +9 -8
  168. package/dist/expert/book-language/commitments/_index.md +23 -3
  169. package/dist/expert/book-language/commitments/agent.md +11 -0
  170. package/dist/expert/book-language/commitments/chat-member.md +7 -0
  171. package/dist/expert/book-language/commitments/chat-message.md +11 -0
  172. package/dist/expert/book-language/commitments/chat-status.md +7 -0
  173. package/dist/expert/book-language/commitments/chat.md +11 -0
  174. package/dist/expert/book-language/commitments/entity.md +9 -0
  175. package/dist/expert/book-language/commitments/from.md +1 -1
  176. package/dist/expert/book-language/commitments/goal.md +6 -2
  177. package/dist/expert/book-language/commitments/link.md +9 -0
  178. package/dist/expert/book-language/commitments/task-depends-on.md +1 -1
  179. package/dist/expert/book-language/commitments/task-parent.md +1 -1
  180. package/dist/expert/book-language/commitments/task.md +7 -3
  181. package/dist/expert/book-language/commitments/team.md +1 -1
  182. package/dist/expert/book-language/inheritance.md +2 -2
  183. package/dist/expert/book-language/references.md +20 -24
  184. package/dist/expert/book-language/syntax.md +54 -11
  185. package/dist/expert/cli/acceptance.md +59 -24
  186. package/dist/expert/cli/api.md +23 -9
  187. package/dist/expert/cli/authoring.md +6 -4
  188. package/dist/expert/cli/autonomous-operation.md +3 -3
  189. package/dist/expert/cli/browser.md +29 -18
  190. package/dist/expert/cli/channels.md +5 -7
  191. package/dist/expert/cli/chat-ui.md +32 -0
  192. package/dist/expert/cli/chats.md +59 -0
  193. package/dist/expert/cli/cli.md +44 -26
  194. package/dist/expert/cli/configuration.md +3 -3
  195. package/dist/expert/cli/controls.md +13 -7
  196. package/dist/expert/cli/dashboard-details.md +23 -0
  197. package/dist/expert/cli/dashboard-layout.md +19 -12
  198. package/dist/expert/cli/dashboard.md +12 -8
  199. package/dist/expert/cli/execution.md +8 -6
  200. package/dist/expert/cli/first-task.md +4 -4
  201. package/dist/expert/cli/generated-names.md +44 -0
  202. package/dist/expert/cli/git-persistence.md +19 -17
  203. package/dist/expert/cli/global-dashboard.md +33 -0
  204. package/dist/expert/cli/goal-discovery.md +1 -1
  205. package/dist/expert/cli/help.md +1 -1
  206. package/dist/expert/cli/initialization-ui.md +2 -0
  207. package/dist/expert/cli/initialization.md +9 -7
  208. package/dist/expert/cli/interactive-ui.md +9 -5
  209. package/dist/expert/cli/locking.md +21 -0
  210. package/dist/expert/cli/migration.md +22 -6
  211. package/dist/expert/cli/process-modes.md +21 -13
  212. package/dist/expert/cli/recovery.md +8 -6
  213. package/dist/expert/cli/recurrence.md +1 -1
  214. package/dist/expert/cli/rich-input.md +2 -2
  215. package/dist/expert/cli/service-lifecycle.md +57 -0
  216. package/dist/expert/cli/start.md +2 -2
  217. package/dist/expert/cli/status-view.md +16 -12
  218. package/dist/expert/cli/task-books.md +11 -15
  219. package/dist/expert/cli/task-identity.md +8 -10
  220. package/dist/expert/cli/task-markdown.md +6 -10
  221. package/dist/expert/cli/task-origins.md +3 -1
  222. package/dist/expert/cli/task-relationships.md +5 -9
  223. package/dist/expert/cli/team.md +17 -7
  224. package/dist/expert/cli/terminal.md +20 -12
  225. package/dist/expert/cli/trace-configuration.md +1 -1
  226. package/dist/expert/cli/traces.md +19 -23
  227. package/dist/expert/cli/user-interactions.md +14 -26
  228. package/dist/expert/cli/workspace.md +15 -9
  229. package/dist/expert/concepts/engine-and-project.md +11 -0
  230. package/dist/expert/concepts/project-model.md +39 -0
  231. package/dist/expert/dictionary.md +21 -15
  232. package/dist/harness/plugins/claude-code/index.js +1 -0
  233. package/dist/harness/plugins/claude-code/index.js.map +1 -1
  234. package/dist/harness/plugins/cline/index.js +1 -0
  235. package/dist/harness/plugins/cline/index.js.map +1 -1
  236. package/dist/harness/plugins/openai-codex/index.js +1 -0
  237. package/dist/harness/plugins/openai-codex/index.js.map +1 -1
  238. package/dist/harness/plugins/opencode/index.js +1 -0
  239. package/dist/harness/plugins/opencode/index.js.map +1 -1
  240. package/dist/harness/types.d.ts +3 -1
  241. package/dist/project/agents.d.ts +29 -81
  242. package/dist/project/agents.js +48 -267
  243. package/dist/project/agents.js.map +1 -1
  244. package/dist/project/books.d.ts +150 -0
  245. package/dist/project/books.js +253 -0
  246. package/dist/project/books.js.map +1 -0
  247. package/dist/project/config.js +2 -2
  248. package/dist/project/config.js.map +1 -1
  249. package/dist/project/defaults.d.ts +35 -6
  250. package/dist/project/defaults.js +73 -40
  251. package/dist/project/defaults.js.map +1 -1
  252. package/dist/project/expert.js +18 -10
  253. package/dist/project/expert.js.map +1 -1
  254. package/dist/project/git.d.ts +4 -3
  255. package/dist/project/git.js +16 -5
  256. package/dist/project/git.js.map +1 -1
  257. package/dist/project/setup.d.ts +4 -1
  258. package/dist/project/setup.js +26 -6
  259. package/dist/project/setup.js.map +1 -1
  260. package/dist/service/actions.d.ts +34 -10
  261. package/dist/service/actions.js +51 -19
  262. package/dist/service/actions.js.map +1 -1
  263. package/dist/service/control.d.ts +53 -1
  264. package/dist/service/control.js +64 -4
  265. package/dist/service/control.js.map +1 -1
  266. package/dist/service/discovery.d.ts +133 -0
  267. package/dist/service/discovery.js +138 -0
  268. package/dist/service/discovery.js.map +1 -0
  269. package/dist/service/host.d.ts +8 -1
  270. package/dist/service/host.js +65 -18
  271. package/dist/service/host.js.map +1 -1
  272. package/dist/service/http.d.ts +3 -0
  273. package/dist/service/http.js +26 -6
  274. package/dist/service/http.js.map +1 -1
  275. package/dist/service/launcher.d.ts +66 -13
  276. package/dist/service/launcher.js +78 -18
  277. package/dist/service/launcher.js.map +1 -1
  278. package/dist/service/records.d.ts +12 -2
  279. package/dist/service/records.js +19 -5
  280. package/dist/service/records.js.map +1 -1
  281. package/dist/service/spa/app.css +83 -2
  282. package/dist/service/spa/app.js +393 -72
  283. package/dist/service/supervisor.js +7 -1
  284. package/dist/service/supervisor.js.map +1 -1
  285. package/dist/service/worker.js +14 -5
  286. package/dist/service/worker.js.map +1 -1
  287. package/dist/tasks/authoring.d.ts +3 -5
  288. package/dist/tasks/authoring.js +6 -7
  289. package/dist/tasks/authoring.js.map +1 -1
  290. package/dist/tasks/book-task.d.ts +18 -10
  291. package/dist/tasks/book-task.js +27 -23
  292. package/dist/tasks/book-task.js.map +1 -1
  293. package/dist/tasks/eligibility.d.ts +15 -7
  294. package/dist/tasks/eligibility.js +41 -14
  295. package/dist/tasks/eligibility.js.map +1 -1
  296. package/dist/tasks/identity.d.ts +41 -15
  297. package/dist/tasks/identity.js +100 -31
  298. package/dist/tasks/identity.js.map +1 -1
  299. package/dist/tasks/markdown.d.ts +7 -14
  300. package/dist/tasks/markdown.js +15 -29
  301. package/dist/tasks/markdown.js.map +1 -1
  302. package/dist/tasks/model.d.ts +20 -4
  303. package/dist/tasks/model.js +17 -0
  304. package/dist/tasks/model.js.map +1 -1
  305. package/dist/tasks/sources.d.ts +7 -2
  306. package/dist/tasks/sources.js +46 -35
  307. package/dist/tasks/sources.js.map +1 -1
  308. package/dist/ui/chat-client.d.ts +70 -0
  309. package/dist/ui/chat-client.js +209 -0
  310. package/dist/ui/chat-client.js.map +1 -0
  311. package/dist/ui/dashboard.d.ts +8 -5
  312. package/dist/ui/dashboard.js +227 -86
  313. package/dist/ui/dashboard.js.map +1 -1
  314. package/dist/ui/details.d.ts +64 -0
  315. package/dist/ui/details.js +175 -0
  316. package/dist/ui/details.js.map +1 -0
  317. package/dist/ui/global-dashboard.d.ts +59 -0
  318. package/dist/ui/global-dashboard.js +307 -0
  319. package/dist/ui/global-dashboard.js.map +1 -0
  320. package/dist/ui/status-view.d.ts +7 -0
  321. package/dist/ui/status-view.js +94 -36
  322. package/dist/ui/status-view.js.map +1 -1
  323. package/package.json +1 -1
  324. package/dist/engine/requests.d.ts +0 -111
  325. package/dist/engine/requests.js +0 -173
  326. package/dist/engine/requests.js.map +0 -1
  327. package/dist/expert/book-language/commitments/task-id.md +0 -9
  328. package/dist/tasks/prepare.d.ts +0 -33
  329. package/dist/tasks/prepare.js +0 -90
  330. package/dist/tasks/prepare.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { errorMessage } from '../common/errors.js';
2
2
  import { clockTime, formatShortTime } from '../common/time.js';
3
- import { fit } from './ansi.js';
4
- import { TextEditor } from './composer.js';
3
+ import { runChatClient } from './chat-client.js';
5
4
  import { KeyboardSession } from './keys.js';
6
5
  import { FullScreen } from './screen.js';
7
6
  import { renderQr, renderStatusPretty } from './status-view.js';
7
+ import { lifecycleActions } from './details.js';
8
8
  import { symbols } from './terminal.js';
9
9
  /**
10
10
  * Formats a plain event line.
@@ -25,8 +25,19 @@ export function plainDifference(previous, next) {
25
25
  lines.push(`Local dashboard: ${next.connection.local.url} (same computer only)`);
26
26
  }
27
27
  else {
28
- if (previous.service.state !== next.service.state)
29
- lines.push(`Service ${next.service.state}`);
28
+ if (previous.service.state !== next.service.state || previous.service.lifecycle?.intent !== next.service.lifecycle?.intent) {
29
+ lines.push(`Service ${next.service.state}${next.service.lifecycle?.intent ? ` (${next.service.lifecycle.intent}${next.service.lifecycle.draining ? ' after the current task' : ''})` : ''}`);
30
+ }
31
+ const previousBrowser = previous.browser;
32
+ const browser = next.browser;
33
+ if (browser && (previousBrowser?.state !== browser.state || previousBrowser?.lastFailure?.at !== browser.lastFailure?.at)) {
34
+ lines.push(`Browser ${browser.state}${browser.lastFailure && browser.lastFailure.at !== previousBrowser?.lastFailure?.at ? `: ${browser.lastFailure.summary}` : ''}${browser.recovery?.state === 'retrying' ? ' (recovering automatically)' : ''}`);
35
+ }
36
+ if (next.execution?.status === 'active' && (previous.execution?.status !== 'active' || previous.execution.task.ref !== next.execution.task.ref)) {
37
+ const own = next.execution.contexts[0];
38
+ if (own)
39
+ lines.push(`Execution: ${next.execution.agent.name} on ${own.harness.name}, model ${own.model.value ?? own.model.status}, thinking ${own.thinkingLevel.value ?? own.thinkingLevel.status}`);
40
+ }
30
41
  if (previous.phase !== next.phase)
31
42
  lines.push(`Phase ${next.phase}${next.current ? `: ${next.current.agent.name} on "${next.current.taskTitle}"` : next.wait ? `: ${next.wait.reason}` : ''}`);
32
43
  if (previous.connection.remote.url !== next.connection.remote.url && next.connection.remote.url)
@@ -36,17 +47,19 @@ export function plainDifference(previous, next) {
36
47
  for (const line of next.activity)
37
48
  if (!seen.has(`${line.at}${line.text}`) && previous)
38
49
  lines.push(`${line.level === 'info' ? '' : `${line.level.toUpperCase()}: `}${line.text}`);
39
- const previousRequests = new Set(previous?.requests.map((request) => request.id) ?? []);
40
- for (const request of next.requests) {
41
- if (!previousRequests.has(request.id))
42
- lines.push(`ATTENTION ${request.id}: ${request.reason} — ${request.question.split('\n')[0]} (answer with: ptbk answer ${request.id} "<answer>")`);
50
+ const previousWaiting = new Set(previous?.chats.waiting.map((chat) => `${chat.name}\u0000${chat.messages}`) ?? []);
51
+ for (const chat of next.chats.waiting) {
52
+ if (!previousWaiting.has(`${chat.name}\u0000${chat.messages}`)) {
53
+ lines.push(`ATTENTION ${chat.awaiting?.sender ?? chat.agent ?? 'An agent'} waits for you in {{${chat.name}}}: ${(chat.awaiting?.text ?? '').split('\n')[0]} (answer with: ptbk answer "${chat.name}" "<answer>")`);
54
+ }
43
55
  }
44
56
  return lines;
45
57
  }
46
58
  /**
47
59
  * Runs the live terminal dashboard until the user leaves or the service ends.
48
60
  *
49
- * Leaving (Q, Ctrl+C) never stops an attached service; an owning view stops only its own work.
61
+ * Leaving (Q, Ctrl+C) never stops an attached service. An owning view (foreground start, run) instead requests a
62
+ * graceful stop and stays until the engine ends; a second Ctrl+C there is an explicit force stop.
50
63
  *
51
64
  * @private terminal dashboard
52
65
  */
@@ -62,11 +75,14 @@ export async function runDashboard(terminal, source, options) {
62
75
  let feedback = '';
63
76
  let feedbackTimer;
64
77
  let input;
78
+ let nested = false;
65
79
  let qr;
66
80
  let qrKey = '';
67
81
  let pairingUrl;
68
82
  let plain = false;
69
- let stopPressed = false;
83
+ let ownerStopRequested = false;
84
+ // Viewer-local presentation state: detail panels start collapsed and never change the engine.
85
+ const details = { execution: false, browser: false };
70
86
  let connectionLost;
71
87
  let finished;
72
88
  const done = new Promise((resolve) => {
@@ -78,7 +94,7 @@ export async function runDashboard(terminal, source, options) {
78
94
  feedbackTimer = setTimeout(() => {
79
95
  feedback = '';
80
96
  draw();
81
- }, 4000);
97
+ }, 5000);
82
98
  draw();
83
99
  };
84
100
  const refreshQr = async () => {
@@ -111,46 +127,76 @@ export async function runDashboard(terminal, source, options) {
111
127
  draw();
112
128
  };
113
129
  const legend = () => {
114
- if (input?.kind === 'text')
115
- return ' Enter send · Ctrl+J newline · Esc cancel';
116
- if (input?.kind === 'choice')
117
- return ' ↑↓ choose · Enter send · 1-9 pick · Esc cancel';
130
+ if (input?.kind === 'agents')
131
+ return input.stage === 'entry' ? ' ↑↓ choose · Enter confirm (Chatter is the default) · Esc cancel' : ' ↑↓ choose · Enter open a new chat · Esc back';
132
+ if (input?.kind === 'chats')
133
+ return ' ↑↓ choose · Enter open · Esc back';
134
+ if (input?.kind === 'confirm')
135
+ return ' Y confirm · N/Esc keep things as they are';
136
+ const waiting = snapshot.chats.waiting.length;
118
137
  const parts = [
119
- snapshot.requests.length ? 'A answer' : '',
120
- snapshot.requests.length > 1 ? 'N next request' : '',
121
- snapshot.service.state === 'paused' || snapshot.service.state === 'pausing' ? 'P resume' : 'P pause',
138
+ waiting ? 'A answer' : '',
139
+ waiting > 1 ? 'N next' : '',
140
+ 'C new chat',
141
+ `L chats${snapshot.chats.unread ? ` (${snapshot.chats.unread} unread)` : ''}`,
122
142
  'S skip wait',
123
- stopPressed ? 'X again: stop now' : 'X stop service',
124
- 'R renew pairing',
143
+ `E ${details.execution ? 'hide' : 'show'} execution`,
144
+ `B ${details.browser ? 'hide' : 'show'} browser`,
145
+ 'V renew pairing',
125
146
  'O plain',
126
147
  '↑↓/End activity',
127
- source.owning ? 'Q/Ctrl+C stop (recoverable) & quit' : 'Q leave (service keeps running)',
148
+ source.owning ? (ownerStopRequested ? 'Ctrl+C force stop' : 'Q/Ctrl+C stop gracefully & quit') : 'Q leave (service keeps running)',
128
149
  ].filter(Boolean);
129
150
  return ` ${parts.join(' · ')}${feedback ? ` ${marks.arrow} ${feedback}` : ''}`;
130
151
  };
152
+ /** Agents listed by the picker's current stage. */
153
+ const pickerChoices = (picker) => {
154
+ const chatter = picker.agents.find((agent) => agent.group === 'chatter');
155
+ if (picker.stage === 'entry' && chatter)
156
+ return [{ label: `Chat with ${chatter.name}`, agent: chatter }, { label: 'Choose another agent', others: true }];
157
+ return picker.agents.filter((agent) => agent.group !== 'chatter').map((agent) => ({ label: agent.name, agent }));
158
+ };
131
159
  const inputLines = () => {
132
160
  if (!input)
133
161
  return undefined;
134
162
  const { style } = terminal;
135
- const request = snapshot.requests.find((item) => item.id === input.requestId);
136
- if (!request)
137
- return [style.muted('This request was resolved elsewhere.')];
138
- if (input.kind === 'choice') {
139
- const focus = input.focus;
140
- return [style.bold(`Answer ${request.id}:`), ...input.choices.map((choice, index) => `${index === focus ? style.accent(marks.pointer) : ' '} ${index === focus ? style.accent(marks.radioOn) : style.muted(marks.radioOff)} ${style.accent(`${index + 1}.`)} ${choice}`)];
163
+ const pointer = (focused) => (focused ? style.accent(marks.pointer) : ' ');
164
+ if (input.kind === 'confirm')
165
+ return [style.bold(input.question), style.muted('Press Y to confirm or N/Esc to cancel.')];
166
+ if (input.kind === 'agents') {
167
+ const picker = input;
168
+ const chatter = picker.agents.some((agent) => agent.group === 'chatter');
169
+ const rows = pickerChoices(picker).map((choice, index) => `${pointer(index === picker.focus)} ${choice.label}${choice.agent && picker.stage === 'all' ? style.muted(choice.agent.group === 'expert' ? ' (engine-provided)' : choice.agent.group === 'hidden' ? ' (hidden/core)' : '') : ''}${choice.agent?.description && picker.stage === 'all' ? style.muted(` · ${choice.agent.description}`) : ''}${choice.others ? style.muted(' · project, hidden/core agents and Expert') : ''}`);
170
+ const problem = chatter ? [] : [style.warning('Chatter (agents/.core/chatter.book) is missing or invalid; run `ptbk init` or `ptbk start` to restore it. Choose another agent explicitly:')];
171
+ return [style.bold(picker.stage === 'entry' ? 'New chat — who do you want to talk to?' : 'New chat — every agent you can talk to'), ...problem, ...rows];
141
172
  }
142
- const width = Math.min(terminal.columns(), 140) - 8;
143
- const layout = input.editor.layout(width, 6);
144
- return [style.bold(`Answer ${request.id} (Enter sends, Ctrl+J newline):`), ...(input.editor.value ? layout.lines : [style.muted('Type your answer…')]).map((line) => `${style.accent('│')} ${fit(line, width)}`)];
173
+ const chats = snapshot.chats.recent;
174
+ if (!chats.length)
175
+ return [style.muted('No chats yet; press C to start one.')];
176
+ const list = input;
177
+ return [
178
+ style.bold(`All chats (${snapshot.chats.total}${snapshot.chats.total > chats.length ? `, latest ${chats.length}` : ''})`),
179
+ ...chats.map((chat, index) => `${pointer(index === list.focus)} ${chat.status === 'waiting-for-user' ? style.warning(`${marks.warn} `) : ''}${chat.name}${chat.unread ? style.accent(` · ${chat.unread} unread`) : ''}${style.muted(` · ${chat.members.join(', ')}${chat.links.length ? ` · ${chat.links.join(', ')}` : ''}`)}`),
180
+ ];
145
181
  };
146
182
  const draw = () => {
147
- if (plain)
183
+ if (plain || nested)
148
184
  return;
149
185
  const lines = renderStatusPretty(snapshot, terminal, {
150
186
  qr,
151
187
  noQr: options.noQr,
152
188
  pairingUrl: qr?.sensitive ? undefined : pairingUrl,
153
- live: { frame, maxHeight: terminal.rows(), legend: legend(), input: inputLines(), activityOffset, focusRequest, connectionLost },
189
+ live: {
190
+ frame,
191
+ maxHeight: terminal.rows(),
192
+ legend: legend(),
193
+ input: inputLines(),
194
+ activityOffset,
195
+ focusRequest,
196
+ connectionLost,
197
+ details,
198
+ controlNote: source.owning && ownerStopRequested && snapshot.service.state === 'stopping' ? 'This view closes when the engine has stopped.' : undefined,
199
+ },
154
200
  });
155
201
  screen.draw(lines);
156
202
  };
@@ -162,67 +208,129 @@ export async function runDashboard(terminal, source, options) {
162
208
  process.stdout.off('resize', onResize);
163
209
  finished?.(reason);
164
210
  };
165
- const startAnswer = () => {
166
- const request = snapshot.requests[focusRequest] ?? snapshot.requests[0];
167
- if (!request) {
168
- notify('No pending request.');
211
+ /** Opens a chat in the full-screen chat client; Esc returns to the dashboard (the chat stays). */
212
+ const openChat = async (target) => {
213
+ input = undefined;
214
+ nested = true;
215
+ keyboard.stop();
216
+ try {
217
+ await runChatClient(terminal, source.chats, target, { embedded: true, screen });
218
+ }
219
+ catch (error) {
220
+ feedback = `Chat failed: ${errorMessage(error)}`;
221
+ }
222
+ finally {
223
+ nested = false;
224
+ keyboard.start();
225
+ screen.invalidate();
226
+ draw();
227
+ }
228
+ };
229
+ /** A: the conversation of the most urgent (focused) agent waiting for the user, with its real author. */
230
+ const openWaiting = () => {
231
+ const chat = snapshot.chats.waiting[focusRequest] ?? snapshot.chats.waiting[0];
232
+ if (!chat) {
233
+ notify('No agent is waiting for you.');
169
234
  return;
170
235
  }
171
- input = request.choices?.length ? { kind: 'choice', requestId: request.id, choices: request.choices, focus: 0 } : { kind: 'text', requestId: request.id, editor: new TextEditor() };
172
- draw();
236
+ void openChat({ kind: 'existing', name: chat.name });
173
237
  };
174
- const submitAnswer = async (requestId, answer) => {
175
- input = undefined;
238
+ /** C: a new chat — Chat with Chatter (default) or Choose another agent. */
239
+ const startNewChat = async () => {
176
240
  try {
177
- await source.answer(requestId, answer);
178
- notify(`Answer to ${requestId} applied.`);
241
+ const agents = await source.chats.agents();
242
+ input = { kind: 'agents', agents, stage: agents.some((agent) => agent.group === 'chatter') ? 'entry' : 'all', focus: 0 };
243
+ draw();
179
244
  }
180
245
  catch (error) {
181
- notify(`Not applied: ${errorMessage(error)}`);
246
+ notify(`Chats unavailable: ${errorMessage(error)}`);
182
247
  }
183
248
  };
184
- const runAction = async (name) => {
249
+ const runAction = async (name, params) => {
185
250
  try {
186
- notify((await source.action(name)).outcome);
251
+ notify((await source.action(name, params)).outcome);
187
252
  }
188
253
  catch (error) {
189
254
  notify(`Failed: ${errorMessage(error)}`);
190
255
  }
191
256
  };
257
+ /** Asks for confirmation before a consequential action. */
258
+ const confirmThen = (question, run) => {
259
+ input = { kind: 'confirm', question, run };
260
+ draw();
261
+ };
262
+ /** Runs a lifecycle action offered for the current state (same operations as the CLI commands). */
263
+ const lifecycle = (key) => {
264
+ const action = lifecycleActions(snapshot).find((candidate) => candidate.key === key);
265
+ if (!action?.action) {
266
+ notify(key === 'P' ? `Pause/resume does not apply while the service is ${snapshot.service.state}.` : 'That control does not apply now.');
267
+ return;
268
+ }
269
+ const revision = snapshot.service.lifecycle?.revision;
270
+ // Stop-to-pause replacement is confirmed against the decision the user saw (stale confirmations are rejected).
271
+ const params = action.action === 'pause' && snapshot.service.state === 'stopping' ? { replaceStop: true, revision } : undefined;
272
+ if (action.confirm)
273
+ confirmThen(action.confirm, () => runAction(action.action, params));
274
+ else
275
+ void runAction(action.action, params);
276
+ };
277
+ /** Owning view: request a graceful stop and stay until the engine ends; a repeated Ctrl+C forces. */
278
+ const ownerQuit = (force) => {
279
+ if (force && ownerStopRequested) {
280
+ void runAction('force-stop');
281
+ return;
282
+ }
283
+ ownerStopRequested = true;
284
+ void runAction('stop');
285
+ };
192
286
  const onKey = (event) => {
193
- if (input) {
194
- if (event.type === 'key' && event.name === 'escape') {
287
+ if (input?.kind === 'confirm') {
288
+ const pending = input;
289
+ if (event.type === 'text' && event.text.toLowerCase() === 'y') {
195
290
  input = undefined;
196
- draw();
197
- return;
291
+ void pending.run();
292
+ }
293
+ else if ((event.type === 'text' && event.text.toLowerCase() === 'n') || (event.type === 'key' && event.name === 'escape')) {
294
+ input = undefined;
295
+ notify('Nothing changed.');
198
296
  }
199
- if (input.kind === 'choice') {
200
- const current = input;
201
- if (event.type === 'key' && event.name === 'up')
202
- current.focus = (current.focus - 1 + current.choices.length) % current.choices.length;
203
- else if (event.type === 'key' && event.name === 'down')
204
- current.focus = (current.focus + 1) % current.choices.length;
205
- else if (event.type === 'key' && event.name === 'enter')
206
- void submitAnswer(current.requestId, current.choices[current.focus]);
207
- else if (event.type === 'text' && /^[1-9]$/.test(event.text) && Number(event.text) <= current.choices.length)
208
- current.focus = Number(event.text) - 1;
297
+ draw();
298
+ return;
299
+ }
300
+ if (input) {
301
+ if (event.type === 'key' && event.name === 'escape') {
302
+ // Choose another agent → back to the two-choice entry; otherwise cancel.
303
+ input = input.kind === 'agents' && input.stage === 'all' && input.agents.some((agent) => agent.group === 'chatter') ? { ...input, stage: 'entry', focus: 1 } : undefined;
209
304
  draw();
210
305
  return;
211
306
  }
212
- const action = input.editor.handle(event);
213
- if (action === 'submit') {
214
- if (input.editor.value.trim())
215
- void submitAnswer(input.requestId, input.editor.value);
307
+ const count = input.kind === 'agents' ? pickerChoices(input).length : snapshot.chats.recent.length;
308
+ if (event.type === 'key' && event.name === 'up' && count)
309
+ input.focus = (input.focus - 1 + count) % count;
310
+ else if (event.type === 'key' && event.name === 'down' && count)
311
+ input.focus = (input.focus + 1) % count;
312
+ else if (event.type === 'key' && event.name === 'enter') {
313
+ if (input.kind === 'agents') {
314
+ const choice = pickerChoices(input)[input.focus];
315
+ if (choice?.agent)
316
+ void openChat({ kind: 'new', agent: choice.agent });
317
+ else if (choice?.others)
318
+ input = { ...input, stage: 'all', focus: 0 };
319
+ }
320
+ else {
321
+ const chat = snapshot.chats.recent[input.focus];
322
+ if (chat)
323
+ void openChat({ kind: 'existing', name: chat.name });
324
+ }
216
325
  }
217
- else if (action === 'cancel')
218
- input = undefined;
219
326
  draw();
220
327
  return;
221
328
  }
222
329
  if (event.type === 'key' && event.name === 'c' && event.ctrl) {
223
330
  if (source.owning)
224
- void runAction('stop-now');
225
- leave('left');
331
+ ownerQuit(true);
332
+ else
333
+ leave('left');
226
334
  return;
227
335
  }
228
336
  if (event.type === 'key') {
@@ -232,8 +340,8 @@ export async function runDashboard(terminal, source, options) {
232
340
  activityOffset = Math.max(0, activityOffset - 1);
233
341
  else if (event.name === 'end')
234
342
  activityOffset = 0;
235
- else if (event.name === 'enter' && snapshot.requests.length)
236
- startAnswer();
343
+ else if (event.name === 'enter' && snapshot.chats.waiting.length)
344
+ openWaiting();
237
345
  draw();
238
346
  return;
239
347
  }
@@ -242,27 +350,61 @@ export async function runDashboard(terminal, source, options) {
242
350
  switch (event.text.toLowerCase()) {
243
351
  case 'q':
244
352
  if (source.owning)
245
- void runAction('stop-now');
246
- leave('left');
353
+ ownerQuit(false);
354
+ else
355
+ leave('left');
247
356
  return;
248
357
  case 'p':
249
- void runAction(snapshot.service.state === 'paused' || snapshot.service.state === 'pausing' ? 'resume' : 'pause');
358
+ lifecycle('P');
359
+ return;
360
+ case 'u':
361
+ lifecycle('U');
362
+ return;
363
+ case 'x':
364
+ // Graceful stop; repeating it never escalates to force (F is the explicit force stop).
365
+ lifecycle('X');
366
+ return;
367
+ case 'r':
368
+ lifecycle('R');
369
+ return;
370
+ case 'f':
371
+ lifecycle('F');
250
372
  return;
251
373
  case 's':
252
374
  void runAction('skip-wait');
253
375
  return;
254
- case 'x':
255
- void runAction(stopPressed ? 'stop-now' : 'stop');
256
- stopPressed = true;
376
+ case 'e':
377
+ details.execution = !details.execution;
378
+ draw();
379
+ return;
380
+ case 'b':
381
+ details.browser = !details.browser;
382
+ draw();
383
+ return;
384
+ case '1':
385
+ case '2':
386
+ case '3':
387
+ if (!details.browser) {
388
+ notify('Open the browser details (B) to use browser recovery.');
389
+ return;
390
+ }
391
+ void runAction(event.text === '1' ? 'browser-recheck' : event.text === '2' ? 'browser-retry' : 'browser-restart');
257
392
  return;
258
393
  case 'a':
259
- startAnswer();
394
+ openWaiting();
395
+ return;
396
+ case 'c':
397
+ void startNewChat();
398
+ return;
399
+ case 'l':
400
+ input = { kind: 'chats', focus: 0 };
401
+ draw();
260
402
  return;
261
403
  case 'n':
262
- focusRequest = snapshot.requests.length ? (focusRequest + 1) % snapshot.requests.length : 0;
404
+ focusRequest = snapshot.chats.waiting.length ? (focusRequest + 1) % snapshot.chats.waiting.length : 0;
263
405
  draw();
264
406
  return;
265
- case 'r':
407
+ case 'v':
266
408
  void source.pairing(true).then(() => {
267
409
  qrKey = '';
268
410
  notify('Pairing renewed; the previous link is invalid.');
@@ -312,16 +454,15 @@ export async function runDashboard(terminal, source, options) {
312
454
  process.stdout.write(plainDifference(previous, next).map(plainLine).join(''));
313
455
  previous = next;
314
456
  snapshot = next;
315
- if (focusRequest >= snapshot.requests.length)
457
+ if (focusRequest >= snapshot.chats.waiting.length)
316
458
  focusRequest = 0;
317
459
  draw();
318
460
  void refreshQr();
319
461
  if (['stopped', 'finished'].includes(snapshot.service.state)) {
320
- if (!source.owning) {
321
- await new Promise((resolve) => setTimeout(resolve, 1500));
322
- leave('ended');
323
- return;
324
- }
462
+ // The engine ended (observed): show it briefly, never start a replacement.
463
+ await new Promise((resolve) => setTimeout(resolve, 1500));
464
+ leave('ended');
465
+ return;
325
466
  }
326
467
  }
327
468
  catch (error) {
@@ -338,11 +479,11 @@ export async function runDashboard(terminal, source, options) {
338
479
  })();
339
480
  const reason = await done;
340
481
  finished = undefined;
341
- process.stdout.write(`${terminal.style.muted(`Left the dashboard at ${formatShortTime(Date.now())}.`)}${source.owning ? '' : terminal.style.muted(' The service keeps running; `ptbk stop` stops it.')}\n`);
482
+ process.stdout.write(`${terminal.style.muted(`Left the dashboard at ${formatShortTime(Date.now())}.`)}${source.owning ? '' : terminal.style.muted(reason === 'ended' ? ' The service is no longer running.' : ' The service keeps running; `ptbk stop` stops it.')}\n`);
342
483
  return reason;
343
484
  }
344
485
  /**
345
- * Plain continuous observation (raw/noninteractive): readable lines, conspicuous request notices, no prompts.
486
+ * Plain continuous observation (raw/noninteractive): readable lines, conspicuous waiting-chat notices, no prompts.
346
487
  */
347
488
  async function runPlainDashboard(terminal, source) {
348
489
  let previous;
@@ -1 +1 @@
1
- {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/ui/dashboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dashboard.js","sourceRoot":"","sources":["../../src/ui/dashboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ import type { BrowserDetailView, ExecutionContextView, ExecutionDetailView, ServiceSnapshot } from '../engine/snapshot.js';
2
+ import type { Style } from './ansi.js';
3
+ /**
4
+ * One lifecycle action offered for the current service state (terminal key, CLI command and API action).
5
+ *
6
+ * @private service controls view
7
+ */
8
+ export type LifecycleActionView = {
9
+ readonly key: string;
10
+ readonly label: string;
11
+ readonly command: string;
12
+ readonly action: string;
13
+ readonly confirm?: string;
14
+ };
15
+ /**
16
+ * What the current service state means, including a pending intent and whether work is still draining.
17
+ *
18
+ * @private service controls view
19
+ */
20
+ export declare function lifecycleExplanation(snapshot: ServiceSnapshot): string;
21
+ /**
22
+ * Human description of the live service state with its pending intent (never a fifth `stopped` live state).
23
+ *
24
+ * @private service controls view
25
+ */
26
+ export declare function lifecycleSummary(snapshot: ServiceSnapshot): string;
27
+ /**
28
+ * The lifecycle actions applicable in the current state, shared by the terminal panel, browser and one-shot hints.
29
+ *
30
+ * @private service controls view
31
+ */
32
+ export declare function lifecycleActions(snapshot: ServiceSnapshot): LifecycleActionView[];
33
+ /**
34
+ * Human label of a model in one execution context.
35
+ *
36
+ * @private execution details view
37
+ */
38
+ export declare function modelLabel(model: ExecutionContextView['model']): string;
39
+ /**
40
+ * Human label of a thinking level in one execution context, in the harness's own terminology.
41
+ *
42
+ * @private execution details view
43
+ */
44
+ export declare function thinkingLabel(thinking: ExecutionContextView['thinkingLevel']): string;
45
+ /**
46
+ * Compact one-line configuration of the task's own execution context: agent, harness, model and thinking level.
47
+ *
48
+ * @private execution details view
49
+ */
50
+ export declare function executionOneLine(execution: ExecutionDetailView): string;
51
+ /**
52
+ * Lines of the expandable execution detail panel (also the raw EXECUTION section).
53
+ *
54
+ * @private execution details view
55
+ */
56
+ export declare function executionDetailLines(execution: ExecutionDetailView | undefined, style?: Style): string[];
57
+ /**
58
+ * Lines of the expandable browser detail panel (also the raw BROWSER section). Never includes profile contents.
59
+ *
60
+ * @private browser details view
61
+ */
62
+ export declare function browserDetailLines(browser: BrowserDetailView | undefined, style?: Style, options?: {
63
+ readonly keys?: boolean;
64
+ }): string[];