pi-agent-flow 1.8.29 → 1.8.30
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 +6 -6
- package/dist/flow-prompt.d.ts +1 -1
- package/dist/flow-prompt.js +1 -1
- package/dist/index.js +12 -12
- package/dist/index.js.map +1 -1
- package/dist/scramble.d.ts +7 -0
- package/dist/scramble.d.ts.map +1 -1
- package/dist/scramble.js +72 -53
- package/dist/scramble.js.map +1 -1
- package/dist/snapshot.d.ts +1 -1
- package/dist/snapshot.js +8 -8
- package/dist/snapshot.js.map +1 -1
- package/dist/spec-mode.d.ts +1 -1
- package/dist/spec-mode.js +2 -2
- package/dist/spec-mode.js.map +1 -1
- package/dist/steering-hint.d.ts +45 -0
- package/dist/steering-hint.d.ts.map +1 -0
- package/dist/{sliding-prompt.js → steering-hint.js} +43 -44
- package/dist/steering-hint.js.map +1 -0
- package/package.json +1 -1
- package/dist/sliding-prompt.d.ts +0 -45
- package/dist/sliding-prompt.d.ts.map +0 -1
- package/dist/sliding-prompt.js.map +0 -1
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Steering hint utilities.
|
|
3
|
+
*
|
|
4
|
+
* Manages the steering hint tag that is injected before the latest user
|
|
5
|
+
* message each turn. Provides helpers for stripping, detecting, and building
|
|
6
|
+
* the hint so they can be tested independently.
|
|
7
|
+
*/
|
|
8
|
+
export declare const STEERING_HINT_OPEN_TAG: string;
|
|
9
|
+
export declare const STEERING_HINT_CLOSE_TAG: string;
|
|
10
|
+
/** Query whether spec-driven planning mode is active. */
|
|
11
|
+
export declare function isSpecModeActive(): boolean;
|
|
12
|
+
/** Set spec-driven planning mode on/off. */
|
|
13
|
+
export declare function setSpecModeActive(active: boolean): void;
|
|
14
|
+
export declare const STEERING_HINT: string;
|
|
15
|
+
export declare const IMPLEMENT_PROMPT: string;
|
|
16
|
+
/** Input-message content types (string or multipart text-part array). */
|
|
17
|
+
type MessageContent = string | Array<{
|
|
18
|
+
type: string;
|
|
19
|
+
text?: string;
|
|
20
|
+
}>;
|
|
21
|
+
/** Strip any old steering hint tags from a string. */
|
|
22
|
+
export declare function stripSteeringHintText(text: string): string;
|
|
23
|
+
/** Strip steering hint tags from content (string or text-part array). */
|
|
24
|
+
export declare function stripSteeringHintFromContent(content: string | {
|
|
25
|
+
type: string;
|
|
26
|
+
text?: string;
|
|
27
|
+
}[]): string | {
|
|
28
|
+
type: string;
|
|
29
|
+
text?: string;
|
|
30
|
+
}[];
|
|
31
|
+
/** Check whether content (string or text-part array) contains the steering hint tag. */
|
|
32
|
+
export declare function contentContainsSteeringHintTag(content: MessageContent): boolean;
|
|
33
|
+
/** Deep-equality check that handles unordered object keys (unlike JSON.stringify). */
|
|
34
|
+
export declare function isJsonEqual(a: unknown, b: unknown): boolean;
|
|
35
|
+
/** Remove any existing steering-hint system messages and strip tags from user messages.
|
|
36
|
+
* Returns the sanitized messages and a flag indicating whether anything changed.
|
|
37
|
+
*/
|
|
38
|
+
export declare function stripSteeringHintsFromMessages(messages: any[]): {
|
|
39
|
+
messages: any[];
|
|
40
|
+
changed: boolean;
|
|
41
|
+
};
|
|
42
|
+
/** Build a system message containing the steering hint. */
|
|
43
|
+
export declare function makeSteeringHintMessage(referenceMessage?: any): any;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=steering-hint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steering-hint.d.ts","sourceRoot":"","sources":["../src/steering-hint.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,eAAO,MAAM,sBAAsB,QAAuD,CAAC;AAC3F,eAAO,MAAM,uBAAuB,QAAwD,CAAC;AAQ7F,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAEvD;AAED,eAAO,MAAM,aAAa,QAiDG,CAAC;AAE9B,eAAO,MAAM,gBAAgB,QAUA,CAAC;AAgB9B,yEAAyE;AACzE,KAAK,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAkBtE,sDAAsD;AACtD,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,yEAAyE;AACzE,wBAAgB,4BAA4B,CAC3C,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACjD,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAU5C;AAED,wFAAwF;AACxF,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAW/E;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAc3D;AAED;;GAEG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAoBrG;AAED,2DAA2D;AAC3D,wBAAgB,uBAAuB,CAAC,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,CAMnE"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Steering hint utilities.
|
|
3
3
|
*
|
|
4
|
-
* Manages the
|
|
4
|
+
* Manages the steering hint tag that is injected before the latest user
|
|
5
5
|
* message each turn. Provides helpers for stripping, detecting, and building
|
|
6
|
-
* the
|
|
6
|
+
* the hint so they can be tested independently.
|
|
7
7
|
*/
|
|
8
8
|
import { randomUUID } from "node:crypto";
|
|
9
9
|
// ---------------------------------------------------------------------------
|
|
10
10
|
// Tag constants
|
|
11
11
|
// ---------------------------------------------------------------------------
|
|
12
|
-
const
|
|
13
|
-
export const
|
|
14
|
-
export const
|
|
12
|
+
const STEERING_HINT_UUID = randomUUID();
|
|
13
|
+
export const STEERING_HINT_OPEN_TAG = `<pi-flow-steering-hint id="${STEERING_HINT_UUID}">`;
|
|
14
|
+
export const STEERING_HINT_CLOSE_TAG = `</pi-flow-steering-hint id="${STEERING_HINT_UUID}">`;
|
|
15
15
|
// ---------------------------------------------------------------------------
|
|
16
16
|
// Mode state — toggled by /spec command
|
|
17
17
|
// ---------------------------------------------------------------------------
|
|
@@ -24,9 +24,9 @@ export function isSpecModeActive() {
|
|
|
24
24
|
export function setSpecModeActive(active) {
|
|
25
25
|
_specModeActive = active;
|
|
26
26
|
}
|
|
27
|
-
export const
|
|
27
|
+
export const STEERING_HINT = `${STEERING_HINT_OPEN_TAG}\n` +
|
|
28
28
|
`You are in spec-driven planning mode.\n\n` +
|
|
29
|
-
`Your goal: Investigate the codebase, discuss with the user, and
|
|
29
|
+
`Your goal: Investigate the codebase, discuss with the user, and guide them to type /spec when ready to proceed to implementation.\n\n` +
|
|
30
30
|
`IMPORTANT: You are the orchestrator. You have batch_read, flow, web, and ask_user.\n` +
|
|
31
31
|
`You do NOT have bash or write. Delegate bash/write operations to flows.\n\n` +
|
|
32
32
|
`## Phase 1: Investigate\n\n` +
|
|
@@ -50,12 +50,10 @@ export const SLIDING_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
|
|
|
50
50
|
`- Mark recommended option with [preferred], place it first\n` +
|
|
51
51
|
`- 2-4 options per question with clear trade-off descriptions\n` +
|
|
52
52
|
`- Questions must be codebase-specific, not generic\n` +
|
|
53
|
-
`## Phase 3:
|
|
54
|
-
`
|
|
55
|
-
`"
|
|
56
|
-
|
|
57
|
-
`{complete spec}"\n\n` +
|
|
58
|
-
`### Spec template:\n` +
|
|
53
|
+
`## Phase 3: Recommend Exit\n\n` +
|
|
54
|
+
`Tell the user:\n` +
|
|
55
|
+
`"When you're ready to implement, type /spec to exit planning mode. A plan will be synthesized from our discussion and placed in the editor for review."\n\n` +
|
|
56
|
+
`### Keep the summary concise:\n` +
|
|
59
57
|
`- Investigation Findings (current state + evidence)\n` +
|
|
60
58
|
`- User Alignment (Q&A record with impact)\n` +
|
|
61
59
|
`- Technical Context (stack, deps, testing)\n` +
|
|
@@ -63,9 +61,8 @@ export const SLIDING_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
|
|
|
63
61
|
`- Implementation Plan (phased)\n` +
|
|
64
62
|
`- Risks & Mitigations\n` +
|
|
65
63
|
`- Assumptions\n\n` +
|
|
66
|
-
`## Phase 4:
|
|
67
|
-
`After
|
|
68
|
-
`"Spec written to .specs/{slug}/spec.md"\n\n` +
|
|
64
|
+
`## Phase 4: Hand-off\n\n` +
|
|
65
|
+
`After the user types /spec, the system synthesizes a plan and switches to implement mode. Do not initiate builds yourself.\n\n` +
|
|
69
66
|
`## Anti-patterns:\n` +
|
|
70
67
|
`- ❌ Asking without investigating first\n` +
|
|
71
68
|
`- ❌ Skipping investigation\n` +
|
|
@@ -73,8 +70,10 @@ export const SLIDING_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
|
|
|
73
70
|
`- ❌ Not marking [preferred]\n` +
|
|
74
71
|
`- ❌ Writing spec without Q&A record\n` +
|
|
75
72
|
`- ❌ Using bash/write directly (delegate to flows)\n` +
|
|
76
|
-
|
|
77
|
-
|
|
73
|
+
`- ❌ Using the build flow (use scout, ideas, or craft for investigation and planning)\n` +
|
|
74
|
+
`- ❌ Recommending to build or implement right away instead of guiding the user to type /spec\n` +
|
|
75
|
+
`${STEERING_HINT_CLOSE_TAG}`;
|
|
76
|
+
export const IMPLEMENT_PROMPT = `${STEERING_HINT_OPEN_TAG}\n` +
|
|
78
77
|
`You are the orchestrator. You have batch_read, flow, web, and ask_user.\n` +
|
|
79
78
|
`You do NOT have bash or write. Delegate all implementation to flows.\n\n` +
|
|
80
79
|
`- Context: Answer directly if possible; otherwise, investigate first, then delegate.\n` +
|
|
@@ -83,12 +82,12 @@ export const IMPLEMENT_PROMPT = `${SLIDING_PROMPT_OPEN_TAG}\n` +
|
|
|
83
82
|
`- Spec: If a spec exists in \`.specs/\`, read it first and use it to guide implementation.\n` +
|
|
84
83
|
`- Anti-patterns: [Never implement directly, Never ask what you can discover with tools, Never skip investigation]\n` +
|
|
85
84
|
`Note: Context is inherited automatically for child flow; write intents focusing only on new work.\n` +
|
|
86
|
-
`${
|
|
87
|
-
const
|
|
85
|
+
`${STEERING_HINT_CLOSE_TAG}`;
|
|
86
|
+
const STEERING_HINT_RE = new RegExp(STEERING_HINT_OPEN_TAG.replace(/[.*+?^${}()|[\]\\]/g, "\\$&") +
|
|
88
87
|
"[\\s\\S]*?" +
|
|
89
|
-
|
|
90
|
-
/** Legacy regex to strip old bare
|
|
91
|
-
const
|
|
88
|
+
STEERING_HINT_CLOSE_TAG.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"), "g");
|
|
89
|
+
/** Legacy regex to strip old bare steering hint tags (no id attribute). */
|
|
90
|
+
const LEGACY_STEERING_HINT_RE = /<pi-flow-steering-hint(?:\s[^>]*)?>[\s\S]*?<\/pi-flow-steering-hint(?:\s[^>]*)?>/g;
|
|
92
91
|
/** Type guard: is this a text-part with a string .text? */
|
|
93
92
|
function isTextPart(part) {
|
|
94
93
|
return (part != null &&
|
|
@@ -101,26 +100,26 @@ function isTextPart(part) {
|
|
|
101
100
|
// ---------------------------------------------------------------------------
|
|
102
101
|
// Public helpers
|
|
103
102
|
// ---------------------------------------------------------------------------
|
|
104
|
-
/** Strip any old
|
|
105
|
-
export function
|
|
106
|
-
return text.replace(
|
|
103
|
+
/** Strip any old steering hint tags from a string. */
|
|
104
|
+
export function stripSteeringHintText(text) {
|
|
105
|
+
return text.replace(STEERING_HINT_RE, "").replace(LEGACY_STEERING_HINT_RE, "");
|
|
107
106
|
}
|
|
108
|
-
/** Strip
|
|
109
|
-
export function
|
|
107
|
+
/** Strip steering hint tags from content (string or text-part array). */
|
|
108
|
+
export function stripSteeringHintFromContent(content) {
|
|
110
109
|
if (typeof content === "string") {
|
|
111
|
-
return
|
|
110
|
+
return stripSteeringHintText(content);
|
|
112
111
|
}
|
|
113
112
|
return content.map((c) => {
|
|
114
113
|
if (c.type === "text" && typeof c.text === "string") {
|
|
115
|
-
return { ...c, text:
|
|
114
|
+
return { ...c, text: stripSteeringHintText(c.text) };
|
|
116
115
|
}
|
|
117
116
|
return c;
|
|
118
117
|
});
|
|
119
118
|
}
|
|
120
|
-
/** Check whether content (string or text-part array) contains the
|
|
121
|
-
export function
|
|
122
|
-
const hasCurrent = (text) => text.includes(
|
|
123
|
-
const hasLegacy = (text) => text.includes("<pi-flow-
|
|
119
|
+
/** Check whether content (string or text-part array) contains the steering hint tag. */
|
|
120
|
+
export function contentContainsSteeringHintTag(content) {
|
|
121
|
+
const hasCurrent = (text) => text.includes(STEERING_HINT_OPEN_TAG);
|
|
122
|
+
const hasLegacy = (text) => text.includes("<pi-flow-steering-hint>");
|
|
124
123
|
const check = (text) => hasCurrent(text) || hasLegacy(text);
|
|
125
124
|
if (typeof content === "string") {
|
|
126
125
|
return check(content);
|
|
@@ -150,15 +149,15 @@ export function isJsonEqual(a, b) {
|
|
|
150
149
|
}
|
|
151
150
|
return true;
|
|
152
151
|
}
|
|
153
|
-
/** Remove any existing
|
|
152
|
+
/** Remove any existing steering-hint system messages and strip tags from user messages.
|
|
154
153
|
* Returns the sanitized messages and a flag indicating whether anything changed.
|
|
155
154
|
*/
|
|
156
|
-
export function
|
|
155
|
+
export function stripSteeringHintsFromMessages(messages) {
|
|
157
156
|
let changed = false;
|
|
158
157
|
const result = messages
|
|
159
158
|
.filter((msg) => {
|
|
160
|
-
// Remove dedicated
|
|
161
|
-
if (msg.role === "system" &&
|
|
159
|
+
// Remove dedicated steering hint system messages
|
|
160
|
+
if (msg.role === "system" && contentContainsSteeringHintTag(msg.content)) {
|
|
162
161
|
changed = true;
|
|
163
162
|
return false;
|
|
164
163
|
}
|
|
@@ -168,7 +167,7 @@ export function stripSlidingPromptsFromMessages(messages) {
|
|
|
168
167
|
// Also strip stray tags embedded in user/assistant messages
|
|
169
168
|
if (!("content" in msg))
|
|
170
169
|
return msg;
|
|
171
|
-
const stripped =
|
|
170
|
+
const stripped = stripSteeringHintFromContent(msg.content);
|
|
172
171
|
if (isJsonEqual(stripped, msg.content))
|
|
173
172
|
return msg;
|
|
174
173
|
changed = true;
|
|
@@ -176,12 +175,12 @@ export function stripSlidingPromptsFromMessages(messages) {
|
|
|
176
175
|
});
|
|
177
176
|
return { messages: result, changed };
|
|
178
177
|
}
|
|
179
|
-
/** Build a system message containing the
|
|
180
|
-
export function
|
|
178
|
+
/** Build a system message containing the steering hint. */
|
|
179
|
+
export function makeSteeringHintMessage(referenceMessage) {
|
|
181
180
|
return {
|
|
182
181
|
role: "system",
|
|
183
|
-
content: _specModeActive ?
|
|
182
|
+
content: _specModeActive ? STEERING_HINT : IMPLEMENT_PROMPT,
|
|
184
183
|
timestamp: referenceMessage?.timestamp,
|
|
185
184
|
};
|
|
186
185
|
}
|
|
187
|
-
//# sourceMappingURL=
|
|
186
|
+
//# sourceMappingURL=steering-hint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"steering-hint.js","sourceRoot":"","sources":["../src/steering-hint.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/dist/sliding-prompt.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sliding system prompt utilities.
|
|
3
|
-
*
|
|
4
|
-
* Manages the sliding prompt tag that is injected before the latest user
|
|
5
|
-
* message each turn. Provides helpers for stripping, detecting, and building
|
|
6
|
-
* the prompt so they can be tested independently.
|
|
7
|
-
*/
|
|
8
|
-
export declare const SLIDING_PROMPT_OPEN_TAG: string;
|
|
9
|
-
export declare const SLIDING_PROMPT_CLOSE_TAG: string;
|
|
10
|
-
/** Query whether spec-driven planning mode is active. */
|
|
11
|
-
export declare function isSpecModeActive(): boolean;
|
|
12
|
-
/** Set spec-driven planning mode on/off. */
|
|
13
|
-
export declare function setSpecModeActive(active: boolean): void;
|
|
14
|
-
export declare const SLIDING_PROMPT: string;
|
|
15
|
-
export declare const IMPLEMENT_PROMPT: string;
|
|
16
|
-
/** Input-message content types (string or multipart text-part array). */
|
|
17
|
-
type MessageContent = string | Array<{
|
|
18
|
-
type: string;
|
|
19
|
-
text?: string;
|
|
20
|
-
}>;
|
|
21
|
-
/** Strip any old sliding system prompt tags from a string. */
|
|
22
|
-
export declare function stripSlidingPromptText(text: string): string;
|
|
23
|
-
/** Strip sliding prompt tags from content (string or text-part array). */
|
|
24
|
-
export declare function stripSlidingPromptFromContent(content: string | {
|
|
25
|
-
type: string;
|
|
26
|
-
text?: string;
|
|
27
|
-
}[]): string | {
|
|
28
|
-
type: string;
|
|
29
|
-
text?: string;
|
|
30
|
-
}[];
|
|
31
|
-
/** Check whether content (string or text-part array) contains the sliding tag. */
|
|
32
|
-
export declare function contentContainsSlidingTag(content: MessageContent): boolean;
|
|
33
|
-
/** Deep-equality check that handles unordered object keys (unlike JSON.stringify). */
|
|
34
|
-
export declare function isJsonEqual(a: unknown, b: unknown): boolean;
|
|
35
|
-
/** Remove any existing sliding-system-prompt system messages and strip tags from user messages.
|
|
36
|
-
* Returns the sanitized messages and a flag indicating whether anything changed.
|
|
37
|
-
*/
|
|
38
|
-
export declare function stripSlidingPromptsFromMessages(messages: any[]): {
|
|
39
|
-
messages: any[];
|
|
40
|
-
changed: boolean;
|
|
41
|
-
};
|
|
42
|
-
/** Build a system message containing the sliding prompt. */
|
|
43
|
-
export declare function makeSlidingPromptMessage(referenceMessage?: any): any;
|
|
44
|
-
export {};
|
|
45
|
-
//# sourceMappingURL=sliding-prompt.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sliding-prompt.d.ts","sourceRoot":"","sources":["../src/sliding-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAUH,eAAO,MAAM,uBAAuB,QAAyD,CAAC;AAC9F,eAAO,MAAM,wBAAwB,QAA0D,CAAC;AAQhG,yDAAyD;AACzD,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED,4CAA4C;AAC5C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,IAAI,CAEvD;AAED,eAAO,MAAM,cAAc,QAkDG,CAAC;AAE/B,eAAO,MAAM,gBAAgB,QAUC,CAAC;AAgB/B,yEAAyE;AACzE,KAAK,cAAc,GAAG,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAkBtE,8DAA8D;AAC9D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,0EAA0E;AAC1E,wBAAgB,6BAA6B,CAC5C,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,GACjD,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAAE,CAU5C;AAED,kFAAkF;AAClF,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAW1E;AAED,sFAAsF;AACtF,wBAAgB,WAAW,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAc3D;AAED;;GAEG;AACH,wBAAgB,+BAA+B,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG;IAAE,QAAQ,EAAE,GAAG,EAAE,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAoBtG;AAED,4DAA4D;AAC5D,wBAAgB,wBAAwB,CAAC,gBAAgB,CAAC,EAAE,GAAG,GAAG,GAAG,CAMpE"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sliding-prompt.js","sourceRoot":"","sources":["../src/sliding-prompt.ts"],"names":[],"mappings":"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"}
|