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
@@ -0,0 +1,45 @@
1
+ import { LocalChats } from '../chats/local.js';
2
+ import { type ChatAgentChoice } from '../chats/service.js';
3
+ import type { Project } from '../project/workspace.js';
4
+ import { type ChatSource } from '../ui/chat-client.js';
5
+ import { CANCELLED } from '../ui/prompts.js';
6
+ import type { TerminalProfile } from '../ui/terminal.js';
7
+ import type { CommandContext } from './context.js';
8
+ /**
9
+ * The chat source of a project: the running service when there is one, otherwise the project directly.
10
+ *
11
+ * @private CLI chats
12
+ */
13
+ export declare function openChatSource(context: CommandContext, project: Project, options?: {
14
+ readonly replies?: boolean;
15
+ readonly onActivity?: (text: string) => void;
16
+ readonly onReplyError?: (error: string) => void;
17
+ }): Promise<{
18
+ readonly source: ChatSource;
19
+ readonly service: boolean;
20
+ readonly local?: LocalChats;
21
+ }>;
22
+ /**
23
+ * Lets the user choose the agent of a new chat: exactly two choices first — **Chat with Chatter** (focused default,
24
+ * Enter) and **Choose another agent**, which opens every valid alternative (ordinary, hidden/core agents and Expert).
25
+ *
26
+ * A missing or invalid Chatter is reported with its repair action; only an explicit choice selects another agent.
27
+ *
28
+ * @private CLI chats
29
+ */
30
+ export declare function pickChatAgent(terminal: TerminalProfile, agents: readonly ChatAgentChoice[]): Promise<ChatAgentChoice | typeof CANCELLED>;
31
+ /**
32
+ * Finds the agent choice for an explicit `--agent` value (`Developer`, `@Developer`, `{Frontend Developer}`).
33
+ *
34
+ * @private CLI chats
35
+ */
36
+ export declare function explicitChatAgent(agents: readonly ChatAgentChoice[], value: string): ChatAgentChoice;
37
+ /**
38
+ * Waits until the chat has a message after `after` messages from someone other than the user (or the timeout).
39
+ *
40
+ * @private CLI chats
41
+ */
42
+ export declare function waitForReply(source: ChatSource, name: string, after: number, timeoutMs: number, failed: () => string | undefined): Promise<{
43
+ sender: string;
44
+ text: string;
45
+ } | undefined>;
@@ -0,0 +1,108 @@
1
+ import { PtbkError } from '../common/errors.js';
2
+ import { normalizeAgentName, parseReferenceValue } from '../book/references.js';
3
+ import { LocalChats } from '../chats/local.js';
4
+ import { defaultChatAgent } from '../chats/service.js';
5
+ import { loadSettings } from '../project/config.js';
6
+ import { lookupService } from '../service/control.js';
7
+ import { controlChatSource } from '../ui/chat-client.js';
8
+ import { CANCELLED, selectOne } from '../ui/prompts.js';
9
+ import { settingOverrides } from './common.js';
10
+ /**
11
+ * The chat source of a project: the running service when there is one, otherwise the project directly.
12
+ *
13
+ * @private CLI chats
14
+ */
15
+ export async function openChatSource(context, project, options = {}) {
16
+ const lookup = await lookupService(project);
17
+ if (lookup.state === 'unreachable') {
18
+ throw new PtbkError('The recorded ptbk service does not answer, so chats cannot be written safely.', { kind: 'technical', project: project.root, reason: lookup.reason, next: ['Run `ptbk status` to inspect it, or `ptbk restart`.'] });
19
+ }
20
+ if (lookup.state === 'running')
21
+ return { source: controlChatSource((method, params) => lookup.client.request(method, params ?? {}), 'cli'), service: true };
22
+ const settings = await loadSettings(project, { env: context.env, cli: settingOverrides(context) });
23
+ const local = await LocalChats.open(project, settings, context.env);
24
+ return { source: local.source({ replies: options.replies ?? true, onActivity: options.onActivity, onReplyError: options.onReplyError }), service: false, local };
25
+ }
26
+ /**
27
+ * Lets the user choose the agent of a new chat: exactly two choices first — **Chat with Chatter** (focused default,
28
+ * Enter) and **Choose another agent**, which opens every valid alternative (ordinary, hidden/core agents and Expert).
29
+ *
30
+ * A missing or invalid Chatter is reported with its repair action; only an explicit choice selects another agent.
31
+ *
32
+ * @private CLI chats
33
+ */
34
+ export async function pickChatAgent(terminal, agents) {
35
+ const chatter = agents.find((agent) => agent.group === 'chatter');
36
+ const others = agents.filter((agent) => agent.group !== 'chatter');
37
+ const OTHER = '\u0000other';
38
+ if (!chatter) {
39
+ try {
40
+ defaultChatAgent(agents);
41
+ }
42
+ catch (error) {
43
+ const details = error.details;
44
+ terminal.write(`${terminal.style.warning(error.message)}\n${(details?.next ?? []).map((line) => terminal.style.muted(` → ${line}`)).join('\n')}\n\n`);
45
+ }
46
+ }
47
+ for (;;) {
48
+ if (chatter) {
49
+ const first = await selectOne(terminal, {
50
+ frame: { title: 'ptbk chat', step: 'New chat' },
51
+ question: 'Who do you want to talk to?',
52
+ choices: [
53
+ { value: chatter.reference, label: `Chat with ${chatter.name}`, description: 'default project guide; consults specialists for you' },
54
+ { value: OTHER, label: 'Choose another agent', description: 'project agents, hidden/core agents and Expert' },
55
+ ],
56
+ defaultValue: chatter.reference,
57
+ });
58
+ if (first === CANCELLED)
59
+ return CANCELLED;
60
+ if (first === chatter.reference)
61
+ return chatter;
62
+ }
63
+ const second = await selectOne(terminal, {
64
+ frame: { title: 'ptbk chat', step: 'Choose another agent' },
65
+ question: chatter ? 'Every agent you can talk to (Esc goes back):' : 'Every agent you can talk to:',
66
+ choices: others.map((agent) => ({ value: agent.reference, label: agent.name, description: `${agent.group === 'expert' ? 'engine-provided' : agent.group === 'hidden' ? 'hidden/core' : 'project agent'}${agent.description ? ` · ${agent.description}` : ''}` })),
67
+ defaultValue: others[0].reference,
68
+ });
69
+ if (second !== CANCELLED)
70
+ return others.find((agent) => agent.reference === second);
71
+ // Esc in the full list returns to the two-choice entry; without Chatter it cancels.
72
+ if (!chatter)
73
+ return CANCELLED;
74
+ }
75
+ }
76
+ /**
77
+ * Finds the agent choice for an explicit `--agent` value (`Developer`, `@Developer`, `{Frontend Developer}`).
78
+ *
79
+ * @private CLI chats
80
+ */
81
+ export function explicitChatAgent(agents, value) {
82
+ const key = parseReferenceValue(value.startsWith('@') || value.startsWith('{') ? value : `{{${value}}}`)?.normalized ?? normalizeAgentName(value);
83
+ const found = agents.find((agent) => normalizeAgentName(agent.name) === key);
84
+ if (found)
85
+ return found;
86
+ if (['user', 'void', 'null'].includes(key))
87
+ throw new PtbkError(`You cannot chat with @${value.replace(/^@/, '')}; choose a project agent or @Expert.`, { kind: 'usage' });
88
+ throw new PtbkError(`No agent named ${value} is available for chats.`, { kind: 'usage', next: [`Choose one of: ${agents.map((agent) => agent.reference).join(', ')}.`] });
89
+ }
90
+ /**
91
+ * Waits until the chat has a message after `after` messages from someone other than the user (or the timeout).
92
+ *
93
+ * @private CLI chats
94
+ */
95
+ export async function waitForReply(source, name, after, timeoutMs, failed) {
96
+ const deadline = Date.now() + timeoutMs;
97
+ while (Date.now() < deadline) {
98
+ const detail = await source.get(name);
99
+ const reply = detail.messages.slice(after).find((message) => message.sender.replace(/^@/, '').toLowerCase() !== 'user');
100
+ if (reply)
101
+ return reply;
102
+ if (failed())
103
+ return undefined;
104
+ await new Promise((resolve) => setTimeout(resolve, 1000));
105
+ }
106
+ return undefined;
107
+ }
108
+ //# sourceMappingURL=chats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chats.js","sourceRoot":"","sources":["../../src/cli/chats.ts"],"names":[],"mappings":"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"}
@@ -5,16 +5,19 @@ import { parseInterval } from '../../common/duration.js';
5
5
  import { ensureDirectory, listDirectory, pathExists, toProjectRelative } from '../../common/fs.js';
