crewly 1.20.178 → 1.20.180
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/config/roles/team-leader/prompt.md +2 -2
- package/config/roles/team-leader/tl-addon.md +2 -2
- package/config/skills/agent/core/ask-owner/SKILL.md +79 -0
- package/config/skills/agent/core/ask-owner/execute.sh +66 -0
- package/config/skills/agent/core/ask-owner/execute.test.sh +62 -0
- package/config/skills/agent/core/project-tickets/SKILL.md +21 -9
- package/config/skills/agent/core/project-tickets/execute.sh +28 -9
- package/config/skills/agent/core/project-tickets/execute.test.sh +12 -4
- package/config/skills/agent/core/reply/SKILL.md +22 -5
- package/config/skills/agent/core/reply/execute.sh +12 -5
- package/config/skills/agent/core/reply/execute.test.sh +8 -0
- package/config/skills/agent/core/schedule-followup/SKILL.md +8 -0
- package/config/skills/agent/core/schedule-followup/execute.sh +7 -0
- package/config/slack-app-manifest.json +5 -1
- package/config/slack-master-app-manifest.json +7 -2
- package/dist/backend/backend/src/constants.d.ts +76 -5
- package/dist/backend/backend/src/constants.d.ts.map +1 -1
- package/dist/backend/backend/src/constants.js +83 -5
- package/dist/backend/backend/src/constants.js.map +1 -1
- package/dist/backend/backend/src/controllers/chat/agent-reply.controller.d.ts +3 -0
- package/dist/backend/backend/src/controllers/chat/agent-reply.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/chat/agent-reply.controller.js +54 -1
- package/dist/backend/backend/src/controllers/chat/agent-reply.controller.js.map +1 -1
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts +67 -0
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.d.ts.map +1 -0
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.js +215 -0
- package/dist/backend/backend/src/controllers/decisions/decisions.controller.js.map +1 -0
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts +8 -5
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.d.ts.map +1 -1
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js +51 -12
- package/dist/backend/backend/src/controllers/project-tickets/project-tickets.controller.js.map +1 -1
- package/dist/backend/backend/src/index.d.ts +4 -0
- package/dist/backend/backend/src/index.d.ts.map +1 -1
- package/dist/backend/backend/src/index.js +88 -2
- package/dist/backend/backend/src/index.js.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.d.ts.map +1 -1
- package/dist/backend/backend/src/routes/api.routes.js +6 -0
- package/dist/backend/backend/src/routes/api.routes.js.map +1 -1
- package/dist/backend/backend/src/services/boot/boot-announce.service.d.ts +1 -1
- package/dist/backend/backend/src/services/boot/boot-announce.service.js +13 -13
- package/dist/backend/backend/src/services/boot/boot-announce.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js +6 -6
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.service.js.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts +3 -3
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.d.ts.map +1 -1
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js +14 -13
- package/dist/backend/backend/src/services/cloud/cloud-disconnect-notice.utils.js.map +1 -1
- package/dist/backend/backend/src/services/decisions/decision-card.d.ts +147 -0
- package/dist/backend/backend/src/services/decisions/decision-card.d.ts.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-card.js +311 -0
- package/dist/backend/backend/src/services/decisions/decision-card.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-contract.d.ts +83 -0
- package/dist/backend/backend/src/services/decisions/decision-contract.d.ts.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-contract.js +226 -0
- package/dist/backend/backend/src/services/decisions/decision-contract.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-routing.d.ts +34 -0
- package/dist/backend/backend/src/services/decisions/decision-routing.d.ts.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-routing.js +64 -0
- package/dist/backend/backend/src/services/decisions/decision-routing.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-store.d.ts +80 -0
- package/dist/backend/backend/src/services/decisions/decision-store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision-store.js +151 -0
- package/dist/backend/backend/src/services/decisions/decision-store.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts +281 -0
- package/dist/backend/backend/src/services/decisions/decision.service.d.ts.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision.service.js +639 -0
- package/dist/backend/backend/src/services/decisions/decision.service.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts +70 -0
- package/dist/backend/backend/src/services/decisions/decision.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/decisions/decision.wiring.js +172 -0
- package/dist/backend/backend/src/services/decisions/decision.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/decisions/ticket-thread-store.d.ts +97 -0
- package/dist/backend/backend/src/services/decisions/ticket-thread-store.d.ts.map +1 -0
- package/dist/backend/backend/src/services/decisions/ticket-thread-store.js +137 -0
- package/dist/backend/backend/src/services/decisions/ticket-thread-store.js.map +1 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.d.ts +165 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.js +239 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.js.map +1 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.wiring.d.ts +134 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.wiring.d.ts.map +1 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.wiring.js +217 -0
- package/dist/backend/backend/src/services/orc/work-item-destination.wiring.js.map +1 -0
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts +1 -30
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js +1 -22
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts +2 -15
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js +8 -22
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.js.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts +11 -12
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js +27 -52
- package/dist/backend/backend/src/services/project-tickets/ticket-autopilot.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts +6 -0
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js +3 -1
- package/dist/backend/backend/src/services/slack/slack-agent-post.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js +12 -12
- package/dist/backend/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts +16 -1
- package/dist/backend/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/backend/backend/src/services/slack/slack.service.js +56 -2
- package/dist/backend/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.service.js +2 -2
- package/dist/backend/backend/src/services/system/auto-update.service.js.map +1 -1
- package/dist/backend/backend/src/services/system/auto-update.utils.js +2 -2
- package/dist/backend/backend/src/services/system/auto-update.utils.js.map +1 -1
- package/dist/backend/backend/src/types/decision.types.d.ts +139 -0
- package/dist/backend/backend/src/types/decision.types.d.ts.map +1 -0
- package/dist/backend/backend/src/types/decision.types.js +13 -0
- package/dist/backend/backend/src/types/decision.types.js.map +1 -0
- package/dist/backend/backend/src/types/slack.types.d.ts +30 -0
- package/dist/backend/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/slack.types.js.map +1 -1
- package/dist/backend/backend/src/types/v2/trigger.types.d.ts +17 -0
- package/dist/backend/backend/src/types/v2/trigger.types.d.ts.map +1 -1
- package/dist/backend/backend/src/types/v2/trigger.types.js +17 -0
- package/dist/backend/backend/src/types/v2/trigger.types.js.map +1 -1
- package/dist/backend/build-info.json +2 -2
- package/dist/cli/backend/src/constants.d.ts +76 -5
- package/dist/cli/backend/src/constants.d.ts.map +1 -1
- package/dist/cli/backend/src/constants.js +83 -5
- package/dist/cli/backend/src/constants.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js +12 -12
- package/dist/cli/backend/src/services/slack/slack-team-channel.service.js.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts +16 -1
- package/dist/cli/backend/src/services/slack/slack.service.d.ts.map +1 -1
- package/dist/cli/backend/src/services/slack/slack.service.js +56 -2
- package/dist/cli/backend/src/services/slack/slack.service.js.map +1 -1
- package/dist/cli/backend/src/services/system/auto-update.utils.js +2 -2
- package/dist/cli/backend/src/services/system/auto-update.utils.js.map +1 -1
- package/dist/cli/backend/src/types/slack.types.d.ts +30 -0
- package/dist/cli/backend/src/types/slack.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/slack.types.js.map +1 -1
- package/dist/cli/backend/src/types/v2/trigger.types.d.ts +17 -0
- package/dist/cli/backend/src/types/v2/trigger.types.d.ts.map +1 -1
- package/dist/cli/backend/src/types/v2/trigger.types.js +17 -0
- package/dist/cli/backend/src/types/v2/trigger.types.js.map +1 -1
- package/frontend/dist/assets/index-04d192f8.css +42 -0
- package/frontend/dist/assets/{index-69af46c3.js → index-4271e95e.js} +259 -259
- package/frontend/dist/index.html +2 -2
- package/package.json +1 -1
- package/frontend/dist/assets/index-cdc52122.css +0 -42
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Effects of the work-item destination plan (specs/2026-10-01-decision-cards.md §6):
|
|
3
|
+
* find the agent's current work, post its answer where that work came from
|
|
4
|
+
* (ticket thread, trigger destination, new top-level post in the team
|
|
5
|
+
* channel), and tell other services (decision cards) the Slack place of the
|
|
6
|
+
* agent's current work.
|
|
7
|
+
*
|
|
8
|
+
* Every collaborator is injectable; {@link defaultWorkDestinationDeps} wires
|
|
9
|
+
* the real services lazily.
|
|
10
|
+
*
|
|
11
|
+
* @module services/orc/work-item-destination.wiring
|
|
12
|
+
*/
|
|
13
|
+
import { parseSlackThreadKey } from '../slack/slack-thread-key.js';
|
|
14
|
+
import { currentWorkItemOf, parseDestination, planWorkDestination, shortTopic, withTopicLine, } from './work-item-destination.js';
|
|
15
|
+
/**
|
|
16
|
+
* The agent's current work and where its answer goes.
|
|
17
|
+
*
|
|
18
|
+
* @param session - Agent session
|
|
19
|
+
* @param deps - Collaborators
|
|
20
|
+
* @returns The plan and the work item behind it
|
|
21
|
+
*/
|
|
22
|
+
export async function planForSession(session, deps) {
|
|
23
|
+
const items = await deps.poolItems().catch(() => []);
|
|
24
|
+
const workItem = currentWorkItemOf(items, session);
|
|
25
|
+
const destination = planWorkDestination({ workItem, ownerOrigin: deps.ownerOrigin(session), now: deps.now() });
|
|
26
|
+
return { destination, workItem };
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Post an answer at a non-owner destination. Owner origins are not handled
|
|
30
|
+
* here (the existing chat-v2 reply path owns them) and return null.
|
|
31
|
+
*
|
|
32
|
+
* @param session - Answering agent
|
|
33
|
+
* @param destination - From {@link planWorkDestination}
|
|
34
|
+
* @param text - Answer
|
|
35
|
+
* @param deps - Collaborators
|
|
36
|
+
* @returns Where it landed, or null when there is nowhere to post (no team channel)
|
|
37
|
+
*/
|
|
38
|
+
export async function deliverToWorkDestination(session, destination, text, deps) {
|
|
39
|
+
switch (destination.kind) {
|
|
40
|
+
case 'owner-origin':
|
|
41
|
+
return null;
|
|
42
|
+
case 'slack': {
|
|
43
|
+
const posted = await deps.post({
|
|
44
|
+
agentSession: session,
|
|
45
|
+
target: destination.target,
|
|
46
|
+
text: destination.threadTs ? text : withTopicLine(destination.topic, text),
|
|
47
|
+
...(destination.threadTs ? { threadTs: destination.threadTs } : { newTopLevel: true }),
|
|
48
|
+
});
|
|
49
|
+
return { kind: 'slack', slackChannelId: posted.channelId, messageTs: posted.messageTs, ...(destination.threadTs ? { threadTs: destination.threadTs } : {}), reason: destination.reason };
|
|
50
|
+
}
|
|
51
|
+
case 'new-top-level': {
|
|
52
|
+
const channel = await deps.teamChannelOf(session, destination.teamId);
|
|
53
|
+
if (!channel)
|
|
54
|
+
return null;
|
|
55
|
+
const posted = await deps.post({ agentSession: session, target: channel.slackChannelId, text: withTopicLine(destination.topic, text), newTopLevel: true });
|
|
56
|
+
return { kind: 'new-top-level', slackChannelId: posted.channelId, messageTs: posted.messageTs, reason: destination.reason };
|
|
57
|
+
}
|
|
58
|
+
case 'ticket-thread': {
|
|
59
|
+
const thread = await ensureTicketThread(session, destination, deps);
|
|
60
|
+
if (!thread)
|
|
61
|
+
return null;
|
|
62
|
+
if ('topLevelOnly' in thread) {
|
|
63
|
+
const posted = await deps.post({ agentSession: session, target: thread.slackChannelId, text: withTopicLine(thread.topic, text), newTopLevel: true });
|
|
64
|
+
return { kind: 'ticket-thread', slackChannelId: posted.channelId, messageTs: posted.messageTs, reason: `${destination.reason} (no thread store)` };
|
|
65
|
+
}
|
|
66
|
+
const posted = await deps.post({ agentSession: session, target: thread.slackChannelId, text, threadTs: thread.threadTs });
|
|
67
|
+
return { kind: 'ticket-thread', slackChannelId: posted.channelId, messageTs: posted.messageTs, threadTs: thread.threadTs, reason: destination.reason };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The ticket's Slack thread, created (root `*ID · title*` in the team channel,
|
|
73
|
+
* posted by the agent) when it has none yet.
|
|
74
|
+
*
|
|
75
|
+
* @param session - Posting agent
|
|
76
|
+
* @param dest - Ticket destination
|
|
77
|
+
* @param deps - Collaborators
|
|
78
|
+
* @returns The thread; `topLevelOnly` when no store is wired; null when there is no team channel
|
|
79
|
+
*/
|
|
80
|
+
async function ensureTicketThread(session, dest, deps) {
|
|
81
|
+
const store = deps.ticketThreads();
|
|
82
|
+
const existing = store ? await store.get(dest.projectPath, dest.ticketId) : null;
|
|
83
|
+
if (existing)
|
|
84
|
+
return existing;
|
|
85
|
+
const info = await deps.ticketInfo(dest.projectPath, dest.ticketId).catch(() => null);
|
|
86
|
+
const title = info?.title ?? dest.title ?? '';
|
|
87
|
+
const topic = shortTopic(title ? `${dest.ticketId} · ${title}` : dest.ticketId);
|
|
88
|
+
const channel = await deps.teamChannelOf(session, dest.teamId ?? info?.team ?? null);
|
|
89
|
+
if (!channel)
|
|
90
|
+
return null;
|
|
91
|
+
if (!store)
|
|
92
|
+
return { slackChannelId: channel.slackChannelId, topic, topLevelOnly: true };
|
|
93
|
+
const root = await deps.post({ agentSession: session, target: channel.slackChannelId, text: `*${topic}*`, newTopLevel: true });
|
|
94
|
+
// First thread wins: a concurrent poster may have stored one meanwhile.
|
|
95
|
+
return store.set(dest.projectPath, dest.ticketId, { slackChannelId: root.channelId, threadTs: root.messageTs, teamId: channel.teamId });
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* `reply --new-thread "<title>"`: a new top-level post in the agent's team
|
|
99
|
+
* channel, opened with the title in bold.
|
|
100
|
+
*
|
|
101
|
+
* @param session - Agent
|
|
102
|
+
* @param title - Thread title
|
|
103
|
+
* @param text - Body
|
|
104
|
+
* @param deps - Collaborators
|
|
105
|
+
* @returns Where it landed, or null when the agent has no team channel
|
|
106
|
+
*/
|
|
107
|
+
export async function postNewThread(session, title, text, deps) {
|
|
108
|
+
const channel = await deps.teamChannelOf(session, null);
|
|
109
|
+
if (!channel)
|
|
110
|
+
return null;
|
|
111
|
+
const posted = await deps.post({ agentSession: session, target: channel.slackChannelId, text: withTopicLine(title, text), newTopLevel: true });
|
|
112
|
+
return { kind: 'new-top-level', slackChannelId: posted.channelId, messageTs: posted.messageTs, reason: 'agent started a new thread' };
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* The Slack place of an agent's current work, for posts that must go there
|
|
116
|
+
* (decision cards). No posting happens: a ticket without a thread yields its
|
|
117
|
+
* team channel (the caller starts the thread).
|
|
118
|
+
*
|
|
119
|
+
* @param session - Agent session
|
|
120
|
+
* @param deps - Collaborators (default: the real services)
|
|
121
|
+
* @returns Channel (+ thread, + team), or null when the work is not in a Slack place
|
|
122
|
+
*/
|
|
123
|
+
export async function resolveAgentSlackDestination(session, deps) {
|
|
124
|
+
const d = deps ?? (await defaultWorkDestinationDeps());
|
|
125
|
+
const { destination } = await planForSession(session, d);
|
|
126
|
+
switch (destination.kind) {
|
|
127
|
+
case 'owner-origin': {
|
|
128
|
+
const o = destination.origin;
|
|
129
|
+
const key = parseSlackThreadKey(o.slackThreadKey);
|
|
130
|
+
if (key)
|
|
131
|
+
return { slackChannelId: key.slackChannelId, threadTs: key.threadTs };
|
|
132
|
+
if (o.slackChannelId)
|
|
133
|
+
return { slackChannelId: o.slackChannelId, ...(o.slackThreadTs ? { threadTs: o.slackThreadTs } : {}) };
|
|
134
|
+
return d.dmOfConversation?.(o.conversationId) ?? null;
|
|
135
|
+
}
|
|
136
|
+
case 'slack': {
|
|
137
|
+
const parsed = parseDestination(destination.target);
|
|
138
|
+
if (!parsed)
|
|
139
|
+
return null;
|
|
140
|
+
const id = parsed.target.startsWith('#') ? await d.findChannelId?.(parsed.target.slice(1)).catch(() => null) : parsed.target;
|
|
141
|
+
return id ? { slackChannelId: id, ...(destination.threadTs ? { threadTs: destination.threadTs } : {}) } : null;
|
|
142
|
+
}
|
|
143
|
+
case 'ticket-thread': {
|
|
144
|
+
const existing = await d.ticketThreads()?.get(destination.projectPath, destination.ticketId);
|
|
145
|
+
if (existing)
|
|
146
|
+
return { slackChannelId: existing.slackChannelId, threadTs: existing.threadTs, ...(existing.teamId ? { teamId: existing.teamId } : {}) };
|
|
147
|
+
const info = await d.ticketInfo(destination.projectPath, destination.ticketId).catch(() => null);
|
|
148
|
+
return d.teamChannelOf(session, destination.teamId ?? info?.team ?? null);
|
|
149
|
+
}
|
|
150
|
+
case 'new-top-level':
|
|
151
|
+
return d.teamChannelOf(session, destination.teamId ?? null);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* The real collaborators (lazy imports keep this module light for tests).
|
|
156
|
+
*
|
|
157
|
+
* @returns Deps
|
|
158
|
+
*/
|
|
159
|
+
export async function defaultWorkDestinationDeps() {
|
|
160
|
+
const [{ TaskPoolService }, { OrcReplyRouteService }, { getSlackTeamChannelService }, { StorageService }, { getTicketThreadStore }, { ProjectTicketService }, { getSlackAgentPostService }, { getSlackAgentDmService }] = await Promise.all([
|
|
161
|
+
import('../task-pool/task-pool.service.js'),
|
|
162
|
+
import('./orc-reply-route.service.js'),
|
|
163
|
+
import('../slack/slack-team-channel.service.js'),
|
|
164
|
+
import('../core/storage.service.js'),
|
|
165
|
+
import('../decisions/ticket-thread-store.js'),
|
|
166
|
+
import('../project-tickets/project-ticket.service.js'),
|
|
167
|
+
import('../slack/slack-agent-post.service.js'),
|
|
168
|
+
import('../slack/slack-agent-dm.service.js'),
|
|
169
|
+
]);
|
|
170
|
+
return {
|
|
171
|
+
poolItems: () => TaskPoolService.getInstance().getAllItems(),
|
|
172
|
+
ownerOrigin: (session) => OrcReplyRouteService.getInstance().getLastOrigin(session),
|
|
173
|
+
now: () => Date.now(),
|
|
174
|
+
teamChannelOf: async (session, teamIdHint) => {
|
|
175
|
+
const service = getSlackTeamChannelService();
|
|
176
|
+
if (!service)
|
|
177
|
+
return null;
|
|
178
|
+
const mappings = await service.listMappings();
|
|
179
|
+
const byTeam = (id) => mappings.find((m) => m.teamId === id);
|
|
180
|
+
if (teamIdHint) {
|
|
181
|
+
const m = byTeam(teamIdHint);
|
|
182
|
+
if (m)
|
|
183
|
+
return { slackChannelId: m.slackChannelId, teamId: m.teamId };
|
|
184
|
+
}
|
|
185
|
+
const teams = await StorageService.getInstance().getTeams().catch(() => []);
|
|
186
|
+
for (const team of teams) {
|
|
187
|
+
if (team.archived || !(team.members ?? []).some((mem) => mem.sessionName === session))
|
|
188
|
+
continue;
|
|
189
|
+
const m = byTeam(team.id);
|
|
190
|
+
if (m)
|
|
191
|
+
return { slackChannelId: m.slackChannelId, teamId: m.teamId };
|
|
192
|
+
}
|
|
193
|
+
return null;
|
|
194
|
+
},
|
|
195
|
+
ticketThreads: () => getTicketThreadStore(),
|
|
196
|
+
ticketInfo: async (projectPath, ticketId) => {
|
|
197
|
+
const t = await ProjectTicketService.getInstance().get(projectPath, ticketId);
|
|
198
|
+
return t ? { title: t.title, team: t.team } : null;
|
|
199
|
+
},
|
|
200
|
+
post: async (req) => {
|
|
201
|
+
const service = getSlackAgentPostService();
|
|
202
|
+
if (!service)
|
|
203
|
+
throw new Error('Slack is not set up');
|
|
204
|
+
const r = await service.post(req);
|
|
205
|
+
return { channelId: r.channelId, messageTs: r.messageTs };
|
|
206
|
+
},
|
|
207
|
+
findChannelId: async (name) => {
|
|
208
|
+
const { getSlackService } = await import('../slack/slack.service.js');
|
|
209
|
+
return (await getSlackService().findChannelByName(name))?.id ?? null;
|
|
210
|
+
},
|
|
211
|
+
dmOfConversation: (conversationId) => {
|
|
212
|
+
const link = getSlackAgentDmService()?.findByChatChannelId(conversationId);
|
|
213
|
+
return link ? { slackChannelId: link.slackChannelId, ...(link.replyThreadTs ? { threadTs: link.replyThreadTs } : {}) } : null;
|
|
214
|
+
},
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=work-item-destination.wiring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-item-destination.wiring.js","sourceRoot":"","sources":["../../../../../../backend/src/services/orc/work-item-destination.wiring.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* pool, a filesystem or timers:
|
|
7
7
|
* - which tickets need the driver's triage ({@link selectTriageCandidates});
|
|
8
8
|
* - whether to wake the driver now ({@link decideTriage});
|
|
9
|
-
* - whether to send the owner the
|
|
10
|
-
* or the evening digest ({@link decideDigest}).
|
|
9
|
+
* - whether to send the owner the evening digest ({@link decideDigest}).
|
|
11
10
|
*
|
|
12
11
|
* @module services/project-tickets/ticket-autopilot-decision
|
|
13
12
|
*/
|
|
@@ -170,34 +169,6 @@ export declare function selectTriageCandidates(input: SelectTriageInput): Triage
|
|
|
170
169
|
* @returns `triage`, or `skip` with the reason
|
|
171
170
|
*/
|
|
172
171
|
export declare function decideTriage(input: TriageDecisionInput): TriageDecision;
|
|
173
|
-
/** A question waiting on the owner. */
|
|
174
|
-
export interface PendingOwnerQuestion {
|
|
175
|
-
/** Stable key: project + ticket + question text */
|
|
176
|
-
key: string;
|
|
177
|
-
priority: string;
|
|
178
|
-
}
|
|
179
|
-
/** Inputs of {@link decideOwnerQuestions}. */
|
|
180
|
-
export interface OwnerQuestionsInput {
|
|
181
|
-
pending: PendingOwnerQuestion[];
|
|
182
|
-
/** Keys already sent to the owner */
|
|
183
|
-
sentKeys: ReadonlySet<string>;
|
|
184
|
-
/** When the last batch went out (epoch ms) */
|
|
185
|
-
lastSentAt?: number;
|
|
186
|
-
now: number;
|
|
187
|
-
}
|
|
188
|
-
/**
|
|
189
|
-
* Whether to send the batched owner questions now: only when at least one
|
|
190
|
-
* question is new, and then at most every
|
|
191
|
-
* {@link TICKET_AUTOPILOT_CONSTANTS.QUESTIONS_MIN_INTERVAL_MS} — unless a new
|
|
192
|
-
* one is urgent (P0), which goes out at once.
|
|
193
|
-
*
|
|
194
|
-
* @param input - Pending questions, what was sent, clock
|
|
195
|
-
* @returns `send` and why
|
|
196
|
-
*/
|
|
197
|
-
export declare function decideOwnerQuestions(input: OwnerQuestionsInput): {
|
|
198
|
-
send: boolean;
|
|
199
|
-
reason: 'nothing_new' | 'urgent' | 'due' | 'too_soon';
|
|
200
|
-
};
|
|
201
172
|
/** Inputs of {@link decideDigest}. */
|
|
202
173
|
export interface DigestDecisionInput {
|
|
203
174
|
now: Date;
|
package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-decision.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-autopilot-decision.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot-decision.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ticket-autopilot-decision.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot-decision.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,8 +6,7 @@
|
|
|
6
6
|
* pool, a filesystem or timers:
|
|
7
7
|
* - which tickets need the driver's triage ({@link selectTriageCandidates});
|
|
8
8
|
* - whether to wake the driver now ({@link decideTriage});
|
|
9
|
-
* - whether to send the owner the
|
|
10
|
-
* or the evening digest ({@link decideDigest}).
|
|
9
|
+
* - whether to send the owner the evening digest ({@link decideDigest}).
|
|
11
10
|
*
|
|
12
11
|
* @module services/project-tickets/ticket-autopilot-decision
|
|
13
12
|
*/
|
|
@@ -198,26 +197,6 @@ export function decideTriage(input) {
|
|
|
198
197
|
return { action: 'skip', reason: 'too_soon' };
|
|
199
198
|
return { action: 'triage' };
|
|
200
199
|
}
|
|
201
|
-
/**
|
|
202
|
-
* Whether to send the batched owner questions now: only when at least one
|
|
203
|
-
* question is new, and then at most every
|
|
204
|
-
* {@link TICKET_AUTOPILOT_CONSTANTS.QUESTIONS_MIN_INTERVAL_MS} — unless a new
|
|
205
|
-
* one is urgent (P0), which goes out at once.
|
|
206
|
-
*
|
|
207
|
-
* @param input - Pending questions, what was sent, clock
|
|
208
|
-
* @returns `send` and why
|
|
209
|
-
*/
|
|
210
|
-
export function decideOwnerQuestions(input) {
|
|
211
|
-
const fresh = input.pending.filter((q) => !input.sentKeys.has(q.key));
|
|
212
|
-
if (fresh.length === 0)
|
|
213
|
-
return { send: false, reason: 'nothing_new' };
|
|
214
|
-
if (fresh.some((q) => q.priority === TICKET_AUTOPILOT_CONSTANTS.URGENT_PRIORITY))
|
|
215
|
-
return { send: true, reason: 'urgent' };
|
|
216
|
-
if (input.lastSentAt === undefined || input.now - input.lastSentAt >= TICKET_AUTOPILOT_CONSTANTS.QUESTIONS_MIN_INTERVAL_MS) {
|
|
217
|
-
return { send: true, reason: 'due' };
|
|
218
|
-
}
|
|
219
|
-
return { send: false, reason: 'too_soon' };
|
|
220
|
-
}
|
|
221
200
|
/**
|
|
222
201
|
* Whether to send the daily digest now: once per local day, at or after
|
|
223
202
|
* {@link TICKET_AUTOPILOT_CONSTANTS.DIGEST_HOUR_LOCAL}, and only when some
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-autopilot-decision.js","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot-decision.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"ticket-autopilot-decision.js","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot-decision.ts"],"names":[],"mappings":"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"}
|
|
@@ -64,27 +64,14 @@ export declare function formatAge(iso: string, now: number): string;
|
|
|
64
64
|
* @returns Markdown brief
|
|
65
65
|
*/
|
|
66
66
|
export declare function buildTriageBrief(input: TriageBriefInput): string;
|
|
67
|
-
/** A question for the owner. */
|
|
68
|
-
export interface OwnerQuestionItem {
|
|
69
|
-
projectName: string;
|
|
70
|
-
ticketId: string;
|
|
71
|
-
title: string;
|
|
72
|
-
question: string;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* The one batched message with every open owner question — numbered, short,
|
|
76
|
-
* answerable with a tap or a word.
|
|
77
|
-
*
|
|
78
|
-
* @param items - Questions (already ordered)
|
|
79
|
-
* @returns Message text
|
|
80
|
-
*/
|
|
81
|
-
export declare function buildOwnerQuestionsMessage(items: OwnerQuestionItem[]): string;
|
|
82
67
|
/** One project's section of the digest. */
|
|
83
68
|
export interface DigestProject {
|
|
84
69
|
name: string;
|
|
85
70
|
doneToday: ProjectTicket[];
|
|
86
71
|
inProgress: ProjectTicket[];
|
|
87
72
|
waitingOnOwner: ProjectTicket[];
|
|
73
|
+
/** Ticket id → link to its decision card / Slack thread */
|
|
74
|
+
links?: ReadonlyMap<string, string>;
|
|
88
75
|
}
|
|
89
76
|
/**
|
|
90
77
|
* The evening digest: per project, done today / in progress / waiting on the
|
package/dist/backend/backend/src/services/project-tickets/ticket-autopilot-messages.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-autopilot-messages.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAE1F;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAKxD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oCAAoC,EAAE,SAAS,MAAM,EAIjE,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAInF,CAAC;AAEF,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,YAAY,EAAE,kBAAkB,CAAC;IACjC,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAwCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAsDhE;AAED,
|
|
1
|
+
{"version":3,"file":"ticket-autopilot-messages.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot-messages.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AAE1F;;;GAGG;AACH,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAKxD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oCAAoC,EAAE,SAAS,MAAM,EAIjE,CAAC;AAEF,sDAAsD;AACtD,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAInF,CAAC;AAEF,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,4EAA4E;IAC5E,YAAY,EAAE,kBAAkB,CAAC;IACjC,2DAA2D;IAC3D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,0CAA0C;AAC1C,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACtC,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,wCAAwC;IACxC,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,CAQ1D;AAwCD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,CAsDhE;AAED,2CAA2C;AAC3C,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,EAAE,CAAC;IAC3B,UAAU,EAAE,aAAa,EAAE,CAAC;IAC5B,cAAc,EAAE,aAAa,EAAE,CAAC;IAChC,2DAA2D;IAC3D,KAAK,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACrC;AAwBD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,MAAM,GAAG,IAAI,CAa3E;AAED;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAEzG"}
|
|
@@ -107,7 +107,7 @@ export function buildTriageBrief(input) {
|
|
|
107
107
|
'',
|
|
108
108
|
`1. **Ready + assign** — \`bash ${tk} assign --project ${p} --id <ID> --to <member>\`, or \`… update --project ${p} --id <ID> --status ready\` to let the next idle member take it. At most ${input.maxInFlightPerMember} ticket${input.maxInFlightPerMember === 1 ? '' : 's'} in progress per member.`,
|
|
109
109
|
`2. **Split** — create smaller tickets (\`… create --project ${p} --title "…" --acceptance "…" --status ready\`), then cancel the original with a note naming the new ids.`,
|
|
110
|
-
`3. **Needs the owner** — \`bash ${tk} ask-owner --project ${p} --id <ID> --question "<one line
|
|
110
|
+
`3. **Needs the owner** — \`bash ${tk} ask-owner --project ${p} --id <ID> --question "<one line>" --option "<choice>" --option "<choice>" --default "<choice or wait>"\` (2–3 options; add \`--sensitive email|publish|deploy|spend\` for the boundaries below). The ticket's assignee (or you) posts it as a card in the ticket's Slack thread; do not message the owner about it yourself.`,
|
|
111
111
|
`4. **Cancel** — \`… update --project ${p} --id <ID> --status cancelled --note "<reason>"\`.`,
|
|
112
112
|
'',
|
|
113
113
|
'## Boundaries — the autopilot does NOT lift these',
|
|
@@ -152,39 +152,25 @@ export function buildTriageBrief(input) {
|
|
|
152
152
|
lines.push(`Full ticket: \`bash ${tk} show --project ${p} --id <ID>\`.`);
|
|
153
153
|
return lines.join('\n');
|
|
154
154
|
}
|
|
155
|
-
/**
|
|
156
|
-
* The one batched message with every open owner question — numbered, short,
|
|
157
|
-
* answerable with a tap or a word.
|
|
158
|
-
*
|
|
159
|
-
* @param items - Questions (already ordered)
|
|
160
|
-
* @returns Message text
|
|
161
|
-
*/
|
|
162
|
-
export function buildOwnerQuestionsMessage(items) {
|
|
163
|
-
const multiProject = new Set(items.map((i) => i.projectName)).size > 1;
|
|
164
|
-
const lines = [
|
|
165
|
-
items.length === 1 ? 'One ticket is waiting on you:' : `${items.length} tickets are waiting on you:`,
|
|
166
|
-
'',
|
|
167
|
-
...items.map((q, i) => `${i + 1}. ${q.ticketId}${multiProject ? ` (${q.projectName})` : ''} ${excerpt(q.title, 60)} — ${q.question}`),
|
|
168
|
-
'',
|
|
169
|
-
'Reply with the number and your answer (e.g. "1 yes").',
|
|
170
|
-
];
|
|
171
|
-
return lines.join('\n');
|
|
172
|
-
}
|
|
173
155
|
/**
|
|
174
156
|
* One digest section line: count plus the first few tickets.
|
|
175
157
|
*
|
|
176
158
|
* @param label - Section label
|
|
177
159
|
* @param tickets - Tickets
|
|
178
160
|
* @param withAssignee - Append the assignee
|
|
161
|
+
* @param links - Ticket id → card link (the id becomes the link)
|
|
179
162
|
* @returns Line, or null when empty
|
|
180
163
|
*/
|
|
181
|
-
function digestSection(label, tickets, withAssignee) {
|
|
164
|
+
function digestSection(label, tickets, withAssignee, links) {
|
|
182
165
|
if (tickets.length === 0)
|
|
183
166
|
return null;
|
|
184
167
|
const max = TICKET_AUTOPILOT_CONSTANTS.DIGEST_MAX_ITEMS_PER_SECTION;
|
|
185
168
|
const named = tickets
|
|
186
169
|
.slice(0, max)
|
|
187
|
-
.map((t) =>
|
|
170
|
+
.map((t) => {
|
|
171
|
+
const link = links?.get(t.id);
|
|
172
|
+
return `${link ? `<${link}|${t.id}>` : t.id} ${excerpt(t.title, 50)}${withAssignee && t.assignee ? ` (${t.assignee})` : ''}`;
|
|
173
|
+
});
|
|
188
174
|
const rest = tickets.length > max ? `; +${tickets.length - max} more` : '';
|
|
189
175
|
return `${label} (${tickets.length}): ${named.join('; ')}${rest}`;
|
|
190
176
|
}
|
|
@@ -201,7 +187,7 @@ export function buildDigestMessage(projects) {
|
|
|
201
187
|
const rows = [
|
|
202
188
|
digestSection('Done today', p.doneToday, false),
|
|
203
189
|
digestSection('In progress', p.inProgress, true),
|
|
204
|
-
digestSection('Waiting on you', p.waitingOnOwner, false),
|
|
190
|
+
digestSection('Waiting on you', p.waitingOnOwner, false, p.links),
|
|
205
191
|
].filter((r) => r !== null);
|
|
206
192
|
if (rows.length === 0)
|
|
207
193
|
continue;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-autopilot-messages.js","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot-messages.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"ticket-autopilot-messages.js","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot-messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,9 +10,9 @@
|
|
|
10
10
|
* - brakes hold: a daily USD budget over the team's agents (pauses the
|
|
11
11
|
* autopilot and ticket auto-claim for the day, owner told once) and an
|
|
12
12
|
* in-progress cap per member ({@link ProjectTicketAutopilotPolicy});
|
|
13
|
-
* -
|
|
14
|
-
*
|
|
15
|
-
* digest (skipped when nothing changed).
|
|
13
|
+
* - owner questions are decision cards (specs/2026-10-01-decision-cards.md),
|
|
14
|
+
* posted by the asking agent in the ticket's thread; the owner gets one
|
|
15
|
+
* evening digest (skipped when nothing changed) that links to open cards.
|
|
16
16
|
*
|
|
17
17
|
* The approval boundary is unchanged: the autopilot only wakes the lead and
|
|
18
18
|
* talks to the owner; it never makes a ticket ready or starts work itself.
|
|
@@ -73,6 +73,11 @@ export interface TicketAutopilotDeps {
|
|
|
73
73
|
notifyOwner: (notice: OwnerNotice) => Promise<boolean>;
|
|
74
74
|
/** JSON file holding the autopilot's bookkeeping */
|
|
75
75
|
stateFile: string;
|
|
76
|
+
/**
|
|
77
|
+
* Link to the Slack card / thread where a ticket waits on the owner
|
|
78
|
+
* (decision cards). The digest links to it; it never repeats the question.
|
|
79
|
+
*/
|
|
80
|
+
cardLinkOf?: (projectPath: string, ticketId: string) => Promise<string | null>;
|
|
76
81
|
/** Description of a role (role.json / user override), for the brief's role lines; absent = built-in fallbacks only */
|
|
77
82
|
roleDescription?: (role: string) => Promise<string | null>;
|
|
78
83
|
now?: () => Date;
|
|
@@ -164,8 +169,9 @@ export declare class TicketAutopilotService {
|
|
|
164
169
|
*/
|
|
165
170
|
updateSettings(ref: string, input: TicketAutopilotSettingsInput, caller: ProjectTicketCaller): Promise<TicketAutopilotStatus>;
|
|
166
171
|
/**
|
|
167
|
-
* Periodic pass: evaluate every enabled project, then the
|
|
168
|
-
*
|
|
172
|
+
* Periodic pass: evaluate every enabled project, then the daily digest.
|
|
173
|
+
* Owner questions are decision cards now (specs/2026-10-01-decision-cards.md):
|
|
174
|
+
* the asking agent posts them in the ticket's thread; there is no batched DM.
|
|
169
175
|
*
|
|
170
176
|
* @returns Per-project evaluations
|
|
171
177
|
*/
|
|
@@ -199,13 +205,6 @@ export declare class TicketAutopilotService {
|
|
|
199
205
|
* @returns The live item, or null
|
|
200
206
|
*/
|
|
201
207
|
private liveTriageItem;
|
|
202
|
-
/**
|
|
203
|
-
* Send the batched owner questions of every enabled project when due.
|
|
204
|
-
*
|
|
205
|
-
* @param projects - Enabled projects
|
|
206
|
-
* @returns True when a batch went out
|
|
207
|
-
*/
|
|
208
|
-
private processOwnerQuestions;
|
|
209
208
|
/**
|
|
210
209
|
* Send the evening digest of the enabled projects when due.
|
|
211
210
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ticket-autopilot.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot.service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAIH,OAAO,EAAiB,KAAK,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAEhF,OAAO,KAAK,EAAE,OAAO,EAAE,IAAI,EAAc,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAA4C,KAAK,QAAQ,EAAuB,MAAM,mCAAmC,CAAC;AACjI,OAAO,KAAK,EAAiB,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAC5F,OAAO,EAGL,KAAK,+BAA+B,EACpC,KAAK,4BAA4B,EAClC,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,4BAA4B,EACjC,KAAK,mBAAmB,EACzB,MAAM,sCAAsC,CAAC;AAC9C,OAAO,
|
|
1
|
+
{"version":3,"file":"ticket-autopilot.service.d.ts","sourceRoot":"","sources":["../../../../../../backend/src/services/project-tickets/ticket-autopilot.service.ts"],"names":[],"mappings":"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"}
|