ptbk 0.119.0-17 → 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.
- package/README.md +27 -9
- package/dist/book/commitments.d.ts +38 -10
- package/dist/book/commitments.js +61 -17
- package/dist/book/commitments.js.map +1 -1
- package/dist/book/convert.d.ts +36 -0
- package/dist/book/convert.js +156 -0
- package/dist/book/convert.js.map +1 -0
- package/dist/book/parse.d.ts +50 -13
- package/dist/book/parse.js +132 -45
- package/dist/book/parse.js.map +1 -1
- package/dist/book/references.d.ts +12 -4
- package/dist/book/references.js +34 -9
- package/dist/book/references.js.map +1 -1
- package/dist/book/write.d.ts +42 -0
- package/dist/book/write.js +74 -0
- package/dist/book/write.js.map +1 -0
- package/dist/browser/browser.d.ts +122 -12
- package/dist/browser/browser.js +372 -21
- package/dist/browser/browser.js.map +1 -1
- package/dist/browser/recording.d.ts +3 -3
- package/dist/browser/recording.js +5 -5
- package/dist/browser/recording.js.map +1 -1
- package/dist/chats/chat-book.d.ts +105 -0
- package/dist/chats/chat-book.js +180 -0
- package/dist/chats/chat-book.js.map +1 -0
- package/dist/chats/conversation.d.ts +54 -0
- package/dist/chats/conversation.js +188 -0
- package/dist/chats/conversation.js.map +1 -0
- package/dist/chats/local.d.ts +46 -0
- package/dist/chats/local.js +184 -0
- package/dist/chats/local.js.map +1 -0
- package/dist/chats/migration.d.ts +12 -0
- package/dist/chats/migration.js +62 -0
- package/dist/chats/migration.js.map +1 -0
- package/dist/chats/service.d.ts +81 -0
- package/dist/chats/service.js +122 -0
- package/dist/chats/service.js.map +1 -0
- package/dist/chats/store.d.ts +132 -0
- package/dist/chats/store.js +181 -0
- package/dist/chats/store.js.map +1 -0
- package/dist/chats/task-chats.d.ts +52 -0
- package/dist/chats/task-chats.js +96 -0
- package/dist/chats/task-chats.js.map +1 -0
- package/dist/cli/chats.d.ts +45 -0
- package/dist/cli/chats.js +108 -0
- package/dist/cli/chats.js.map +1 -0
- package/dist/cli/commands/add.js +32 -22
- package/dist/cli/commands/add.js.map +1 -1
- package/dist/cli/commands/answer.d.ts +2 -1
- package/dist/cli/commands/answer.js +35 -41
- package/dist/cli/commands/answer.js.map +1 -1
- package/dist/cli/commands/ask.d.ts +7 -0
- package/dist/cli/commands/ask.js +37 -0
- package/dist/cli/commands/ask.js.map +1 -0
- package/dist/cli/commands/boilerplates.js +14 -3
- package/dist/cli/commands/boilerplates.js.map +1 -1
- package/dist/cli/commands/chat.d.ts +9 -0
- package/dist/cli/commands/chat.js +89 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/dashboard.d.ts +3 -1
- package/dist/cli/commands/dashboard.js +41 -3
- package/dist/cli/commands/dashboard.js.map +1 -1
- package/dist/cli/commands/find.js +6 -8
- package/dist/cli/commands/find.js.map +1 -1
- package/dist/cli/commands/fix.js +4 -6
- package/dist/cli/commands/fix.js.map +1 -1
- package/dist/cli/commands/init.d.ts +0 -1
- package/dist/cli/commands/init.js +38 -38
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/lint.js +16 -2
- package/dist/cli/commands/lint.js.map +1 -1
- package/dist/cli/commands/list.js +21 -13
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +2 -1
- package/dist/cli/commands/migrate.js +70 -24
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/pause.d.ts +8 -0
- package/dist/cli/commands/pause.js +40 -0
- package/dist/cli/commands/pause.js.map +1 -0
- package/dist/cli/commands/plan.js +6 -9
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/recover.js +7 -3
- package/dist/cli/commands/recover.js.map +1 -1
- package/dist/cli/commands/restart.d.ts +3 -1
- package/dist/cli/commands/restart.js +74 -18
- package/dist/cli/commands/restart.js.map +1 -1
- package/dist/cli/commands/resume.d.ts +8 -0
- package/dist/cli/commands/resume.js +15 -0
- package/dist/cli/commands/resume.js.map +1 -0
- package/dist/cli/commands/run.js +6 -9
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/start.js +40 -36
- package/dist/cli/commands/start.js.map +1 -1
- package/dist/cli/commands/status.d.ts +2 -1
- package/dist/cli/commands/status.js +5 -1
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/stop.d.ts +3 -1
- package/dist/cli/commands/stop.js +18 -8
- package/dist/cli/commands/stop.js.map +1 -1
- package/dist/cli/commands/verify.js +7 -7
- package/dist/cli/commands/verify.js.map +1 -1
- package/dist/cli/common.d.ts +13 -0
- package/dist/cli/common.js +22 -0
- package/dist/cli/common.js.map +1 -1
- package/dist/cli/engine-delegation.d.ts +14 -0
- package/dist/cli/engine-delegation.js +46 -0
- package/dist/cli/engine-delegation.js.map +1 -0
- package/dist/cli/lifecycle.d.ts +40 -0
- package/dist/cli/lifecycle.js +71 -0
- package/dist/cli/lifecycle.js.map +1 -0
- package/dist/cli/registry.js +113 -31
- package/dist/cli/registry.js.map +1 -1
- package/dist/cli/service-view.d.ts +14 -2
- package/dist/cli/service-view.js +46 -5
- package/dist/cli/service-view.js.map +1 -1
- package/dist/cli/sources.js +5 -8
- package/dist/cli/sources.js.map +1 -1
- package/dist/cli/spec.js +1 -1
- package/dist/cli/spec.js.map +1 -1
- package/dist/common/app-data.d.ts +9 -0
- package/dist/common/app-data.js +20 -0
- package/dist/common/app-data.js.map +1 -0
- package/dist/common/errors.d.ts +2 -0
- package/dist/common/errors.js.map +1 -1
- package/dist/common/time.d.ts +6 -0
- package/dist/common/time.js +9 -0
- package/dist/common/time.js.map +1 -1
- package/dist/engine/agenda.d.ts +213 -43
- package/dist/engine/agenda.js +846 -260
- package/dist/engine/agenda.js.map +1 -1
- package/dist/engine/executor.d.ts +23 -7
- package/dist/engine/executor.js +131 -84
- package/dist/engine/executor.js.map +1 -1
- package/dist/engine/generated.d.ts +21 -1
- package/dist/engine/generated.js +36 -21
- package/dist/engine/generated.js.map +1 -1
- package/dist/engine/preview.js +10 -10
- package/dist/engine/preview.js.map +1 -1
- package/dist/engine/prompt.d.ts +16 -4
- package/dist/engine/prompt.js +22 -4
- package/dist/engine/prompt.js.map +1 -1
- package/dist/engine/routing.js +28 -4
- package/dist/engine/routing.js.map +1 -1
- package/dist/engine/snapshot.d.ts +178 -29
- package/dist/engine/state.d.ts +40 -13
- package/dist/engine/state.js +20 -5
- package/dist/engine/state.js.map +1 -1
- package/dist/engine/task-trace.d.ts +35 -7
- package/dist/engine/task-trace.js +74 -15
- package/dist/engine/task-trace.js.map +1 -1
- package/dist/engine/team.d.ts +20 -7
- package/dist/engine/team.js +30 -24
- package/dist/engine/team.js.map +1 -1
- package/dist/engine/traces.d.ts +1 -1
- package/dist/engine/traces.js +1 -1
- package/dist/expert/_main.md +67 -52
- package/dist/expert/agents/_index.md +11 -13
- package/dist/expert/agents/chatter.md +31 -0
- package/dist/expert/agents/consistency.md +6 -11
- package/dist/expert/agents/core-agents.md +9 -7
- package/dist/expert/agents/expert.md +1 -1
- package/dist/expert/agents/fixer.md +24 -0
- package/dist/expert/agents/learning.md +1 -1
- package/dist/expert/agents/non-agents.md +2 -2
- package/dist/expert/agents/visual-identity.md +4 -4
- package/dist/expert/book-language/_index.md +9 -8
- package/dist/expert/book-language/commitments/_index.md +23 -3
- package/dist/expert/book-language/commitments/agent.md +11 -0
- package/dist/expert/book-language/commitments/chat-member.md +7 -0
- package/dist/expert/book-language/commitments/chat-message.md +11 -0
- package/dist/expert/book-language/commitments/chat-status.md +7 -0
- package/dist/expert/book-language/commitments/chat.md +11 -0
- package/dist/expert/book-language/commitments/entity.md +9 -0
- package/dist/expert/book-language/commitments/goal.md +6 -2
- package/dist/expert/book-language/commitments/link.md +9 -0
- package/dist/expert/book-language/commitments/task-depends-on.md +1 -1
- package/dist/expert/book-language/commitments/task-parent.md +1 -1
- package/dist/expert/book-language/commitments/task.md +7 -3
- package/dist/expert/book-language/commitments/team.md +1 -1
- package/dist/expert/book-language/references.md +20 -83
- package/dist/expert/book-language/syntax.md +54 -11
- package/dist/expert/cli/acceptance.md +59 -24
- package/dist/expert/cli/api.md +23 -9
- package/dist/expert/cli/authoring.md +6 -4
- package/dist/expert/cli/autonomous-operation.md +3 -3
- package/dist/expert/cli/browser.md +29 -18
- package/dist/expert/cli/channels.md +5 -7
- package/dist/expert/cli/chat-ui.md +32 -0
- package/dist/expert/cli/chats.md +59 -0
- package/dist/expert/cli/cli.md +44 -26
- package/dist/expert/cli/configuration.md +3 -3
- package/dist/expert/cli/controls.md +13 -7
- package/dist/expert/cli/dashboard-details.md +23 -0
- package/dist/expert/cli/dashboard-layout.md +19 -12
- package/dist/expert/cli/dashboard.md +12 -8
- package/dist/expert/cli/execution.md +8 -6
- package/dist/expert/cli/first-task.md +4 -4
- package/dist/expert/cli/generated-names.md +44 -0
- package/dist/expert/cli/git-persistence.md +19 -17
- package/dist/expert/cli/global-dashboard.md +33 -0
- package/dist/expert/cli/goal-discovery.md +1 -1
- package/dist/expert/cli/help.md +1 -1
- package/dist/expert/cli/initialization-ui.md +2 -0
- package/dist/expert/cli/initialization.md +9 -7
- package/dist/expert/cli/interactive-ui.md +9 -5
- package/dist/expert/cli/locking.md +21 -0
- package/dist/expert/cli/migration.md +22 -6
- package/dist/expert/cli/process-modes.md +21 -13
- package/dist/expert/cli/recovery.md +8 -6
- package/dist/expert/cli/recurrence.md +1 -1
- package/dist/expert/cli/rich-input.md +2 -2
- package/dist/expert/cli/service-lifecycle.md +57 -0
- package/dist/expert/cli/start.md +2 -2
- package/dist/expert/cli/status-view.md +16 -12
- package/dist/expert/cli/task-books.md +11 -15
- package/dist/expert/cli/task-identity.md +8 -10
- package/dist/expert/cli/task-markdown.md +6 -10
- package/dist/expert/cli/task-origins.md +3 -1
- package/dist/expert/cli/task-relationships.md +5 -9
- package/dist/expert/cli/team.md +17 -7
- package/dist/expert/cli/terminal.md +20 -12
- package/dist/expert/cli/trace-configuration.md +1 -1
- package/dist/expert/cli/traces.md +19 -23
- package/dist/expert/cli/user-interactions.md +14 -26
- package/dist/expert/cli/workspace.md +15 -9
- package/dist/expert/concepts/engine-and-project.md +11 -0
- package/dist/expert/concepts/project-model.md +39 -0
- package/dist/expert/dictionary.md +21 -15
- package/dist/harness/plugins/claude-code/index.js +1 -0
- package/dist/harness/plugins/claude-code/index.js.map +1 -1
- package/dist/harness/plugins/cline/index.js +1 -0
- package/dist/harness/plugins/cline/index.js.map +1 -1
- package/dist/harness/plugins/openai-codex/index.js +1 -0
- package/dist/harness/plugins/openai-codex/index.js.map +1 -1
- package/dist/harness/plugins/opencode/index.js +1 -0
- package/dist/harness/plugins/opencode/index.js.map +1 -1
- package/dist/harness/types.d.ts +3 -1
- package/dist/project/agents.d.ts +29 -81
- package/dist/project/agents.js +47 -266
- package/dist/project/agents.js.map +1 -1
- package/dist/project/books.d.ts +150 -0
- package/dist/project/books.js +253 -0
- package/dist/project/books.js.map +1 -0
- package/dist/project/config.js +2 -2
- package/dist/project/config.js.map +1 -1
- package/dist/project/defaults.d.ts +33 -5
- package/dist/project/defaults.js +67 -36
- package/dist/project/defaults.js.map +1 -1
- package/dist/project/expert.js +17 -9
- package/dist/project/expert.js.map +1 -1
- package/dist/project/git.d.ts +4 -3
- package/dist/project/git.js +16 -5
- package/dist/project/git.js.map +1 -1
- package/dist/project/setup.d.ts +4 -1
- package/dist/project/setup.js +26 -6
- package/dist/project/setup.js.map +1 -1
- package/dist/service/actions.d.ts +34 -10
- package/dist/service/actions.js +51 -19
- package/dist/service/actions.js.map +1 -1
- package/dist/service/control.d.ts +53 -1
- package/dist/service/control.js +64 -4
- package/dist/service/control.js.map +1 -1
- package/dist/service/discovery.d.ts +133 -0
- package/dist/service/discovery.js +138 -0
- package/dist/service/discovery.js.map +1 -0
- package/dist/service/host.d.ts +8 -1
- package/dist/service/host.js +65 -18
- package/dist/service/host.js.map +1 -1
- package/dist/service/http.d.ts +3 -0
- package/dist/service/http.js +26 -6
- package/dist/service/http.js.map +1 -1
- package/dist/service/launcher.d.ts +66 -13
- package/dist/service/launcher.js +78 -18
- package/dist/service/launcher.js.map +1 -1
- package/dist/service/records.d.ts +12 -2
- package/dist/service/records.js +19 -5
- package/dist/service/records.js.map +1 -1
- package/dist/service/spa/app.css +83 -2
- package/dist/service/spa/app.js +393 -72
- package/dist/service/supervisor.js +7 -1
- package/dist/service/supervisor.js.map +1 -1
- package/dist/service/worker.js +14 -5
- package/dist/service/worker.js.map +1 -1
- package/dist/tasks/authoring.d.ts +3 -5
- package/dist/tasks/authoring.js +6 -7
- package/dist/tasks/authoring.js.map +1 -1
- package/dist/tasks/book-task.d.ts +18 -10
- package/dist/tasks/book-task.js +27 -23
- package/dist/tasks/book-task.js.map +1 -1
- package/dist/tasks/eligibility.d.ts +15 -7
- package/dist/tasks/eligibility.js +41 -14
- package/dist/tasks/eligibility.js.map +1 -1
- package/dist/tasks/identity.d.ts +41 -15
- package/dist/tasks/identity.js +100 -31
- package/dist/tasks/identity.js.map +1 -1
- package/dist/tasks/markdown.d.ts +7 -14
- package/dist/tasks/markdown.js +15 -29
- package/dist/tasks/markdown.js.map +1 -1
- package/dist/tasks/model.d.ts +20 -4
- package/dist/tasks/model.js +17 -0
- package/dist/tasks/model.js.map +1 -1
- package/dist/tasks/sources.d.ts +7 -2
- package/dist/tasks/sources.js +46 -35
- package/dist/tasks/sources.js.map +1 -1
- package/dist/ui/chat-client.d.ts +70 -0
- package/dist/ui/chat-client.js +209 -0
- package/dist/ui/chat-client.js.map +1 -0
- package/dist/ui/dashboard.d.ts +8 -5
- package/dist/ui/dashboard.js +227 -86
- package/dist/ui/dashboard.js.map +1 -1
- package/dist/ui/details.d.ts +64 -0
- package/dist/ui/details.js +175 -0
- package/dist/ui/details.js.map +1 -0
- package/dist/ui/global-dashboard.d.ts +59 -0
- package/dist/ui/global-dashboard.js +307 -0
- package/dist/ui/global-dashboard.js.map +1 -0
- package/dist/ui/status-view.d.ts +7 -0
- package/dist/ui/status-view.js +94 -36
- package/dist/ui/status-view.js.map +1 -1
- package/package.json +1 -1
- package/dist/engine/requests.d.ts +0 -111
- package/dist/engine/requests.js +0 -173
- package/dist/engine/requests.js.map +0 -1
- package/dist/expert/book-language/commitments/task-id.md +0 -9
- package/dist/tasks/prepare.d.ts +0 -33
- package/dist/tasks/prepare.js +0 -90
- 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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"}
|
package/dist/cli/commands/add.js
CHANGED
|
@@ -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 {
|
|
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 {
|
|
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).
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
.
|
|
128
|
-
|
|
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
|
-
|
|
132
|
-
|
|
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,
|
|
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
|
-
|
|
151
|
-
|
|
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:
|
|
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
|
|
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
|
|
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} ·
|
|
202
|
-
: `Added task "${title}" (
|
|
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":"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"}
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
27
|
-
if (!
|
|
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(
|
|
24
|
+
printJson(waiting);
|
|
30
25
|
return EXIT.success;
|
|
31
26
|
}
|
|
32
|
-
if (!
|
|
33
|
-
terminal.write('No
|
|
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
|
|
38
|
-
terminal.write(`${
|
|
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: `${
|
|
44
|
-
question: 'Which
|
|
45
|
-
choices:
|
|
46
|
-
defaultValue:
|
|
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
|
-
|
|
45
|
+
name = chosen;
|
|
51
46
|
}
|
|
52
|
-
const
|
|
53
|
-
if (!
|
|
54
|
-
throw new PtbkError(`
|
|
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 ${
|
|
65
|
-
terminal.write(`${terminal.style.bold(
|
|
66
|
-
const response =
|
|
67
|
-
? await selectOne(terminal, { frame: { title: 'ptbk answer', step:
|
|
68
|
-
: await composeText(terminal, { frame: { title: 'ptbk answer', step:
|
|
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
|
|
60
|
+
terminal.write('Not answered; the chat keeps waiting.\n');
|
|
71
61
|
return EXIT.incomplete;
|
|
72
62
|
}
|
|
73
63
|
value = response;
|
|
74
64
|
}
|
|
75
|
-
|
|
76
|
-
|
|
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,
|
|
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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"}
|