6
6
  import { parseDateTime } from '../../common/time.js';
7
7
  import { matchCommitmentKeyword } from '../../book/commitments.js';
8
- import { parseBook } from '../../book/parse.js';
8
+ import { normalizeAgentName } from '../../book/references.js';
9
+ import { renderCommitment } from '../../book/write.js';
10
+ import { commitmentsOf, parseBook } from '../../book/parse.js';
9
11
  import { loadSettings, setting } from '../../project/config.js';
10
12
  import { commitPaths, inspectGit } from '../../project/git.js';
11
13
  import { newTaskPath, renderTaskBook, splitTitle } from '../../tasks/authoring.js';
12
- import { generateTaskId } from '../../tasks/identity.js';
14
+ import { nameReference } from '../../tasks/model.js';
13
15
  import { lookupService } from '../../service/control.js';
14
16
  import { acquireProjectLock } from '../../service/records.js';
15
17
  import { shortId } from '../../common/ids.js';
16
18
  import { CANCELLED, composeText, confirm, selectOne } from '../../ui/prompts.js';
17
- import { readStdin, selectedProject, writableTasksDirectory } from '../common.js';
19
+ import { generatedTaskName, projectTakenNames, readStdin, selectedProject, writableTasksDirectory } from '../common.js';
20
+ import { distinctName } from '../../tasks/identity.js';
18
21
  import { flag, option } from '../context.js';
