@superblocksteam/vite-plugin-file-sync 2.0.154 → 2.0.155-next.0
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/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts +23 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.d.ts.map +1 -1
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js +84 -29
- package/dist/ai-service/agent/prompts/build-base-system-prompt.js.map +1 -1
- package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts +2 -0
- package/dist/ai-service/agent/subagents/apis/prompt-builder.d.ts.map +1 -1
- package/dist/ai-service/agent/subagents/apis/prompt-builder.js +11 -2
- package/dist/ai-service/agent/subagents/apis/prompt-builder.js.map +1 -1
- package/dist/ai-service/agent/tool-permission-delivery.d.ts.map +1 -1
- package/dist/ai-service/agent/tool-permission-delivery.js +4 -0
- package/dist/ai-service/agent/tool-permission-delivery.js.map +1 -1
- package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts +29 -0
- package/dist/ai-service/agent/tools/app-environment/update-app-environment.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/app-environment/update-app-environment.js +387 -0
- package/dist/ai-service/agent/tools/app-environment/update-app-environment.js.map +1 -0
- package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.d.ts +58 -0
- package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.d.ts.map +1 -0
- package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.js +258 -0
- package/dist/ai-service/agent/tools/databases/destructive-migration-prompt.js.map +1 -0
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts +18 -6
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.js +203 -51
- package/dist/ai-service/agent/tools/databases/dev-database-tasks.js.map +1 -1
- package/dist/ai-service/agent/tools/databases/dev-database-tools.d.ts +12 -10
- package/dist/ai-service/agent/tools/databases/dev-database-tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/databases/dev-database-tools.js +29 -8
- package/dist/ai-service/agent/tools/databases/dev-database-tools.js.map +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.d.ts +3 -0
- package/dist/ai-service/agent/tools/integrations/metadata.d.ts.map +1 -1
- package/dist/ai-service/agent/tools/integrations/metadata.js +10 -2
- package/dist/ai-service/agent/tools/integrations/metadata.js.map +1 -1
- package/dist/ai-service/agent/tools.d.ts +9 -1
- package/dist/ai-service/agent/tools.d.ts.map +1 -1
- package/dist/ai-service/agent/tools.js +25 -1
- package/dist/ai-service/agent/tools.js.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts +8 -0
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.d.ts.map +1 -1
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js +104 -14
- package/dist/ai-service/agent/tools2/tools/exit-plan-mode.js.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.d.ts +9 -0
- package/dist/ai-service/app-interface/npm-registry.d.ts.map +1 -1
- package/dist/ai-service/app-interface/npm-registry.js +50 -1
- package/dist/ai-service/app-interface/npm-registry.js.map +1 -1
- package/dist/ai-service/app-skills/helpers.d.ts.map +1 -1
- package/dist/ai-service/app-skills/helpers.js +1 -0
- package/dist/ai-service/app-skills/helpers.js.map +1 -1
- package/dist/ai-service/dev-database-client.d.ts +3 -1
- package/dist/ai-service/dev-database-client.d.ts.map +1 -1
- package/dist/ai-service/dev-database-client.js.map +1 -1
- package/dist/ai-service/features.d.ts +24 -0
- package/dist/ai-service/features.d.ts.map +1 -1
- package/dist/ai-service/features.js +24 -0
- package/dist/ai-service/features.js.map +1 -1
- package/dist/ai-service/helper-system-ai-attributes.d.ts +19 -0
- package/dist/ai-service/helper-system-ai-attributes.d.ts.map +1 -0
- package/dist/ai-service/helper-system-ai-attributes.js +17 -0
- package/dist/ai-service/helper-system-ai-attributes.js.map +1 -0
- package/dist/ai-service/index.d.ts +58 -2
- package/dist/ai-service/index.d.ts.map +1 -1
- package/dist/ai-service/index.js +182 -33
- package/dist/ai-service/index.js.map +1 -1
- package/dist/ai-service/integrations/store.d.ts +3 -0
- package/dist/ai-service/integrations/store.d.ts.map +1 -1
- package/dist/ai-service/integrations/store.js +3 -0
- package/dist/ai-service/integrations/store.js.map +1 -1
- package/dist/ai-service/live-edit-events/bridge.d.ts +21 -0
- package/dist/ai-service/live-edit-events/bridge.d.ts.map +1 -0
- package/dist/ai-service/live-edit-events/bridge.js +52 -0
- package/dist/ai-service/live-edit-events/bridge.js.map +1 -0
- package/dist/ai-service/live-edit-events/forwarder.d.ts +158 -0
- package/dist/ai-service/live-edit-events/forwarder.d.ts.map +1 -0
- package/dist/ai-service/live-edit-events/forwarder.js +403 -0
- package/dist/ai-service/live-edit-events/forwarder.js.map +1 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts +14 -0
- package/dist/ai-service/state-machine/clark-fsm.d.ts.map +1 -1
- package/dist/ai-service/state-machine/clark-fsm.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/awaiting-user.js +4 -0
- package/dist/ai-service/state-machine/handlers/awaiting-user.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/idle.js +3 -0
- package/dist/ai-service/state-machine/handlers/idle.js.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts +2 -0
- package/dist/ai-service/state-machine/handlers/llm-generating.d.ts.map +1 -1
- package/dist/ai-service/state-machine/handlers/llm-generating.js +93 -3
- package/dist/ai-service/state-machine/handlers/llm-generating.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.d.ts +27 -0
- package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.d.ts.map +1 -0
- package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.js +34 -0
- package/dist/ai-service/state-machine/helpers/headless-turn-lifecycle.js.map +1 -0
- package/dist/ai-service/state-machine/helpers/peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/peer.js +24 -0
- package/dist/ai-service/state-machine/helpers/peer.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js +4 -0
- package/dist/ai-service/state-machine/helpers/policy-gate-usage-metrics.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts +103 -1
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js +263 -3
- package/dist/ai-service/state-machine/helpers/prompt-request-metrics.js.map +1 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts +143 -0
- package/dist/ai-service/state-machine/helpers/stable-peer.d.ts.map +1 -1
- package/dist/ai-service/state-machine/helpers/stable-peer.js +220 -2
- package/dist/ai-service/state-machine/helpers/stable-peer.js.map +1 -1
- package/dist/ai-service/tasks/peer-push.d.ts.map +1 -1
- package/dist/ai-service/tasks/peer-push.js +7 -0
- package/dist/ai-service/tasks/peer-push.js.map +1 -1
- package/dist/dev-server-ws-smoke-client.d.ts.map +1 -1
- package/dist/dev-server-ws-smoke-client.js +1 -0
- package/dist/dev-server-ws-smoke-client.js.map +1 -1
- package/dist/file-sync-vite-plugin.d.ts.map +1 -1
- package/dist/file-sync-vite-plugin.js +9 -2
- package/dist/file-sync-vite-plugin.js.map +1 -1
- package/dist/lock-service/activity-tracker.d.ts.map +1 -1
- package/dist/lock-service/activity-tracker.js +5 -6
- package/dist/lock-service/activity-tracker.js.map +1 -1
- package/dist/lock-service/index.d.ts +56 -1
- package/dist/lock-service/index.d.ts.map +1 -1
- package/dist/lock-service/index.js +158 -13
- package/dist/lock-service/index.js.map +1 -1
- package/dist/rename-manager.d.ts.map +1 -1
- package/dist/rename-manager.js +2 -6
- package/dist/rename-manager.js.map +1 -1
- package/dist/socket-manager.d.ts +64 -0
- package/dist/socket-manager.d.ts.map +1 -1
- package/dist/socket-manager.js +236 -51
- package/dist/socket-manager.js.map +1 -1
- package/dist/util/logger.d.ts +2 -0
- package/dist/util/logger.d.ts.map +1 -1
- package/dist/util/logger.js +5 -0
- package/dist/util/logger.js.map +1 -1
- package/package.json +9 -9
- package/dist/parsing/entity/to-code-entity.d.ts +0 -3
- package/dist/parsing/entity/to-code-entity.d.ts.map +0 -1
- package/dist/parsing/entity/to-code-entity.js +0 -77
- package/dist/parsing/entity/to-code-entity.js.map +0 -1
- package/dist/parsing/entity/to-value-entity.d.ts +0 -8
- package/dist/parsing/entity/to-value-entity.d.ts.map +0 -1
- package/dist/parsing/entity/to-value-entity.js +0 -129
- package/dist/parsing/entity/to-value-entity.js.map +0 -1
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copy for the authoring-mode permission card the user answers before Clark
|
|
3
|
+
* applies a migration that deletes something.
|
|
4
|
+
*
|
|
5
|
+
* Clark declares the deletion on the apply call by filling the fields below.
|
|
6
|
+
* That declaration is what makes the tool report a WRITE permission, which the
|
|
7
|
+
* registry turns into this card, and the same call is re-run once the user
|
|
8
|
+
* approves - so nothing is applied while the question is open, and Clark never
|
|
9
|
+
* has to fail, ask in chat, or call the tool a second time.
|
|
10
|
+
*
|
|
11
|
+
* The card used to say "These migrations include destructive schema changes
|
|
12
|
+
* listed in the previous apply error", which points at an error the person
|
|
13
|
+
* approving never saw and assumes they know what a schema change is. Builders
|
|
14
|
+
* are not all SQL readers, so the card answers the three questions a person
|
|
15
|
+
* needs before clicking Yes: what is being deleted, why, and what it costs.
|
|
16
|
+
*
|
|
17
|
+
* Clark writes the "what" and the "why", because Clark is the only party that
|
|
18
|
+
* has both the migration SQL and the conversation it came from. Deriving that
|
|
19
|
+
* prose here from the server's findings meant parsing SQL to guess at English,
|
|
20
|
+
* which was wrong on any statement the regexes did not anticipate and could
|
|
21
|
+
* not explain intent at all. The risk sentence stays fixed copy: it is the
|
|
22
|
+
* same every time and is not Clark's to soften.
|
|
23
|
+
*/
|
|
24
|
+
import { containsCredentialMaterial } from "@superblocksteam/shared";
|
|
25
|
+
import { scrubSecrets } from "../../../types.js";
|
|
26
|
+
/**
|
|
27
|
+
* Whether Clark is telling us this apply deletes something.
|
|
28
|
+
*
|
|
29
|
+
* This is what gates the apply behind a confirmation card, so it is
|
|
30
|
+
* deliberately generous: any of the three copy fields counts. Over-declaring
|
|
31
|
+
* costs an unnecessary card on an additive apply; under-declaring is caught by
|
|
32
|
+
* the server, which refuses an unacknowledged destructive apply outright.
|
|
33
|
+
*
|
|
34
|
+
* Cheap and side-effect free by contract - the tool registry calls this
|
|
35
|
+
* several times per execute while it works out whether to prompt.
|
|
36
|
+
*/
|
|
37
|
+
export function declaresDestructiveChange(copy) {
|
|
38
|
+
return [copy.details, copy.reason, copy.summary].some((field) => field !== undefined && field.trim().length > 0);
|
|
39
|
+
}
|
|
40
|
+
const MAX_SUMMARY_LENGTH = 160;
|
|
41
|
+
const MAX_DETAILS_LENGTH = 600;
|
|
42
|
+
const MAX_DETAILS_LINES = 12;
|
|
43
|
+
const MAX_REASON_LENGTH = 280;
|
|
44
|
+
const FALLBACK_SUMMARY = "Ok if I run migrations that delete data in your app's development database?";
|
|
45
|
+
/**
|
|
46
|
+
* Shown when Clark told the card nothing at all. A card that just states the
|
|
47
|
+
* risk reads as though the deletion is understood and only the consequences
|
|
48
|
+
* are worth mentioning, so it says outright that it cannot describe the
|
|
49
|
+
* change and points the user at the one party that can.
|
|
50
|
+
*/
|
|
51
|
+
const NOTHING_KNOWN = "Clark did not say what these migrations delete. Ask it what will be " +
|
|
52
|
+
"deleted before you approve.";
|
|
53
|
+
/**
|
|
54
|
+
* Shown when the headline is all Clark wrote. The headline is one line of the
|
|
55
|
+
* model's words; without the detail there is nothing naming the files or the
|
|
56
|
+
* rows, so the card says the description is thin rather than implying the
|
|
57
|
+
* headline is the whole story.
|
|
58
|
+
*/
|
|
59
|
+
const NO_DETAIL = "Clark only wrote the one-line summary above. Ask which tables, columns or " +
|
|
60
|
+
"rows this deletes before you approve.";
|
|
61
|
+
/**
|
|
62
|
+
* The fixed copy is deliberately terse. It repeats on every card, and repeated
|
|
63
|
+
* copy stops being read - so it must not out-weigh the part that is specific to
|
|
64
|
+
* this deletion.
|
|
65
|
+
*/
|
|
66
|
+
const RISK = "This can't be undone. Only the database you build against in the editor " +
|
|
67
|
+
"changes; publishing asks about these changes separately.";
|
|
68
|
+
/**
|
|
69
|
+
* Saying no is "not now", not "no". The migration file Clark wrote stays in the
|
|
70
|
+
* working state, so the next apply flags it again (only filenames from a ready
|
|
71
|
+
* migrate_schema dispatch count as already applied). A card that leaves this
|
|
72
|
+
* out invites someone to click No and believe the change is gone.
|
|
73
|
+
*/
|
|
74
|
+
const SAYING_NO = "Nothing is deleted. The migration file stays in your app, so you will be " +
|
|
75
|
+
"asked again the next time migrations run - tell Clark to remove it if you " +
|
|
76
|
+
"do not want the change at all.";
|
|
77
|
+
/**
|
|
78
|
+
* Drop the characters that have no business in rendered copy. Backticks stay,
|
|
79
|
+
* unlike in the agent-facing `stripUnsafeChars`, because this text is rendered
|
|
80
|
+
* as markdown and `\`orders\`` is how a table name should read.
|
|
81
|
+
*/
|
|
82
|
+
function stripControlCharacters(value, keepLineBreaks) {
|
|
83
|
+
return [...value]
|
|
84
|
+
.filter((character) => {
|
|
85
|
+
if (character === "\n") {
|
|
86
|
+
return keepLineBreaks;
|
|
87
|
+
}
|
|
88
|
+
const code = character.codePointAt(0) ?? 0;
|
|
89
|
+
return code > 0x1f && code !== 0x7f;
|
|
90
|
+
})
|
|
91
|
+
.join("");
|
|
92
|
+
}
|
|
93
|
+
/** Says the description is incomplete, so a cut card cannot read as whole. */
|
|
94
|
+
function cutShortNotice(droppedLines) {
|
|
95
|
+
const missing = droppedLines > 0
|
|
96
|
+
? `${droppedLines} more line${droppedLines === 1 ? "" : "s"} of Clark's description ${droppedLines === 1 ? "is" : "are"} not shown`
|
|
97
|
+
: "Clark's description is longer than this card shows";
|
|
98
|
+
return `Cut short: ${missing}. Ask what else this deletes before you approve.`;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Fit whole lines into the character budget. Clark writes one line per
|
|
102
|
+
* migration file, so a half-line is worse than a missing line: it reads as a
|
|
103
|
+
* complete item. Only a first line that cannot fit on its own is cut mid-text.
|
|
104
|
+
*/
|
|
105
|
+
function fitWholeLines(lines, maxLength) {
|
|
106
|
+
const kept = [];
|
|
107
|
+
let used = 0;
|
|
108
|
+
for (const line of lines) {
|
|
109
|
+
const cost = kept.length === 0 ? line.length : line.length + 1;
|
|
110
|
+
if (used + cost > maxLength) {
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
kept.push(line);
|
|
114
|
+
used += cost;
|
|
115
|
+
}
|
|
116
|
+
if (kept.length === 0) {
|
|
117
|
+
return {
|
|
118
|
+
body: `${(lines[0] ?? "").slice(0, maxLength)}...`,
|
|
119
|
+
cut: true,
|
|
120
|
+
dropped: Math.max(0, lines.length - 1),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
const dropped = lines.length - kept.length;
|
|
124
|
+
return { body: kept.join("\n"), cut: dropped > 0, dropped };
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Prepare a string Clark wrote for display on the consent card.
|
|
128
|
+
*
|
|
129
|
+
* Returns undefined when nothing safe is left. Credential material voids the
|
|
130
|
+
* whole field rather than being patched: a consent card with a hole punched in
|
|
131
|
+
* it still reads as authoritative, and Clark has no reason to put a connection
|
|
132
|
+
* string in this copy in the first place.
|
|
133
|
+
*
|
|
134
|
+
* A capped multi-line description says outright that it was cut. Clark writes
|
|
135
|
+
* one line per migration file, so silently dropping the tail would leave a card
|
|
136
|
+
* that looks like the whole story while hiding deletions the user is approving.
|
|
137
|
+
* The single-line fields are not annotated: the headline is a question the body
|
|
138
|
+
* elaborates on, and pinning a warning to it would bury the question.
|
|
139
|
+
*/
|
|
140
|
+
function displayable(value, { maxLength, maxLines }) {
|
|
141
|
+
if (value === undefined || containsCredentialMaterial(value)) {
|
|
142
|
+
return undefined;
|
|
143
|
+
}
|
|
144
|
+
const allowLineBreaks = maxLines > 1;
|
|
145
|
+
// Links are reduced to their text: this card is a consent surface, so it
|
|
146
|
+
// must not become a place to put a clickable destination in front of
|
|
147
|
+
// someone who is deciding whether to trust what it says.
|
|
148
|
+
const unlinked = value.replace(/!?\[([^\]]*)\]\([^)]*\)/g, "$1");
|
|
149
|
+
const normalized = allowLineBreaks
|
|
150
|
+
? unlinked.replace(/\r\n?/g, "\n")
|
|
151
|
+
: unlinked.replace(/\s+/g, " ");
|
|
152
|
+
// Blank lines are dropped before anything is measured. They carry no
|
|
153
|
+
// information, but counted against the budget they buy a "Cut short" notice
|
|
154
|
+
// for a description that is in fact complete - and a leading blank could eat
|
|
155
|
+
// the room the first real line needed. Crying wolf on a consent card is its
|
|
156
|
+
// own failure. Markdown is unaffected: the renderer re-expands single
|
|
157
|
+
// newlines into paragraph breaks.
|
|
158
|
+
const lines = stripControlCharacters(scrubSecrets(normalized), allowLineBreaks)
|
|
159
|
+
.split("\n")
|
|
160
|
+
.map((line) => line.trim())
|
|
161
|
+
.filter((line) => line.length > 0);
|
|
162
|
+
const capped = lines.slice(0, maxLines);
|
|
163
|
+
const droppedByLineCap = lines.length - capped.length;
|
|
164
|
+
if (capped.length === 0) {
|
|
165
|
+
return undefined;
|
|
166
|
+
}
|
|
167
|
+
if (!allowLineBreaks) {
|
|
168
|
+
const single = capped.join(" ").trim();
|
|
169
|
+
return single.length > maxLength
|
|
170
|
+
? { cut: true, dropped: 0, text: single.slice(0, maxLength).trimEnd() }
|
|
171
|
+
: { cut: false, dropped: 0, text: single };
|
|
172
|
+
}
|
|
173
|
+
const fitted = fitWholeLines(capped, maxLength);
|
|
174
|
+
return {
|
|
175
|
+
cut: fitted.cut || droppedByLineCap > 0,
|
|
176
|
+
dropped: fitted.dropped + droppedByLineCap,
|
|
177
|
+
text: fitted.body.trim(),
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
/** Body text plus the cut notice, when there is one. */
|
|
181
|
+
function withCutNotice(prepared) {
|
|
182
|
+
if (prepared === undefined) {
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
185
|
+
return prepared.cut
|
|
186
|
+
? `${prepared.text}\n\n${cutShortNotice(prepared.dropped)}`
|
|
187
|
+
: prepared.text;
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Turn Clark's phrase into the question above the Yes/No buttons. Clark is
|
|
191
|
+
* asked for the verb phrase only, but it sometimes writes the whole question,
|
|
192
|
+
* so an existing "Ok if I" is not doubled up.
|
|
193
|
+
*
|
|
194
|
+
* Trailing punctuation is stripped before the ellipsis goes on, so a headline
|
|
195
|
+
* that had to be cut ends in "...?" and reads as unfinished. It used to end in
|
|
196
|
+
* a plain "?" - the strip ate the ellipsis that marked the cut, and the
|
|
197
|
+
* headline looked like the whole request.
|
|
198
|
+
*/
|
|
199
|
+
function question(summary) {
|
|
200
|
+
if (summary === undefined) {
|
|
201
|
+
return FALLBACK_SUMMARY;
|
|
202
|
+
}
|
|
203
|
+
const phrase = summary.text.replace(/[.!?\s]+$/, "");
|
|
204
|
+
if (phrase.length === 0) {
|
|
205
|
+
return FALLBACK_SUMMARY;
|
|
206
|
+
}
|
|
207
|
+
const asked = /^ok if i\b/i.test(phrase) ? phrase : `Ok if I ${phrase}`;
|
|
208
|
+
return summary.cut ? `${asked}...?` : `${asked}?`;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* The question shown as the card's header, the body underneath it, and the
|
|
212
|
+
* fields the card ended up without.
|
|
213
|
+
*
|
|
214
|
+
* `missing` exists so the caller can log a card that fell back to generic
|
|
215
|
+
* wording. Without it, a prompt regression that stops Clark writing this copy
|
|
216
|
+
* would silently weaken every consent card, and nobody would find out.
|
|
217
|
+
*/
|
|
218
|
+
export function buildDestructiveApplyPrompt(copy) {
|
|
219
|
+
const summary = displayable(copy.summary, {
|
|
220
|
+
maxLength: MAX_SUMMARY_LENGTH,
|
|
221
|
+
maxLines: 1,
|
|
222
|
+
});
|
|
223
|
+
const details = displayable(copy.details, {
|
|
224
|
+
maxLength: MAX_DETAILS_LENGTH,
|
|
225
|
+
maxLines: MAX_DETAILS_LINES,
|
|
226
|
+
});
|
|
227
|
+
const reason = displayable(copy.reason, {
|
|
228
|
+
maxLength: MAX_REASON_LENGTH,
|
|
229
|
+
maxLines: 1,
|
|
230
|
+
});
|
|
231
|
+
// "What changes" is always present. A headline on its own is one line of the
|
|
232
|
+
// model's words with nothing to check it against, so when Clark skipped the
|
|
233
|
+
// detail the card says that outright rather than leaving the section out and
|
|
234
|
+
// looking like there was nothing more to say.
|
|
235
|
+
const changes = withCutNotice(details);
|
|
236
|
+
const sections = [
|
|
237
|
+
"**What changes**",
|
|
238
|
+
"",
|
|
239
|
+
changes ?? (summary === undefined ? NOTHING_KNOWN : NO_DETAIL),
|
|
240
|
+
"",
|
|
241
|
+
];
|
|
242
|
+
const why = withCutNotice(reason);
|
|
243
|
+
if (why !== undefined) {
|
|
244
|
+
sections.push("**Why**", "", why, "");
|
|
245
|
+
}
|
|
246
|
+
sections.push("**Risk**", "", RISK, "");
|
|
247
|
+
sections.push("**If you say no**", "", SAYING_NO);
|
|
248
|
+
return {
|
|
249
|
+
details: sections.join("\n"),
|
|
250
|
+
missing: [
|
|
251
|
+
...(summary === undefined ? ["summary"] : []),
|
|
252
|
+
...(details === undefined ? ["details"] : []),
|
|
253
|
+
...(reason === undefined ? ["reason"] : []),
|
|
254
|
+
],
|
|
255
|
+
summary: question(summary),
|
|
256
|
+
};
|
|
257
|
+
}
|
|
258
|
+
//# sourceMappingURL=destructive-migration-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"destructive-migration-prompt.js","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/databases/destructive-migration-prompt.ts"],"names":[],"mappings":"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"}
|
|
@@ -250,11 +250,17 @@ export declare const watchDevDatabaseProvisionTaskMetadata: {
|
|
|
250
250
|
};
|
|
251
251
|
};
|
|
252
252
|
declare const applyMigrationsInputSchema: z.ZodObject<{
|
|
253
|
-
|
|
253
|
+
destructiveChangeDetails: z.ZodOptional<z.ZodString>;
|
|
254
|
+
destructiveChangeReason: z.ZodOptional<z.ZodString>;
|
|
255
|
+
destructiveChangeSummary: z.ZodOptional<z.ZodString>;
|
|
254
256
|
}, "strip", z.ZodTypeAny, {
|
|
255
|
-
|
|
257
|
+
destructiveChangeDetails?: string | undefined;
|
|
258
|
+
destructiveChangeReason?: string | undefined;
|
|
259
|
+
destructiveChangeSummary?: string | undefined;
|
|
256
260
|
}, {
|
|
257
|
-
|
|
261
|
+
destructiveChangeDetails?: string | undefined;
|
|
262
|
+
destructiveChangeReason?: string | undefined;
|
|
263
|
+
destructiveChangeSummary?: string | undefined;
|
|
258
264
|
}>;
|
|
259
265
|
declare const applyMigrationsHandleSchema: z.ZodObject<{
|
|
260
266
|
bindingKey: z.ZodOptional<z.ZodString>;
|
|
@@ -396,11 +402,17 @@ export declare const applyDevDatabaseMigrationsTaskMetadata: {
|
|
|
396
402
|
siblingTaskIds?: string[] | undefined;
|
|
397
403
|
}>;
|
|
398
404
|
readonly inputSchema: z.ZodObject<{
|
|
399
|
-
|
|
405
|
+
destructiveChangeDetails: z.ZodOptional<z.ZodString>;
|
|
406
|
+
destructiveChangeReason: z.ZodOptional<z.ZodString>;
|
|
407
|
+
destructiveChangeSummary: z.ZodOptional<z.ZodString>;
|
|
400
408
|
}, "strip", z.ZodTypeAny, {
|
|
401
|
-
|
|
409
|
+
destructiveChangeDetails?: string | undefined;
|
|
410
|
+
destructiveChangeReason?: string | undefined;
|
|
411
|
+
destructiveChangeSummary?: string | undefined;
|
|
402
412
|
}, {
|
|
403
|
-
|
|
413
|
+
destructiveChangeDetails?: string | undefined;
|
|
414
|
+
destructiveChangeReason?: string | undefined;
|
|
415
|
+
destructiveChangeSummary?: string | undefined;
|
|
404
416
|
}>;
|
|
405
417
|
readonly name: "startApplyDevDatabaseMigrations";
|
|
406
418
|
readonly pollSchedule: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-database-tasks.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/databases/dev-database-tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-database-tasks.d.ts","sourceRoot":"","sources":["../../../../../src/ai-service/agent/tools/databases/dev-database-tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,OAAO,KAAK,EACV,uBAAuB,EACvB,yBAAyB,EACzB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,qCAAqC,CAAC;AACnF,OAAO,KAAK,EAAc,SAAS,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE/E,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAGtE,OAAO,EAAE,KAAK,sBAAsB,EAAE,CAAC;AAEvC;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,eAAe,CAAC,KAAK,EAAE;QACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;QACjC,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KACrB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrC,WAAW,CAAC,KAAK,EAAE;QACjB,aAAa,EAAE,MAAM,CAAC;QACtB,WAAW,EAAE,sBAAsB,CAAC;KACrC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;IACrC,YAAY,CAAC,KAAK,EAAE;QAClB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;CACxC;AAED,UAAU,mBAAmB;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACtD,8EAA8E;IAC9E,SAAS,EAAE,MAAM,qBAAqB,CAAC;IACvC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC7C;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC;CAC5C;AAQD,QAAA,MAAM,yBAAyB;;;;;;;;;EAa7B,CAAC;AAEH,KAAK,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAExE,QAAA,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;EAExB,CAAC;AAEH,QAAA,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwBzB,CAAC;AAEH,oFAAoF;AACpF,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;EAW7B,CAAC;AAEH,eAAO,MAAM,qCAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASxC,CAAC;AASX,QAAA,MAAM,0BAA0B;;;;;;;;;;;;EAmB9B,CAAC;AAEH,QAAA,MAAM,2BAA2B;;;;;;;;;;;;;;;EAO/B,CAAC;AAEH,KAAK,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAC3D,KAAK,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC7D,KAAK,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AACvE,KAAK,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAEzE;;;;;;;;;GASG;AACH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqBnC,CAAC;AAEX;;;GAGG;AACH,eAAO,MAAM,sCAAsC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BzC,CAAC;AAoEX;;;;;;;;;;GAUG;AACH,wBAAgB,iCAAiC,CAC/C,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,GAC7D;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,oBAAoB,GAAG,SAAS,CAAA;CAAE,CAYrE;AAmPD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAWvD;AA+dD,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,mBAAmB,GAAG;IACrE,kCAAkC,EAAE,QAAQ,CAC1C,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,CAC1B,CAAC;IACF,4BAA4B,EAAE,QAAQ,CACpC,cAAc,EACd,eAAe,EACf,yBAAyB,CAC1B,CAAC;IACF,iCAAiC,EAAE,QAAQ,CACzC,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,EACzC,eAAe,EACf,yBAAyB,CAC1B,CAAC;CACH,CAmYA;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iCAAiC,CAC/C,gBAAgB,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,EAC7D,QAAQ,EAAE,yBAAyB,EACnC,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,GAClD,IAAI,CA4BN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,iCAAiC,CAC/C,SAAS,EAAE,SAAS,EACpB,gBAAgB,EAAE,uBAAuB,CAAC,kBAAkB,CAAC,GAC5D,MAAM,IAAI,CAqCZ"}
|