19
22
  /**
20
23
  * Builds the commitment lines requested through flags.
@@ -23,7 +26,7 @@ function controlLines(context, timeZone) {
23
26
  const lines = [];
24
27
  const agent = option(context, 'agent');
25
28
  if (agent)
26
- lines.push(`TASK AGENT ${agent.startsWith('@') || agent.startsWith('{') ? agent : /\s/.test(agent) ? `{${agent}}` : `@${agent}`}`);
29
+ lines.push(`TASK AGENT ${agent.startsWith('@') || agent.startsWith('{') ? agent : /\s/.test(agent) ? `{{${agent}}}` : `@${agent}`}`);
27
30
  if (option(context, 'harness'))
28
31
  lines.push(`TASK HARNESS ${option(context, 'harness')}`);
29
32
  if (option(context, 'model'))
@@ -75,7 +78,7 @@ export default async function add(context) {
75
78
  templateSource = await readFile(templatePath, 'utf8');
76
79
  }
77
80
  if (!text && terminal.interactive) {
78
- const initial = templateSource ? parseBook(templateSource).intro : '';
81
+ const initial = templateSource ? commitmentsOf(parseBook(templateSource), 'GOAL').map((goal) => goal.body).join('\n\n') : '';
79
82
  const value = await composeText(terminal, {
80
83
  frame: { title: 'ptbk add', step: 'Describe the task', summary: templateName ? [`Template: ${templateName}`] : [] },
81
84
  question: 'What should be done? (first line becomes the title)',
@@ -113,26 +116,26 @@ export default async function add(context) {
113
116
  if (!text)
114
117
  throw new PtbkError('A task description is required.', { kind: 'usage', next: ['Pass it as an argument, use --stdin, or run interactively.'] });
115
118
  const split = splitTitle(text);
116
- const title = option(context, 'title') ?? split.title;
119
+ const baseTitle = option(context, 'title') ?? split.title;
117
120
  const description = option(context, 'title') ? text : split.description;
118
121
  const controls = controlLines(context, timeZone);
119
122
  if (context.options.__notReady)
120
123
  controls.push('TASK STATUS not-ready');
121
- const id = generateTaskId(title);
124
+ let commitments = controls;
122
125
  if (templateSource) {
123
126
  const keywordOf = (line) => matchCommitmentKeyword(line)?.definition.keyword;
124
- // A template is copied as new work: it never passes on a task ID.
127
+ // A template is copied as new work under a new generated name: it never passes on legacy identity metadata.
125
128
  const fromTemplate = parseBook(templateSource)
126
129
  .commitments.filter((commitment) => (commitment.keyword.startsWith('TASK ') && commitment.keyword !== 'TASK ID') || commitment.keyword === 'RULE')
127
- .map((commitment) => `${commitment.written} ${commitment.body}`.trim());
128
- const merged = [...controls, ...fromTemplate.filter((line) => keywordOf(line) === 'RULE' || !controls.some((control) => keywordOf(control) === keywordOf(line)))];
129
- content = renderTaskBook({ title, description: description || undefined, id, commitments: merged });
130
+ .flatMap((commitment) => renderCommitment(commitment.keyword, commitment.body));
131
+ commitments = [...controls, ...fromTemplate.filter((line) => keywordOf(line) === 'RULE' || !keywordOf(line) || !controls.some((control) => keywordOf(control) === keywordOf(line)))];
130
132
  }
131
- else
132
- content = renderTaskBook({ title, description: description || undefined, id, commitments: controls });
133
+ // The name is the task's identity: the readable title plus its creation date/time, distinct from every Book.
134
+ let title = await generatedTaskName(project, settings, baseTitle);
135
+ content = renderTaskBook({ title, description: description || undefined, commitments });
133
136
  const parsed = parseBook(content);
134
137
  if (parsed.kind !== 'task')
135
- throw new PtbkError('The task could not be rendered as a task Book.', { kind: 'internal' });
138
+ throw new PtbkError('The task could not be rendered as a task Book.', { kind: 'internal', reason: parsed.diagnostics.map((diagnostic) => diagnostic.message).join(' ') });
136
139
  if (terminal.interactive && flag(context, 'yes') !== true && !context.positionals.length && !flag(context, 'stdin')) {
137
140
  terminal.write(`\n${terminal.style.muted('─── preview ───')}\n${content}${terminal.style.muted('───────────────')}\n`);
138
141
  const ok = await confirm(terminal, { frame: { title: 'ptbk add', step: 'Confirm' }, question: `Save "${title}"${commit ? ' and commit it' : ' (uncommitted)'}?`, defaultYes: true });
@@ -142,13 +145,14 @@ export default async function add(context) {
142
145
  }
143
146
  }
144
147
  await ensureDirectory(tasksDirectory);
145
- const path = await newTaskPath(tasksDirectory, title, Date.now(), timeZone);
148
+ const path = await newTaskPath(tasksDirectory, baseTitle, Date.now(), timeZone);
146
149
  const summary = `Add task - ${title}`;
147
150
  const lookup = await lookupService(project);
148
151
  if (lookup.state === 'running') {
149
152
  // The running service writes and commits at a safe boundary, never folding it into an active task.
150
- const result = await lookup.client.request('add-task', { path, content, summary, commit, taskIds: [id] });
151
- report(context, project.root, result.path, result.commit, commit, title, id);
153
+ // The service rechecks the name at publication and reports the final one.
154
+ const result = await lookup.client.request('add-task', { path, content, summary, commit, taskNames: [title] });
155
+ report(context, project.root, result.path, result.commit, commit, result.names?.[0] ?? title);
152
156
  return EXIT.success;
153
157
  }
154
158
  const gitInfo = await inspectGit(project.root);
@@ -156,11 +160,17 @@ export default async function add(context) {
156
160
  throw new PtbkError('The project is not in a Git working tree, so the task cannot be committed.', { kind: 'setup', next: ['Run `ptbk init`, or use --no-commit.'] });
157
161
  const release = await acquireProjectLock(project, `add-${shortId()}`, 'authoring');
158
162
  try {
163
+ // Recheck at publication: another writer may have taken the name since the preview.
164
+ const taken = await projectTakenNames(project, settings);
165
+ if (taken.has(normalizeAgentName(title))) {
166
+ title = distinctName(title, taken);
167
+ content = renderTaskBook({ title, description: description || undefined, commitments });
168
+ }
159
169
  await writeFile(path, content, { flag: 'wx' });
160
170
  let sha;
161
171
  if (commit && gitInfo.state === 'repository') {
162
172
  try {
163
- const outcome = await commitPaths({ projectRoot: project.root, repositoryRoot: gitInfo.root, paths: [path], subject: summary, trailers: { 'Task-ID': id }, temporaryDirectory: project.runtime.temporary, env: context.env });
173
+ const outcome = await commitPaths({ projectRoot: project.root, repositoryRoot: gitInfo.root, paths: [path], subject: `Add task - ${title}`, trailers: { 'Task-Name': title }, temporaryDirectory: project.runtime.temporary, env: context.env });
164
174
  sha = outcome.committed ? outcome.sha : undefined;
165
175
  }
166
176
  catch (error) {
@@ -178,7 +188,7 @@ export default async function add(context) {
178
188
  const { hashFileIfExists } = await import('../../common/fs.js');
179
189
  await new StateStore(project.runtime.state).addOwnedUncommitted({ [toProjectRelative(project.root, path)]: (await hashFileIfExists(path)) ?? null });
180
190
  }
181
- report(context, project.root, path, sha, commit, title, id);
191
+ report(context, project.root, path, sha, commit, title);
182
192
  return EXIT.success;
183
193
  }
184
194
  catch (error) {
@@ -193,12 +203,12 @@ export default async function add(context) {
193
203
  /**
194
204
  * Reports the created task, its reference and commit.
195
205
  */
196
- function report(context, root, path, commit, commitMode, title, id) {
206
+ function report(context, root, path, commit, commitMode, title) {
197
207
  const relativePath = toProjectRelative(root, path);
198
208
  const { terminal } = context;
199
209
  const committed = commit ? `committed ${commit.slice(0, 8)} (PTBK: Add task - ${title})` : commitMode ? 'nothing to commit' : 'NOT committed (--no-commit): a default `ptbk start` treats it as an uncommitted source until you commit it';
200
210
  terminal.write(terminal.pretty
201
- ? `${terminal.style.success('✔')} Added ${terminal.style.bold(title)}\n ${terminal.style.muted(`${relativePath} · Task-ID ${id}`)} · ${committed}\n`
202
- : `Added task "${title}" (Task-ID ${id}) at ${relativePath}; ${committed}\n`);
211
+ ? `${terminal.style.success('✔')} Added ${terminal.style.bold(title)}\n ${terminal.style.muted(`${relativePath} · ${nameReference(title)}`)} · ${committed}\n`
212
+ : `Added task "${title}" (${nameReference(title)}) at ${relativePath}; ${committed}\n`);
203
213
  }
204
214
  //# sourceMappingURL=add.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AACnG,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACjF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAClF,OAAO,EAAE,IAAI,EAAE,MAAM,EAAuB,MAAM,eAAe,CAAC;AAElE;;GAEG;AACH,SAAS,YAAY,CAAC,OAAuB,EAAE,QAAgB;IAC3D,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,MAAM,CAAS,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;IAC9I,IAAI,MAAM,CAAS,OAAO,EAAE,SAAS,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,MAAM,CAAS,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IACzG,IAAI,MAAM,CAAS,OAAO,EAAE,OAAO,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,MAAM,CAAS,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IACnG,IAAI,MAAM,CAAS,OAAO,EAAE,gBAAgB,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,MAAM,CAAS,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,CAAC;IAC9H,IAAI,MAAM,CAAS,OAAO,EAAE,UAAU,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAS,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;IAC5G,MAAM,KAAK,GAAG,MAAM,CAAS,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/C,IAAI,KAAK,EAAE,CAAC;QACR,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,YAAY,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACpF,KAAK,CAAC,IAAI,CAAC,cAAc,KAAK,EAAE,CAAC,CAAC;IACtC,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAS,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAI,MAAM,EAAE,CAAC;QACT,MAAM,MAAM,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,MAAM,IAAI,SAAS,CAAC,aAAa,MAAM,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACrF,KAAK,CAAC,IAAI,CAAC,eAAe,MAAM,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,GAAG,CAAC,OAAuB;IACrD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,OAAO,CAAS,QAAQ,EAAE,UAAU,CAAC,CAAC;IACvD,MAAM,cAAc,GAAG,MAAM,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;IAChF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,OAAO,CAAU,QAAQ,EAAE,kBAAkB,CAAC,CAAC;IACzF,IAAI,IAAI,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAChD,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QAAE,IAAI,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAC9D,IAAI,OAAe,CAAC;IACpB,MAAM,YAAY,GAAG,MAAM,CAAS,OAAO,EAAE,UAAU,CAAC,CAAC;IACzD,IAAI,cAAkC,CAAC;IACvC,IAAI,YAAY,EAAE,CAAC;QACf,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,EAAE,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,YAAY,OAAO,CAAC,CAAC;QAC/H,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACpC,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;YAC7K,MAAM,IAAI,SAAS,CAAC,aAAa,YAAY,mBAAmB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,uCAAuC,CAAC,EAAE,CAAC,CAAC;QAC/M,CAAC;QACD,cAAc,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IACD,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,QAAQ,EAAE;YACtC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,aAAa,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE;YACnH,QAAQ,EAAE,qDAAqD;YAC/D,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,OAAO,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;YACrH,WAAW,EAAE,gFAAgF;YAC7F,QAAQ,EAAE,IAAI;SACjB,CAAC,CAAC;QACH,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACtB,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;QACD,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACpB,IAAI,MAAM,CAAS,OAAO,EAAE,UAAU,CAAC,KAAK,SAAS,EAAE,CAAC;YACpD,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;gBACvC,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE;gBAC9C,QAAQ,EAAE,WAAW;gBACrB,OAAO,EAAE;oBACL,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE;oBACpC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,UAAU,EAAE;oBACjC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,YAAY,EAAE;oBACnC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,8BAA8B,EAAE;iBAChE;gBACD,YAAY,EAAE,EAAE;aACnB,CAAC,CAAC;YACH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACzB,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;gBACpD,OAAO,IAAI,CAAC,UAAU,CAAC;YAC3B,CAAC;YACD,IAAI,QAAQ,KAAK,WAAW;gBAAG,OAAO,CAAC,OAAmC,CAAC,UAAU,GAAG,IAAI,CAAC;iBACxF,IAAI,QAAQ;gBAAG,OAAO,CAAC,OAAmC,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACxF,CAAC;IACL,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,MAAM,IAAI,SAAS,CAAC,iCAAiC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,4DAA4D,CAAC,EAAE,CAAC,CAAC;IAC3J,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,MAAM,CAAS,OAAO,EAAE,OAAO,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC;IAC9D,MAAM,WAAW,GAAG,MAAM,CAAS,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;IAChF,MAAM,QAAQ,GAAG,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACjD,IAAK,OAAO,CAAC,OAAmC,CAAC,UAAU;QAAE,QAAQ,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACpG,MAAM,EAAE,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,cAAc,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,CAAC,IAAY,EAAsB,EAAE,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC;QACzG,kEAAkE;QAClE,MAAM,YAAY,GAAG,SAAS,CAAC,cAAc,CAAC;aACzC,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,CAAC,IAAI,UAAU,CAAC,OAAO,KAAK,MAAM,CAAC;aACjJ,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,GAAG,UAAU,CAAC,OAAO,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5E,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAClK,OAAO,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,CAAC,CAAC;IACxG,CAAC;;QAAM,OAAO,GAAG,cAAc,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,IAAI,SAAS,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7G,MAAM,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,MAAM,CAAC,IAAI,KAAK,MAAM;QAAE,MAAM,IAAI,SAAS,CAAC,gDAAgD,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACxH,IAAI,QAAQ,CAAC,WAAW,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC;QAClH,QAAQ,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACvH,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,QAAQ,EAAE,SAAS,KAAK,IAAI,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QACrL,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACd,QAAQ,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;IACL,CAAC;IACD,MAAM,eAAe,CAAC,cAAc,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,cAAc,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,cAAc,KAAK,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,mGAAmG;QACnG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAoC,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC7I,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7E,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY;QAAE,MAAM,IAAI,SAAS,CAAC,4EAA4E,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,sCAAsC,CAAC,EAAE,CAAC,CAAC;IACnN,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,OAAO,EAAE,OAAO,OAAO,EAAE,EAAE,EAAE,WAAW,CAAC,CAAC;IACnF,IAAI,CAAC;QACD,MAAM,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,IAAI,GAAuB,CAAC;QAC5B,IAAI,MAAM,IAAI,OAAO,CAAC,KAAK,KAAK,YAAY,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,EAAE,EAAE,EAAE,kBAAkB,EAAE,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC9N,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,IAAI,SAAS,CAAC,iDAAiD,EAAE;oBACnE,IAAI,EAAE,aAAa;oBACnB,OAAO,EAAE,OAAO,CAAC,IAAI;oBACrB,MAAM,EAAG,KAAmB,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC;oBAC7D,SAAS,EAAE,GAAG,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,sCAAsC;oBACzF,IAAI,EAAE,CAAC,oEAAoE,CAAC;iBAC/E,CAAC,CAAC;YACP,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,uBAAuB,CAAC,CAAC;YAC7D,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;YAChE,MAAM,IAAI,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;QACzJ,CAAC;QACD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,CAAC,KAAK,YAAY,SAAS,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/F,MAAM,KAAK,CAAC;IAChB,CAAC;YAAS,CAAC;QACP,MAAM,OAAO,EAAE,CAAC;IACpB,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAS,MAAM,CAAC,OAAuB,EAAE,IAAY,EAAE,IAAY,EAAE,MAA0B,EAAE,UAAmB,EAAE,KAAa,EAAE,EAAU;IAC3I,MAAM,YAAY,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,sBAAsB,KAAK,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,4GAA4G,CAAC;IAC3O,QAAQ,CAAC,KAAK,CACV,QAAQ,CAAC,MAAM;QACX,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,YAAY,cAAc,EAAE,EAAE,CAAC,MAAM,SAAS,IAAI;QACrJ,CAAC,CAAC,eAAe,KAAK,cAAc,EAAE,QAAQ,YAAY,KAAK,SAAS,IAAI,CACnF,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type CommandContext } from '../context.js';
2
2
  /**
3
- * `ptbk answer`: list pending requests and answer one exactly once (works without HTTP or a running service).
3
+ * `ptbk answer`: list chats whose agent waits for the user and append one answer (compatibility entry point for
4
+ * former requests; the answer is an ordinary committed chat message).
4
5
  *
5
6
  * @private command
6
7
  */
@@ -1,79 +1,73 @@
1
1
  import { EXIT, PtbkError } from '../../common/errors.js';
2
- import { RequestStore } from '../../engine/requests.js';
3
- import { lookupService } from '../../service/control.js';
4
2
  import { CANCELLED, composeText, selectOne } from '../../ui/prompts.js';
3
+ import { openChatSource } from '../chats.js';
5
4
  import { printJson, readStdin, selectedProject } from '../common.js';
6
5
  import { flag } from '../context.js';
7
6
  /**
8
- * `ptbk answer`: list pending requests and answer one exactly once (works without HTTP or a running service).
7
+ * `ptbk answer`: list chats whose agent waits for the user and append one answer (compatibility entry point for
8
+ * former requests; the answer is an ordinary committed chat message).
9
9
  *
10
10
  * @private command
11
11
  */
12
12
  export default async function answer(context) {
13
- const project = await selectedProject(context);
14
- const store = new RequestStore(project.runtime.requests);
15
- const lookup = await lookupService(project);
16
- const apply = async (id, value, status) => {
17
- if (lookup.state === 'running')
18
- return await lookup.client.request('answer', { id, answer: value, status, via: 'cli' });
19
- return await store.resolve(id, { status, answer: value, via: 'cli' });
20
- };
21
13
  const { terminal } = context;
22
- let [id, ...rest] = context.positionals;
14
+ const project = await selectedProject(context);
15
+ // Answers resume waiting work; they do not start a conversation turn in this process.
16
+ const { source, service } = await openChatSource(context, project, { replies: false });
17
+ let [name, ...rest] = context.positionals;
23
18
  let value = rest.join(' ');
24
19
  if (flag(context, 'stdin'))
25
20
  value = (await readStdin()).replace(/\s+$/, '');
26
- const pending = await store.list({ status: 'pending' });
27
- if (!id) {
21
+ const waiting = (await source.list()).filter((chat) => chat.status === 'waiting-for-user' && chat.humanFacing);
22
+ if (!name) {
28
23
  if (flag(context, 'json')) {
29
- printJson(pending);
24
+ printJson(waiting);
30
25
  return EXIT.success;
31
26
  }
32
- if (!pending.length) {
33
- terminal.write('No pending requests.\n');
27
+ if (!waiting.length) {
28
+ terminal.write('No agent is waiting for you.\n');
34
29
  return EXIT.success;
35
30
  }
36
31
  if (!terminal.interactive) {
37
- for (const request of pending) {
38
- terminal.write(`${request.id}${request.blocking ? ' [blocking]' : ''}: ${request.reason}\n ${request.question.replace(/\n/g, '\n ')}\n${request.choices?.length ? ` Choices: ${request.choices.join(' | ')}\n` : ''} Answer: ptbk answer ${request.id} "<answer>"\n`);
32
+ for (const chat of waiting) {
33
+ terminal.write(`${chat.name}\n ${chat.awaiting?.sender ?? chat.agent ?? 'agent'}: ${(chat.awaiting?.text ?? '').replace(/\n/g, '\n ')}\n${chat.awaiting?.choices?.length ? ` Choices: ${chat.awaiting.choices.join(' | ')}\n` : ''}${chat.links.length ? ` Links: ${chat.links.join(', ')}\n` : ''} Answer: ptbk answer "${chat.name}" "<answer>"\n`);
39
34
  }
40
35
  return EXIT.success;
41
36
  }
42
37
  const chosen = await selectOne(terminal, {
43
- frame: { title: 'ptbk answer', step: `${pending.length} pending request(s)` },
44
- question: 'Which request do you want to answer?',
45
- choices: pending.map((request) => ({ value: request.id, label: request.reason, description: `${request.id}${request.origin.taskTitle ? ` · ${request.origin.taskTitle}` : ''}` })),
46
- defaultValue: pending[0].id,
38
+ frame: { title: 'ptbk answer', step: `${waiting.length} waiting chat(s)` },
39
+ question: 'Which conversation do you want to answer?',
40
+ choices: waiting.map((chat) => ({ value: chat.name, label: chat.name, description: `${chat.awaiting?.sender ?? chat.agent ?? ''}${chat.links.length ? ` · ${chat.links.join(', ')}` : ''}` })),
41
+ defaultValue: waiting[0].name,
47
42
  });
48
43
  if (chosen === CANCELLED)
49
44
  return EXIT.incomplete;
50
- id = chosen;
45
+ name = chosen;
51
46
  }
52
- const request = await store.get(id);
53
- if (!request)
54
- throw new PtbkError(`Request ${id} does not exist.`, { kind: 'not-found', next: ['Run `ptbk answer` to list pending requests.'] });
55
- if (request.status !== 'pending')
56
- throw new PtbkError(`Request ${id} was already ${request.status}.`, { kind: 'conflict', reason: request.answer ? `Recorded answer: ${request.answer}` : undefined, effect: 'Nothing was changed.' });
57
- if (flag(context, 'decline')) {
58
- await apply(id, value || 'Declined by the user.', 'rejected');
59
- terminal.write(`Declined ${id}.\n`);
60
- return EXIT.success;
47
+ const detail = await source.get(name);
48
+ if (detail.summary.status !== 'waiting-for-user' || !detail.summary.awaiting) {
49
+ throw new PtbkError(`The chat "${detail.summary.name}" does not wait for an answer (${detail.summary.status}).`, { kind: 'conflict', effect: 'Nothing was saved.', next: [`Continue the conversation with \`ptbk chat --open "${detail.summary.name}"\`.`] });
61
50
  }
51
+ const { awaiting } = detail.summary;
62
52
  if (!value) {
63
53
  if (!terminal.interactive)
64
- throw new PtbkError('An answer is required.', { kind: 'usage', next: [`Run \`ptbk answer ${id} "<answer>"\` or use --stdin.`] });
65
- terminal.write(`${terminal.style.bold(request.reason)}\n${request.question}\n\n`);
66
- const response = request.choices?.length
67
- ? await selectOne(terminal, { frame: { title: 'ptbk answer', step: id }, question: 'Your answer:', choices: request.choices.map((choice) => ({ value: choice, label: choice })) })
68
- : await composeText(terminal, { frame: { title: 'ptbk answer', step: id }, question: 'Your answer:', required: true });
54
+ throw new PtbkError('An answer is required.', { kind: 'usage', next: [`Run \`ptbk answer "${detail.summary.name}" "<answer>"\` or use --stdin.`] });
55
+ terminal.write(`${terminal.style.bold(awaiting.sender)}\n${awaiting.text}\n\n`);
56
+ const response = awaiting.choices?.length
57
+ ? await selectOne(terminal, { frame: { title: 'ptbk answer', step: detail.summary.name }, question: 'Your answer:', choices: awaiting.choices.map((choice) => ({ value: choice, label: choice })) })
58
+ : await composeText(terminal, { frame: { title: 'ptbk answer', step: detail.summary.name }, question: 'Your answer:', required: true });
69
59
  if (response === CANCELLED) {
70
- terminal.write('Not answered; the request stays pending.\n');
60
+ terminal.write('Not answered; the chat keeps waiting.\n');
71
61
  return EXIT.incomplete;
72
62
  }
73
63
  value = response;
74
64
  }
75
- const resolved = await apply(id, value, 'answered');
76
- terminal.write(`Answered ${resolved.id}.${lookup.state === 'running' ? ' The service continues the affected work.' : ' The affected work continues on the next `ptbk start` or `ptbk run`.'}\n`);
65
+ // A predefined decision accepts only its offered answers here; questions belong in `ptbk chat --open`.
66
+ if (awaiting.choices?.length && !awaiting.choices.includes(value.trim())) {
67
+ throw new PtbkError(`"${value}" is not one of the offered answers.`, { kind: 'usage', reason: `Choose one of: ${awaiting.choices.join(' | ')}`, effect: 'Nothing was saved.', next: [`Ask a clarifying question with \`ptbk chat --open "${detail.summary.name}"\`.`] });
68
+ }
69
+ const sent = await source.send(detail.summary.name, value, detail.messages.length);
70
+ terminal.write(`Answered in {{${sent.name}}}${sent.commit ? ` (${sent.commit.slice(0, 8)})` : ''}.${service ? ' The service continues the affected work.' : ' The affected work continues on the next `ptbk start` or `ptbk run`.'}\n`);
77
71
  return EXIT.success;
78
72
  }
79
73
  //# sourceMappingURL=answer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../../src/cli/commands/answer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAoB,MAAM,0BAA0B,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACxE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,IAAI,EAAuB,MAAM,eAAe,CAAC;AAE1D;;;;GAIG;AACH,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,MAAM,CAAC,OAAuB;IACxD,MAAM,OAAO,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,KAAK,GAAG,KAAK,EAAE,EAAU,EAAE,KAAa,EAAE,MAA+B,EAAwB,EAAE;QACrG,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,MAAM,MAAM,CAAC,MAAM,CAAC,OAAO,CAAc,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACrI,OAAO,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC,CAAC;IACF,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;IAC7B,IAAI,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC;IACxC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QAAE,KAAK,GAAG,CAAC,MAAM,SAAS,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5E,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,EAAE,CAAC;QACN,IAAI,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC;YACxB,SAAS,CAAC,OAAO,CAAC,CAAC;YACnB,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClB,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;YACxB,KAAK,MAAM,OAAO,IAAI,OAAO,EAAE,CAAC;gBAC5B,QAAQ,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,MAAM,OAAO,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,yBAAyB,OAAO,CAAC,EAAE,eAAe,CAAC,CAAC;YAC9Q,CAAC;YACD,OAAO,IAAI,CAAC,OAAO,CAAC;QACxB,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,QAAQ,EAAE;YACrC,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,MAAM,qBAAqB,EAAE;YAC7E,QAAQ,EAAE,sCAAsC;YAChD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAClL,YAAY,EAAE,OAAO,CAAC,CAAC,CAAE,CAAC,EAAE;SAC/B,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,IAAI,CAAC,UAAU,CAAC;QACjD,EAAE,GAAG,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACpC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,kBAAkB,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,6CAA6C,CAAC,EAAE,CAAC,CAAC;IACjJ,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,WAAW,EAAE,gBAAgB,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,oBAAoB,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACvO,IAAI,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;QAC3B,MAAM,KAAK,CAAC,EAAE,EAAE,KAAK,IAAI,uBAAuB,EAAE,UAAU,CAAC,CAAC;QAC9D,QAAQ,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACpC,OAAO,IAAI,CAAC,OAAO,CAAC;IACxB,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACT,IAAI,CAAC,QAAQ,CAAC,WAAW;YAAE,MAAM,IAAI,SAAS,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,qBAAqB,EAAE,+BAA+B,CAAC,EAAE,CAAC,CAAC;QAC5J,QAAQ,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,QAAQ,MAAM,CAAC,CAAC;QAClF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM;YACpC,CAAC,CAAC,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;YAClL,CAAC,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3H,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACzB,QAAQ,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;QACD,KAAK,GAAG,QAAQ,CAAC;IACrB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,EAAE,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IACpD,QAAQ,CAAC,KAAK,CAAC,YAAY,QAAQ,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,2CAA2C,CAAC,CAAC,CAAC,sEAAsE,IAAI,CAAC,CAAC;IACjM,OAAO,IAAI,CAAC,OAAO,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"answer.js","sourceRoot":"","sources":["../../../src/cli/commands/answer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { type CommandContext } from '../context.js';
2
+ /**
3
+ * `ptbk ask`: a quick question to one agent, as an ordinary persistent chat (no separate request model).
4
+ *
5
+ * @private command
6
+ */
7
+ export default function ask(context: CommandContext): Promise<number>;
@@ -0,0 +1,37 @@
1
+ import { EXIT, PtbkError } from '../../common/errors.js';
2
+ import { loadSettings, setting } from '../../project/config.js';
3
+ import { explicitChatAgent, openChatSource, waitForReply } from '../chats.js';
4
+ import { readStdin, selectedProject, settingOverrides } from '../common.js';
5
+ import { option, flag } from '../context.js';
6
+ /**
7
+ * Longest wait for the agent's answer.
8
+ */
9
+ const ANSWER_WAIT_MS = 10 * 60_000;
10
+ /**
11
+ * `ptbk ask`: a quick question to one agent, as an ordinary persistent chat (no separate request model).
12
+ *
13
+ * @private command
14
+ */
15
+ export default async function ask(context) {
16
+ const { terminal } = context;
17
+ const project = await selectedProject(context);
18
+ let question = context.positionals.join(' ');
19
+ if (flag(context, 'stdin'))
20
+ question = (await readStdin()).replace(/\s+$/, '');
21
+ if (!question.trim())
22
+ throw new PtbkError('A question is required.', { kind: 'usage', next: ['Run `ptbk ask "What is the state of the CSV export?"`.'] });
23
+ const settings = await loadSettings(project, { env: context.env, cli: settingOverrides(context) });
24
+ let replyError;
25
+ const { source } = await openChatSource(context, project, { onReplyError: (error) => (replyError = error) });
26
+ const agent = explicitChatAgent(await source.agents(), option(context, 'agent') ?? setting(settings, 'routing.defaultAgent'));
27
+ const created = await source.create(agent.reference, question, option(context, 'title'));
28
+ terminal.write(terminal.style.muted(`Asked ${agent.reference} in the chat {{${created.name}}}${created.commit ? ` (${created.commit.slice(0, 8)})` : ''}; waiting for the answer…\n`));
29
+ const reply = await waitForReply(source, created.name, 1, ANSWER_WAIT_MS, () => replyError);
30
+ if (!reply) {
31
+ terminal.write(`No answer yet${replyError ? `: ${replyError}` : ''}. The chat stays saved; continue with \`ptbk chat --open "${created.name}"\`.\n`);
32
+ return EXIT.incomplete;
33
+ }
34
+ terminal.write(`\n${reply.text}\n\n${terminal.style.muted(`— ${reply.sender} · continue with \`ptbk chat --open "${created.name}"\``)}\n`);
35
+ return EXIT.success;
36
+ }
37
+ //# sourceMappingURL=ask.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask.js","sourceRoot":"","sources":["../../../src/cli/commands/ask.ts"],"names":[],"mappings":"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"}