@kenkaiiii/ggcoder 5.50.0 → 5.51.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/app-sidecar.js +65 -2
- package/dist/app-sidecar.js.map +1 -1
- package/dist/core/ask-user.d.ts +57 -0
- package/dist/core/ask-user.d.ts.map +1 -0
- package/dist/core/ask-user.js +36 -0
- package/dist/core/ask-user.js.map +1 -0
- package/dist/core/mcp/elicitation-bridge.d.ts.map +1 -1
- package/dist/core/mcp/elicitation-bridge.js +12 -28
- package/dist/core/mcp/elicitation-bridge.js.map +1 -1
- package/dist/core/parked-requests.d.ts +40 -0
- package/dist/core/parked-requests.d.ts.map +1 -0
- package/dist/core/parked-requests.js +34 -0
- package/dist/core/parked-requests.js.map +1 -0
- package/dist/core/prompt-commands.d.ts.map +1 -1
- package/dist/core/prompt-commands.js +13 -12
- package/dist/core/prompt-commands.js.map +1 -1
- package/dist/system-prompt.js +1 -1
- package/dist/system-prompt.js.map +1 -1
- package/dist/tools/ask-user.d.ts +35 -0
- package/dist/tools/ask-user.d.ts.map +1 -0
- package/dist/tools/ask-user.js +157 -0
- package/dist/tools/ask-user.js.map +1 -0
- package/dist/tools/prompt-hints.d.ts.map +1 -1
- package/dist/tools/prompt-hints.js +4 -0
- package/dist/tools/prompt-hints.js.map +1 -1
- package/dist/tools/tool-tiers.d.ts.map +1 -1
- package/dist/tools/tool-tiers.js +4 -0
- package/dist/tools/tool-tiers.js.map +1 -1
- package/package.json +4 -4
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type ParkedRequests } from "./parked-requests.js";
|
|
2
|
+
/**
|
|
3
|
+
* How long an `ask_user` call waits before giving up on the user. The whole
|
|
4
|
+
* turn is blocked meanwhile, so this is bounded — but generously, since the
|
|
5
|
+
* user may be reading the reply the question belongs to.
|
|
6
|
+
*/
|
|
7
|
+
export declare const ASK_USER_TIMEOUT_MS: number;
|
|
8
|
+
/** One selectable answer. `value` is what the agent gets back; `label` is UI. */
|
|
9
|
+
export interface AskOption {
|
|
10
|
+
label: string;
|
|
11
|
+
value?: string;
|
|
12
|
+
/** One short line under the label, for rows the user has to weigh up. */
|
|
13
|
+
hint?: string;
|
|
14
|
+
/** Marks the agent's recommendation. Tagged in the UI, never preselected. */
|
|
15
|
+
recommended?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export type AskQuestionKind = "confirm" | "choice" | "multi" | "text";
|
|
18
|
+
export interface AskQuestion {
|
|
19
|
+
/** Stable key this question's answer is returned under. */
|
|
20
|
+
id: string;
|
|
21
|
+
question: string;
|
|
22
|
+
kind: AskQuestionKind;
|
|
23
|
+
/** Optional one-line elaboration shown under the question. */
|
|
24
|
+
detail?: string;
|
|
25
|
+
/** Choices for `choice`/`multi`. `confirm` defaults to Yes/No when omitted. */
|
|
26
|
+
options?: AskOption[];
|
|
27
|
+
/** Whether the free-text escape is offered (default true, forced on `text`). */
|
|
28
|
+
allowOther?: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface AskUserRequest {
|
|
31
|
+
questions: AskQuestion[];
|
|
32
|
+
}
|
|
33
|
+
/** The frame a host broadcasts so its UI can render the band. */
|
|
34
|
+
export interface AskUserPrompt extends AskUserRequest {
|
|
35
|
+
id: string;
|
|
36
|
+
}
|
|
37
|
+
export type AskUserResult = {
|
|
38
|
+
action: "answer";
|
|
39
|
+
answers: Record<string, string | string[]>;
|
|
40
|
+
} | {
|
|
41
|
+
action: "cancel";
|
|
42
|
+
};
|
|
43
|
+
export type AskUserBridge = ParkedRequests<AskUserRequest, AskUserResult>;
|
|
44
|
+
export declare function createAskUserBridge(opts: {
|
|
45
|
+
broadcast: (prompt: AskUserPrompt) => void;
|
|
46
|
+
onTimeout?: (prompt: AskUserPrompt) => void;
|
|
47
|
+
timeoutMs?: number;
|
|
48
|
+
}): AskUserBridge;
|
|
49
|
+
/**
|
|
50
|
+
* Render the user's answers as the tool result the model reads.
|
|
51
|
+
*
|
|
52
|
+
* Questions are echoed alongside their answers so the model never has to
|
|
53
|
+
* remember what `store` meant, and an unanswered question is stated as such
|
|
54
|
+
* rather than silently missing.
|
|
55
|
+
*/
|
|
56
|
+
export declare function formatAskResult(questions: AskQuestion[], result: AskUserResult): string;
|
|
57
|
+
//# sourceMappingURL=ask-user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../src/core/ask-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEjF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,QAAc,CAAC;AAE/C,iFAAiF;AACjF,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AAEtE,MAAM,WAAW,WAAW;IAC1B,2DAA2D;IAC3D,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,eAAe,CAAC;IACtB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,+EAA+E;IAC/E,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,gFAAgF;IAChF,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,WAAW,EAAE,CAAC;CAC1B;AAED,iEAAiE;AACjE,MAAM,WAAW,aAAc,SAAQ,cAAc;IACnD,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAA;CAAE,GAChE;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEzB,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AAE1E,wBAAgB,mBAAmB,CAAC,IAAI,EAAE;IACxC,SAAS,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC3C,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,aAAa,CAQhB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,WAAW,EAAE,EAAE,MAAM,EAAE,aAAa,GAAG,MAAM,CAavF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createParkedRequests } from "./parked-requests.js";
|
|
2
|
+
/**
|
|
3
|
+
* How long an `ask_user` call waits before giving up on the user. The whole
|
|
4
|
+
* turn is blocked meanwhile, so this is bounded — but generously, since the
|
|
5
|
+
* user may be reading the reply the question belongs to.
|
|
6
|
+
*/
|
|
7
|
+
export const ASK_USER_TIMEOUT_MS = 10 * 60_000;
|
|
8
|
+
export function createAskUserBridge(opts) {
|
|
9
|
+
return createParkedRequests({
|
|
10
|
+
idPrefix: "ask",
|
|
11
|
+
broadcast: opts.broadcast,
|
|
12
|
+
cancelValue: () => ({ action: "cancel" }),
|
|
13
|
+
timeoutMs: opts.timeoutMs ?? ASK_USER_TIMEOUT_MS,
|
|
14
|
+
...(opts.onTimeout ? { onTimeout: opts.onTimeout } : {}),
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Render the user's answers as the tool result the model reads.
|
|
19
|
+
*
|
|
20
|
+
* Questions are echoed alongside their answers so the model never has to
|
|
21
|
+
* remember what `store` meant, and an unanswered question is stated as such
|
|
22
|
+
* rather than silently missing.
|
|
23
|
+
*/
|
|
24
|
+
export function formatAskResult(questions, result) {
|
|
25
|
+
if (result.action === "cancel") {
|
|
26
|
+
return ("The user did not answer (dismissed or timed out). Do not ask again — " +
|
|
27
|
+
"state the assumption you are proceeding with, or stop and wait for them.");
|
|
28
|
+
}
|
|
29
|
+
const lines = questions.map((q) => {
|
|
30
|
+
const answer = result.answers[q.id];
|
|
31
|
+
const text = Array.isArray(answer) ? answer.join(", ") : answer;
|
|
32
|
+
return `${q.question}\n→ ${text?.trim() ? text.trim() : "(no answer)"}`;
|
|
33
|
+
});
|
|
34
|
+
return `The user answered:\n\n${lines.join("\n\n")}`;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=ask-user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../src/core/ask-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAuB,MAAM,sBAAsB,CAAC;AAEjF;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,GAAG,MAAM,CAAC;AA0C/C,MAAM,UAAU,mBAAmB,CAAC,IAInC;IACC,OAAO,oBAAoB,CAAgC;QACzD,QAAQ,EAAE,KAAK;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,mBAAmB;QAChD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC,CAAC;AACL,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,SAAwB,EAAE,MAAqB;IAC7E,IAAI,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,CACL,uEAAuE;YACvE,0EAA0E,CAC3E,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAChC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QAChE,OAAO,GAAG,CAAC,CAAC,QAAQ,OAAO,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,EAAE,CAAC;IAC1E,CAAC,CAAC,CAAC;IACH,OAAO,yBAAyB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;AACvD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elicitation-bridge.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/elicitation-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"elicitation-bridge.d.ts","sourceRoot":"","sources":["../../../src/core/mcp/elicitation-bridge.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAEpE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,QAAa,CAAC;AAEhD,iEAAiE;AACjE,MAAM,WAAW,iBAAkB,SAAQ,cAAc;IACvD,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,iBAAiB;IAChC,iDAAiD;IACjD,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,kFAAkF;IAClF,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC;IACtD,qEAAqE;IACrE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,oDAAoD;IACpD,SAAS,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAC/C,kEAAkE;IAClE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,GAAG,iBAAiB,CAiBpB"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { createParkedRequests } from "../parked-requests.js";
|
|
1
2
|
/**
|
|
2
3
|
* How long an elicitation waits for the user before auto-cancelling. Generous —
|
|
3
4
|
* the user may be reading a consent prompt — but bounded, because the MCP tool
|
|
@@ -16,36 +17,19 @@ export const MCP_ELICIT_TIMEOUT_MS = 5 * 60_000;
|
|
|
16
17
|
* elicitation that never resolves would hang the turn forever.
|
|
17
18
|
*/
|
|
18
19
|
export function createElicitationBridge(opts) {
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
pending.delete(id);
|
|
27
|
-
clearTimeout(entry.timer);
|
|
28
|
-
entry.resolve(result);
|
|
29
|
-
return true;
|
|
30
|
-
};
|
|
20
|
+
const parked = createParkedRequests({
|
|
21
|
+
idPrefix: "elicit",
|
|
22
|
+
broadcast: opts.broadcast,
|
|
23
|
+
cancelValue: () => ({ action: "cancel" }),
|
|
24
|
+
timeoutMs: opts.timeoutMs ?? MCP_ELICIT_TIMEOUT_MS,
|
|
25
|
+
...(opts.onTimeout ? { onTimeout: opts.onTimeout } : {}),
|
|
26
|
+
});
|
|
31
27
|
return {
|
|
32
|
-
onElicit:
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
opts.onTimeout?.(prompt);
|
|
36
|
-
settle(prompt.id, { action: "cancel" });
|
|
37
|
-
}, timeoutMs);
|
|
38
|
-
timer.unref?.();
|
|
39
|
-
pending.set(prompt.id, { resolve, timer });
|
|
40
|
-
opts.broadcast(prompt);
|
|
41
|
-
}),
|
|
42
|
-
settle,
|
|
43
|
-
cancelAll: () => {
|
|
44
|
-
for (const id of [...pending.keys()])
|
|
45
|
-
settle(id, { action: "cancel" });
|
|
46
|
-
},
|
|
28
|
+
onElicit: parked.park,
|
|
29
|
+
settle: parked.settle,
|
|
30
|
+
cancelAll: parked.cancelAll,
|
|
47
31
|
get pendingCount() {
|
|
48
|
-
return
|
|
32
|
+
return parked.pendingCount;
|
|
49
33
|
},
|
|
50
34
|
};
|
|
51
35
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"elicitation-bridge.js","sourceRoot":"","sources":["../../../src/core/mcp/elicitation-bridge.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"elicitation-bridge.js","sourceRoot":"","sources":["../../../src/core/mcp/elicitation-bridge.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAG7D;;;;GAIG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,MAAM,CAAC;AAkBhD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,uBAAuB,CAAC,IAMvC;IACC,MAAM,MAAM,GAAG,oBAAoB,CAA+B;QAChE,QAAQ,EAAE,QAAQ;QAClB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;QACzC,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,qBAAqB;QAClD,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC,CAAC;IAEH,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,IAAI;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,IAAI,YAAY;YACd,OAAO,MAAM,CAAC,YAAY,CAAC;QAC7B,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A registry of requests parked on the user.
|
|
3
|
+
*
|
|
4
|
+
* Both the MCP elicitation bridge and the `ask_user` tool need the same thing:
|
|
5
|
+
* a tool call blocks, its promise is held here under a fresh id, a host UI is
|
|
6
|
+
* told to render something, and the promise settles when the answer arrives
|
|
7
|
+
* over a different transport entirely.
|
|
8
|
+
*
|
|
9
|
+
* Every parked request is guaranteed a terminal state — the caller settles it,
|
|
10
|
+
* `cancelAll` releases it on abort/teardown, or the timeout fires. A request
|
|
11
|
+
* that never resolves would hang the turn forever.
|
|
12
|
+
*/
|
|
13
|
+
export interface ParkedRequests<Req, Res> {
|
|
14
|
+
/** Park a request: broadcasts it with a fresh id, resolves when settled. */
|
|
15
|
+
park: (request: Req) => Promise<Res>;
|
|
16
|
+
/** Resolve one parked request. False when the id is unknown (already settled). */
|
|
17
|
+
settle: (id: string, result: Res) => boolean;
|
|
18
|
+
/** Cancel every parked request — for run abort and host teardown. */
|
|
19
|
+
cancelAll: () => void;
|
|
20
|
+
/** How many requests are currently awaiting the user. */
|
|
21
|
+
readonly pendingCount: number;
|
|
22
|
+
}
|
|
23
|
+
export interface ParkedRequestsOptions<Req, Res> {
|
|
24
|
+
/** Prefix for generated ids, e.g. `elicit` → `elicit-1`. */
|
|
25
|
+
idPrefix: string;
|
|
26
|
+
/** Deliver the request to the UI. Must not throw. */
|
|
27
|
+
broadcast: (prompt: Req & {
|
|
28
|
+
id: string;
|
|
29
|
+
}) => void;
|
|
30
|
+
/** The result used for timeouts and `cancelAll`. */
|
|
31
|
+
cancelValue: () => Res;
|
|
32
|
+
/** How long a request waits for the user before auto-cancelling. */
|
|
33
|
+
timeoutMs: number;
|
|
34
|
+
/** Called when a request auto-cancels on timeout, for logging. */
|
|
35
|
+
onTimeout?: (prompt: Req & {
|
|
36
|
+
id: string;
|
|
37
|
+
}) => void;
|
|
38
|
+
}
|
|
39
|
+
export declare function createParkedRequests<Req extends object, Res>(opts: ParkedRequestsOptions<Req, Res>): ParkedRequests<Req, Res>;
|
|
40
|
+
//# sourceMappingURL=parked-requests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parked-requests.d.ts","sourceRoot":"","sources":["../../src/core/parked-requests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,cAAc,CAAC,GAAG,EAAE,GAAG;IACtC,4EAA4E;IAC5E,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,kFAAkF;IAClF,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,OAAO,CAAC;IAC7C,qEAAqE;IACrE,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,yDAAyD;IACzD,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB,CAAC,GAAG,EAAE,GAAG;IAC7C,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,qDAAqD;IACrD,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAClD,oDAAoD;IACpD,WAAW,EAAE,MAAM,GAAG,CAAC;IACvB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;IAClB,kEAAkE;IAClE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,GAAG;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;CACpD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,SAAS,MAAM,EAAE,GAAG,EAC1D,IAAI,EAAE,qBAAqB,CAAC,GAAG,EAAE,GAAG,CAAC,GACpC,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAoC1B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export function createParkedRequests(opts) {
|
|
2
|
+
const pending = new Map();
|
|
3
|
+
let seq = 0;
|
|
4
|
+
const settle = (id, result) => {
|
|
5
|
+
const entry = pending.get(id);
|
|
6
|
+
if (!entry)
|
|
7
|
+
return false;
|
|
8
|
+
pending.delete(id);
|
|
9
|
+
clearTimeout(entry.timer);
|
|
10
|
+
entry.resolve(result);
|
|
11
|
+
return true;
|
|
12
|
+
};
|
|
13
|
+
return {
|
|
14
|
+
park: (request) => new Promise((resolve) => {
|
|
15
|
+
const prompt = { ...request, id: `${opts.idPrefix}-${++seq}` };
|
|
16
|
+
const timer = setTimeout(() => {
|
|
17
|
+
opts.onTimeout?.(prompt);
|
|
18
|
+
settle(prompt.id, opts.cancelValue());
|
|
19
|
+
}, opts.timeoutMs);
|
|
20
|
+
timer.unref?.();
|
|
21
|
+
pending.set(prompt.id, { resolve, timer });
|
|
22
|
+
opts.broadcast(prompt);
|
|
23
|
+
}),
|
|
24
|
+
settle,
|
|
25
|
+
cancelAll: () => {
|
|
26
|
+
for (const id of [...pending.keys()])
|
|
27
|
+
settle(id, opts.cancelValue());
|
|
28
|
+
},
|
|
29
|
+
get pendingCount() {
|
|
30
|
+
return pending.size;
|
|
31
|
+
},
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=parked-requests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parked-requests.js","sourceRoot":"","sources":["../../src/core/parked-requests.ts"],"names":[],"mappings":"AAoCA,MAAM,UAAU,oBAAoB,CAClC,IAAqC;IAErC,MAAM,OAAO,GAAG,IAAI,GAAG,EAGpB,CAAC;IACJ,IAAI,GAAG,GAAG,CAAC,CAAC;IAEZ,MAAM,MAAM,GAAG,CAAC,EAAU,EAAE,MAAW,EAAW,EAAE;QAClD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC;QACzB,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnB,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IAEF,OAAO;QACL,IAAI,EAAE,CAAC,OAAO,EAAE,EAAE,CAChB,IAAI,OAAO,CAAM,CAAC,OAAO,EAAE,EAAE;YAC3B,MAAM,MAAM,GAAG,EAAE,GAAG,OAAO,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,QAAQ,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;YAC/D,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;gBAC5B,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,CAAC;gBACzB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACxC,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACnB,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YAC3C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACzB,CAAC,CAAC;QACJ,MAAM;QACN,SAAS,EAAE,GAAG,EAAE;YACd,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;gBAAE,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACvE,CAAC;QACD,IAAI,YAAY;YACd,OAAO,OAAO,CAAC,IAAI,CAAC;QACtB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AA2BD,eAAO,MAAM,eAAe,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"prompt-commands.d.ts","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;CAChB;AA2BD,eAAO,MAAM,eAAe,EAAE,aAAa,EA8b1C,CAAC;AAEF,gDAAgD;AAChD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAExE"}
|
|
@@ -92,18 +92,18 @@ Rules:
|
|
|
92
92
|
- Keep each cell concise but specific enough to be actionable.
|
|
93
93
|
- If no exciting validated features are found, output one row saying no fresh validated features were found.
|
|
94
94
|
|
|
95
|
-
After the table, ask
|
|
95
|
+
After the table, ask the user what to do with the \`ask_user\` tool: one \`choice\` question (\`id: "scope"\`, question "What should I do?") with these options, each carrying a one-line hint:
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
97
|
+
- Build all of these features in plan mode
|
|
98
|
+
- Build only the top priority ones in plan mode
|
|
99
|
+
|
|
100
|
+
Leave the free-text escape on so they can pick specific ranks or re-scope. The card is the ONLY ask: do not also list the options as text, and do not end with an asking line. Only if \`ask_user\` is unavailable, ask the same question in prose as a lettered list.
|
|
101
101
|
|
|
102
102
|
Do not start implementing until the user chooses.
|
|
103
103
|
|
|
104
|
-
If
|
|
104
|
+
If they choose all or the top ones, do not implement directly. First call the enter_plan tool, then research and design an implementation plan for the selected features (all of them, or the top 3 most exciting — ranks 1-3). The plan must cover, per feature: the user-facing behavior, the local files/anchors it touches, the implementation approach (compared against real-world examples via kencode search using literal code tokens), and how it will be verified. Write the plan to .gg/plans/<name>.md, then call exit_plan with the plan path so the user can review and approve it. Do not begin implementing until the user approves the plan.
|
|
105
105
|
|
|
106
|
-
If
|
|
106
|
+
If they answer with anything else, follow what they asked — specific features by rank, a refined or re-scoped list, or skipping — and do not implement anything until they say so.`,
|
|
107
107
|
},
|
|
108
108
|
{
|
|
109
109
|
name: "init",
|
|
@@ -225,11 +225,12 @@ description: Run checks, agent code review, commit with AI message, and push
|
|
|
225
225
|
one-line fix. If none, reply "CLEAR". This is a last check, not a deep audit - be fast.
|
|
226
226
|
|
|
227
227
|
4. If CLEAR: proceed straight to step 5 and push WITHOUT asking the user anything.
|
|
228
|
-
If issues >= 80 were reported: STOP, show the issues, and ask
|
|
229
|
-
"Want me to fix this first, or commit and push anyway?
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
228
|
+
If issues >= 80 were reported: STOP, show the issues, and ask with the \`ask_user\`
|
|
229
|
+
tool — one \`choice\` question (\`id: "land"\`, question "Want me to fix this first, or commit and push anyway?") with:
|
|
230
|
+
- "Fix it first, then commit & push" (recommended, hint: keeps the branch green)
|
|
231
|
+
- "Commit & push anyway" (hint: issue stays open in the log)
|
|
232
|
+
The card is the ONLY ask: show the issues, then stop — do not restate the two options as text or end with an asking line. Only if \`ask_user\` is unavailable, ask the same two options in prose.
|
|
233
|
+
On fix-first: fix, re-run step 1, then continue (no re-review). Otherwise continue as-is.
|
|
233
234
|
|
|
234
235
|
5. Stage relevant files with git add (specific files, not -A)
|
|
235
236
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-commands.js","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAS5C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC;AAE5B,8EAA8E;AAC9E,wEAAwE;AACxE,0DAA0D;AAC1D,MAAM,wBAAwB,GAAG,SAAS;IACxC,CAAC,CAAC,0MAA0M;IAC5M,CAAC,CAAC,uNAAuN,CAAC;AAE5N;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAU,EAAE,CACvD,+DAA+D,KAAK,8BAA8B,CAAC;AAErG;;;;;GAKG;AACH,MAAM,mBAAmB,GACvB,gIAAgI,CAAC;AAEnI,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mCAAmC;QAChD,MAAM,EAAE;;;;;;;;;;;;;;;;;;6BAkBiB,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;+NA2BkL,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"prompt-commands.js","sourceRoot":"","sources":["../../src/core/prompt-commands.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAS5C,MAAM,SAAS,GAAG,OAAO,EAAE,CAAC;AAE5B,8EAA8E;AAC9E,wEAAwE;AACxE,0DAA0D;AAC1D,MAAM,wBAAwB,GAAG,SAAS;IACxC,CAAC,CAAC,0MAA0M;IAC5M,CAAC,CAAC,uNAAuN,CAAC;AAE5N;;;GAGG;AACH,MAAM,aAAa,GAAG,CAAC,KAAsB,EAAU,EAAE,CACvD,+DAA+D,KAAK,8BAA8B,CAAC;AAErG;;;;;GAKG;AACH,MAAM,mBAAmB,GACvB,gIAAgI,CAAC;AAEnI,MAAM,CAAC,MAAM,eAAe,GAAoB;IAC9C;QACE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mCAAmC;QAChD,MAAM,EAAE;;;;;;;;;;;;;;;;;;6BAkBiB,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;+NA2BkL,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mLA+B/D;KAChL;IACD;QACE,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,+CAA+C;QAC5D,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qBAyCS,aAAa,CAAC,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkCnC,wBAAwB,EAAE;KACzB;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,4BAA4B;QACzC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mLA2DuK;KAChL;IACD;QACE,IAAI,EAAE,UAAU;QAChB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,mCAAmC;QAChD,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wEAyF4D;KACrE;IACD;QACE,IAAI,EAAE,SAAS;QACf,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE;;EAEV,mBAAmB;;;;;;;;;;;;;;;iFAe4D;KAC9E;IACD;QACE,IAAI,EAAE,cAAc;QACpB,OAAO,EAAE,EAAE;QACX,WAAW,EAAE,yBAAyB;QACtC,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4CAqCgC,aAAa,CAAC,GAAG,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gLAwDkH;KAC7K;CACF,CAAC;AAEF,gDAAgD;AAChD,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AACxF,CAAC"}
|
package/dist/system-prompt.js
CHANGED
|
@@ -54,7 +54,7 @@ function renderTalkSection() {
|
|
|
54
54
|
`**Cut what they can't act on.** Reasoning, findings, and history earn a clause only when they change the next move: conclusion, not investigation; never re-explain yourself.\n\n` +
|
|
55
55
|
`**Plain words by default.** Name a file, symbol, or command only when the user must act on it — then give its stake in the same breath (≤8 words). Otherwise say what it does, not what it's called.\n\n` +
|
|
56
56
|
`**Default to action.** Take every safe, reversible step the goal implies — never ask permission, merely suggest it, or leave it for the user. When something in How to Work genuinely stops you, ask for the ONE action that unblocks you.\n\n` +
|
|
57
|
-
`**
|
|
57
|
+
`**The ask = ONE channel, never two.** No question? Just end; never invent one. Any question — blocker or soft "want me to also…?" — goes to \`ask_user\`: the reply ends with NO asking line, never restated as text. Without it, the ask is the last line: \`> **<the ask>?** <your next step>\`. Blockquote nothing else. Several: one numbered list, each with your pick, inside the budget.\n\n` +
|
|
58
58
|
`Give ONE recommended approach — default to X, switch to Y only when [condition] — not a menu, unless a command's flow defines its own options. ` +
|
|
59
59
|
`Between tool calls, speak only when the plan changes: a decision, tradeoff, surprise finding, or the ask. No preamble, no recap, no hedging, no output dumps. ` +
|
|
60
60
|
`Surface tradeoffs and unverified claims plainly. Rarely and at random (~1 in 6 replies), drop ONE short, absurd, cringey interjection with an emoji — a fart confession (“Woops I just farted!”), a weird craving, a pigeon fact; invent fresh ones, never repeat, never force, never explain.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../src/system-prompt.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAc,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAsB,MAAM,0BAA0B,CAAC;AAC5F,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAEnG,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,gFAAgF;AAChF,wEAAwE;AACxE,MAAM,aAAa,GAAG;IACpB,oBAAoB;IACpB,WAAW;IACX,WAAW;IACX,cAAc;IACd,gBAAgB;CACjB,CAAC;AAEF,8EAA8E;AAC9E,MAAM,CAAC,MAAM,yBAAyB,GAAG,cAAc,CAAC,mBAAmB,CAAC;AAC5E,MAAM,eAAe,GAAG,mBAAmB,CAAC;AAE5C;;;;;GAKG;AACH,SAAS,WAAW,CAAC,QAA8B;IACjD,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC;AAC1E,CAAC;AAED,SAAS,qBAAqB,CAAC,QAA8B;IAC3D,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,OAAO,CACL,WAAW,IAAI,gEAAgE;QAC/E,iFAAiF;QACjF,oCAAoC,CACrC,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,iBAAiB;IACxB,OAAO,CACL,oBAAoB;QACpB,4EAA4E;QAC5E,sKAAsK;QACtK,kKAAkK;QAClK,qIAAqI;QACrI,mLAAmL;QACnL,0MAA0M;QAC1M,gPAAgP;QAChP,qYAAqY;QACrY,iJAAiJ;QACjJ,gKAAgK;QAChK,gSAAgS,CACjS,CAAC;AACJ,CAAC;AAED,SAAS,iBAAiB;IACxB,OAAO,CACL,oBAAoB;QACpB,iIAAiI;QACjI,kHAAkH;QAClH,gRAAgR;QAChR,sJAAsJ;QACtJ,wKAAwK;QACxK,2IAA2I;QAC3I,0KAA0K;QAC1K,+OAA+O;QAC/O,yIAAyI;QACzI,uJAAuJ;QACvJ,mHAAmH;QACnH,sKAAsK,CACvK,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO,CACL,2BAA2B;QAC3B,0GAA0G;QAC1G,sBAAsB;QACtB,2PAA2P;QAC3P,aAAa;QACb,oKAAoK;QACpK,oGAAoG;QACpG,4fAA4f;QAC5f,mFAAmF,CACpF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,gBAAoC;IAEpC,IAAI,CAAC,gBAAgB;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACnF,IAAI,WAAW,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IACrC,wEAAwE;IACxE,2EAA2E;IAC3E,2EAA2E;IAC3E,4EAA4E;IAC5E,0CAA0C;IAC1C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,MAAM,eAAe,GAAG,QAAQ;QAC9B,CAAC,CAAC,6JAA6J;QAC/J,CAAC,CAAC,EAAE,CAAC;IACP,OAAO,CACL,sBAAsB;QACtB,oCAAoC,gBAAgB,MAAM;QAC1D,oBAAoB,WAAW,CAAC,IAAI,EAAE,wBAAwB;QAC9D,+DAA+D;QAC/D,eAAe,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB,CAC5B,SAAwC,EACxC,QAA8B;IAE9B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IACxD,4EAA4E;IAC5E,yEAAyE;IACzE,6EAA6E;IAC7E,8EAA8E;IAC9E,6EAA6E;IAC7E,iCAAiC;IACjC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,iCAAiC,CAAC;QAC9D,CAAC,CAAC,0VAA0V;QAC5V,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC;YACzB,CAAC,CAAC,kLAAkL;YACpL,CAAC,CAAC,EAAE,CAAC;IACT,6EAA6E;IAC7E,wEAAwE;IACxE,4EAA4E;IAC5E,wCAAwC;IACxC,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC;QACnC,CAAC,CAAC,8DAA8D;QAChE,CAAC,CAAC,QAAQ,KAAK,WAAW;YACxB,CAAC,CAAC,2EAA2E;YAC7E,CAAC,CAAC,0CAA0C,CAAC;IACjD,OAAO,CACL,gCAAgC;QAChC,uRAAuR;QACvR,iJAAiJ,IAAI,GAAG;QACxJ,UAAU,CACX,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,SAAS,wBAAwB;IAC/B,OAAO,CACL,qBAAqB;QACrB,kFAAkF;QAClF,qGAAqG;QACrG,qDAAqD;QACrD,2DAA2D;QAC3D,+DAA+D;QAC/D,uFAAuF;QACvF,+CAA+C;QAC/C,uDAAuD;QACvD,8GAA8G;QAC9G,oCAAoC;QACpC,gDAAgD;QAChD,yEAAyE;QACzE,kIAAkI;QAClI,8HAA8H;QAC9H,2JAA2J;QAC3J,0MAA0M;QAC1M,qKAAqK;QACrK,uKAAuK;QACvK,iJAAiJ;QACjJ,oGAAoG;QACpG,6FAA6F;QAC7F,mMAAmM;QACnM,sFAAsF;QACtF,kLAAkL;QAClL,yJAAyJ,CAC1J,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,uBAAuB,CAAC,SAAwC;IACvE,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,SAAS,IAAI,kBAAkB,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC7C,IAAI,CAAC,QAAQ,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAErC,MAAM,KAAK,GAAG;QACZ,oOAAoO;QACpO,kOAAkO;QAClO,iHAAiH;QACjH,qGAAqG;QACrG,sGAAsG;KACvG,CAAC;IACF,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CACR,qKAAqK,CACtK,CAAC;IACJ,CAAC;IACD,OAAO,oBAAoB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC3E,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,kBAAkB,CACzB,SAAwC,EACxC,iBAAqC;IAErC,MAAM,WAAW,GAAG,SAAS,IAAI,kBAAkB,CAAC;IACpD,MAAM,QAAQ,GAAG,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,SAAS,GAAa,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI;YAAE,SAAS,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,MAAM,aAAa,GAAa,EAAE,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,IAAI;YAAE,aAAa,CAAC,IAAI,CAAC,OAAO,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IACD,2EAA2E;IAC3E,iFAAiF;IACjF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,GAAG,WAAW,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC;IAClE,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,IAAI,QAAQ;QAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,KAAK,CAAC,IAAI,CAAC,wDAAwD,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACvE,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,GAAW,EACX,SAAwB,cAAc;IAEtC,+CAA+C;IAC/C,MAAM,SAAS,GAA+D,EAAE,CAAC;IACjF,IAAI,GAAG,GAAG,GAAG,CAAC;IACd,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAElC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YACtC,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBACH,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACjD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS,CAAC,oDAAoD;YAChE,CAAC;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC;YACrD,wEAAwE;YACxE,yEAAyE;YACzE,IAAI,OAAO,EAAE,CAAC;gBACZ,SAAS,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;YAC5F,CAAC;YACD,MAAM,CAAC,6CAA6C;QACtD,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,MAAM,KAAK,GAAG;YAAE,MAAM;QAC1B,GAAG,GAAG,MAAM,CAAC;IACf,CAAC;IAED,gEAAgE;IAChE,IAAI,MAAM,GAAG,MAAM,CAAC,mBAAmB,CAAC;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACZ,MAAM,IAAI,IAAI,CAAC,KAAK,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,OAAO,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAED,mEAAmE;IACnE,MAAM,YAAY,GAAa,EAAE,CAAC;IAClC,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,SAAS;QAC3B,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1B,YAAY,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,OAAO,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,YAAY,CAAC,IAAI,CAAC,8BAA8B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAS,2BAA2B,CAAC,YAA+B;IAClE,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,OAAO,CACL,wBAAwB;QACxB,8HAA8H;QAC9H,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAC1B,CAAC;AACJ,CAAC;AAUD,SAAS,wBAAwB,CAAC,GAAW,EAAE,WAAqC;IAClF,2EAA2E;IAC3E,2EAA2E;IAC3E,MAAM,SAAS,GAAG,YAAY,CAAC,EAAE,CAAC,CAAC,aAAa;QAC9C,CAAC,CAAC,kCAAkC;QACpC,CAAC,CAAC,uBAAuB,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,WAAW,EAAE,eAAe,IAAI,EAAE,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,sEAAsE;QACtE,4BAA4B;QAC5B,KAAK,CAAC,IAAI,CAAC,uBAAuB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,eAAe,OAAO,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,KAAK,GAAG,WAAW,EAAE,YAAY,IAAI,EAAE,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CAAC,wBAAwB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,qBAAqB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AACjD,CAAC;AAED,SAAS,wBAAwB;IAC/B,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;IACzB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACjC,OAAO,GAAG,eAAe,mBAAmB,GAAG,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;AACrE,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,MAAc,EAAE,YAAoB;IAChE,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,YAAY;QAAE,OAAO,MAAM,CAAC;IACrE,MAAM,MAAM,GAAG,iCAAiC,YAAY,kCAAkC,CAAC;IAC/F,OAAO,GAAG,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,MAAM,EAAE,CAAC;AACnG,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,wBAAwB,GACnC,eAAe;IACf,sJAAsJ;IACtJ,iFAAiF;IACjF,uHAAuH;IACvH,4HAA4H;IAC5H,8EAA8E;IAC9E,sGAAsG,CAAC;AAEzG;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EACjB,IASC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,IAAI,cAAc,CAAC;IACpD,MAAM,QAAQ,GAAa,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC;IAE9C,MAAM,YAAY,GAAG,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAChF,IAAI,YAAY;QAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE9C,8EAA8E;IAC9E,qEAAqE;IACrE,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAClE,IAAI,iBAAiB;QAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAExD,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,qBAAqB,GAAG,2BAA2B,CACvD,MAAM,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAC9C,CAAC;QACF,IAAI,qBAAqB;YAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAClE,CAAC;IAED,QAAQ,CAAC,IAAI,CACX,wBAAwB;IACxB,yEAAyE;IACzE,4EAA4E;IAC5E,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,EACpD,wBAAwB,EAAE,CAC3B,CAAC;IAEF,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACtF,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,GAAW,EACX,MAAgB,EAChB,QAAkB,EAClB,gBAAyB,EACzB,SAA6B,EAC7B,eAAiC,EACjC,QAAmB,EACnB,WAAqC,EACrC,iBAAqC;AACrC,6EAA6E;AAC7E,aAA6B;IAE7B,MAAM,MAAM,GAAG,aAAa,IAAI,cAAc,CAAC;IAC/C,MAAM,QAAQ,GAAa;QACzB,qBAAqB,CAAC,QAAQ,CAAC;QAC/B,iBAAiB,EAAE;QACnB,iBAAiB,EAAE;KACpB,CAAC;IAEF,IAAI,QAAQ;QAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;IAErD,MAAM,mBAAmB,GAAG,MAAM,yBAAyB,CAAC,gBAAgB,CAAC,CAAC;IAC9E,IAAI,mBAAmB;QAAE,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAE5D,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEtF,MAAM,YAAY,GAAG,kBAAkB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IACtE,IAAI,YAAY;QAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAE9C,MAAM,iBAAiB,GAAG,uBAAuB,CAAC,SAAS,CAAC,CAAC;IAC7D,IAAI,iBAAiB;QAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IAExD,MAAM,qBAAqB,GAAG,2BAA2B,CACvD,MAAM,qBAAqB,CAAC,GAAG,EAAE,MAAM,CAAC,CACzC,CAAC;IACF,IAAI,qBAAqB;QAAE,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IAEhE,IAAI,eAAe,IAAI,eAAe,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,uBAAuB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjE,IAAI,UAAU;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE1C,MAAM,UAAU,GAAG,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QAC9D,MAAM,aAAa,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACtD,IAAI,aAAa;YAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,aAAa,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5D,IAAI,aAAa;YAAE,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IAClD,CAAC;IAED,QAAQ,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAC;IAEtF,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,wBAAwB,CAAC,CAAC;AACtF,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import type { AgentTool } from "@kenkaiiii/gg-agent";
|
|
3
|
+
import { type AskUserRequest, type AskUserResult } from "../core/ask-user.js";
|
|
4
|
+
/** Ask the host to put the questions in front of the user and wait. */
|
|
5
|
+
export type AskUserHandler = (request: AskUserRequest) => Promise<AskUserResult>;
|
|
6
|
+
declare const AskUserParams: z.ZodObject<{
|
|
7
|
+
questions: z.ZodArray<z.ZodObject<{
|
|
8
|
+
id: z.ZodString;
|
|
9
|
+
question: z.ZodString;
|
|
10
|
+
kind: z.ZodEnum<{
|
|
11
|
+
text: "text";
|
|
12
|
+
confirm: "confirm";
|
|
13
|
+
choice: "choice";
|
|
14
|
+
multi: "multi";
|
|
15
|
+
}>;
|
|
16
|
+
detail: z.ZodOptional<z.ZodString>;
|
|
17
|
+
options: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
18
|
+
label: z.ZodString;
|
|
19
|
+
value: z.ZodOptional<z.ZodString>;
|
|
20
|
+
hint: z.ZodOptional<z.ZodString>;
|
|
21
|
+
recommended: z.ZodOptional<z.ZodBoolean>;
|
|
22
|
+
}, z.core.$strip>>>;
|
|
23
|
+
allowOther: z.ZodOptional<z.ZodBoolean>;
|
|
24
|
+
}, z.core.$strip>>;
|
|
25
|
+
}, z.core.$strip>;
|
|
26
|
+
/**
|
|
27
|
+
* Ask the user a question and block the turn until they answer.
|
|
28
|
+
*
|
|
29
|
+
* Registered only by hosts that can actually render it (the gg-app sidecar).
|
|
30
|
+
* A subagent, a headless run or the TUI has nobody to answer, so the tool is
|
|
31
|
+
* simply absent there and the agent falls back to asking in prose.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createAskUserTool(ask: AskUserHandler): AgentTool<typeof AskUserParams>;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=ask-user.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-user.d.ts","sourceRoot":"","sources":["../../src/tools/ask-user.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,qBAAqB,CAAC;AAE7B,uEAAuE;AACvE,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,cAAc,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAgEjF,QAAA,MAAM,aAAa;;;;;;;;;;;;;;;;;;;iBAMjB,CAAC;AAwCH;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS,CAAC,OAAO,aAAa,CAAC,CAgEtF"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { ASK_USER_TIMEOUT_MS, formatAskResult, } from "../core/ask-user.js";
|
|
3
|
+
/** Beyond this the band stops being a question and becomes a form. */
|
|
4
|
+
const MAX_QUESTIONS = 5;
|
|
5
|
+
const MAX_OPTIONS = 6;
|
|
6
|
+
const Option = z.object({
|
|
7
|
+
label: z
|
|
8
|
+
.string()
|
|
9
|
+
.min(1)
|
|
10
|
+
.describe("A COMPLETE decision you can act on immediately, in plain words — what the user GETS, " +
|
|
11
|
+
"not the technical thing you do. Clicking sends this option and NOTHING else, so it " +
|
|
12
|
+
"must never ask the user to specify, describe, choose or clarify anything further: " +
|
|
13
|
+
"there is no text box behind a button. Bad: 'Fix something specific', 'Tell me more', " +
|
|
14
|
+
"'Something else', 'Other'. Good: 'Fix the failing upload test', 'Roll back the last " +
|
|
15
|
+
"deploy'. Under ~24 chars renders as a chip. Never a bare file path or jargon term."),
|
|
16
|
+
value: z.string().optional().describe("What you receive if picked. Defaults to the label."),
|
|
17
|
+
hint: z
|
|
18
|
+
.string()
|
|
19
|
+
.optional()
|
|
20
|
+
.describe("One short line under the label saying what this choice costs or trades off, in " +
|
|
21
|
+
"everyday language. Use it whenever the difference is not obvious from the label."),
|
|
22
|
+
recommended: z
|
|
23
|
+
.boolean()
|
|
24
|
+
.optional()
|
|
25
|
+
.describe("Marks your recommendation. Tagged in the UI, never preselected. Max one per question."),
|
|
26
|
+
});
|
|
27
|
+
const Question = z.object({
|
|
28
|
+
id: z.string().min(1).describe("Stable key your answer comes back under, e.g. `store`."),
|
|
29
|
+
question: z
|
|
30
|
+
.string()
|
|
31
|
+
.min(1)
|
|
32
|
+
.describe("The question in one plain line a non-technical person can answer without opening the " +
|
|
33
|
+
"code. Ask about the outcome they want, not the implementation. Define any term you " +
|
|
34
|
+
"cannot avoid. It must be answerable by a single click — never an open-ended prompt " +
|
|
35
|
+
"like 'What would you like me to do?', which a button cannot answer."),
|
|
36
|
+
kind: z
|
|
37
|
+
.enum(["confirm", "choice", "multi", "text"])
|
|
38
|
+
.describe("confirm = yes/no · choice = pick one of `options` · multi = pick any of `options` · text = free text only."),
|
|
39
|
+
detail: z
|
|
40
|
+
.string()
|
|
41
|
+
.optional()
|
|
42
|
+
.describe("One optional line of context under the question — the background they need to choose, " +
|
|
43
|
+
"in the same plain language."),
|
|
44
|
+
options: z.array(Option).max(MAX_OPTIONS).optional().describe("Required for choice/multi."),
|
|
45
|
+
allowOther: z
|
|
46
|
+
.boolean()
|
|
47
|
+
.optional()
|
|
48
|
+
.describe("Offer the free-text escape alongside the options. Default true."),
|
|
49
|
+
});
|
|
50
|
+
const AskUserParams = z.object({
|
|
51
|
+
questions: z
|
|
52
|
+
.array(Question)
|
|
53
|
+
.min(1)
|
|
54
|
+
.max(MAX_QUESTIONS)
|
|
55
|
+
.describe("One question, or the few that block you. Never pad the list."),
|
|
56
|
+
});
|
|
57
|
+
/** Yes/No is implied by `confirm`, so the model never has to spell it out. */
|
|
58
|
+
const CONFIRM_OPTIONS = [
|
|
59
|
+
{ label: "Yes", value: "yes" },
|
|
60
|
+
{ label: "No", value: "no" },
|
|
61
|
+
];
|
|
62
|
+
/**
|
|
63
|
+
* Options that hand the decision straight back to the user.
|
|
64
|
+
*
|
|
65
|
+
* A click carries no payload beyond the option itself, so "Fix something
|
|
66
|
+
* specific" reaches the agent as literally that — an instruction it cannot
|
|
67
|
+
* act on. Catching it here turns a dead-end question into a tool error the
|
|
68
|
+
* model can immediately correct, instead of a button that wastes a turn.
|
|
69
|
+
*/
|
|
70
|
+
const DEFERRING = [
|
|
71
|
+
/\bsomething specific\b/i,
|
|
72
|
+
/\bsomething else\b/i,
|
|
73
|
+
/^(other|tell me more|you (choose|decide)|let me (specify|decide|explain))\b/i,
|
|
74
|
+
/\b(specify|describe|clarify|choose|pick|select|name)\b.*\b(it|one|which|what|something|a file|the file)\b/i,
|
|
75
|
+
];
|
|
76
|
+
function defersBack(option) {
|
|
77
|
+
return DEFERRING.some((re) => re.test(option.label.trim()));
|
|
78
|
+
}
|
|
79
|
+
function normalize(question) {
|
|
80
|
+
const options = question.kind === "confirm" && !question.options?.length ? CONFIRM_OPTIONS : question.options;
|
|
81
|
+
return {
|
|
82
|
+
id: question.id,
|
|
83
|
+
question: question.question,
|
|
84
|
+
kind: question.kind,
|
|
85
|
+
...(question.detail ? { detail: question.detail } : {}),
|
|
86
|
+
...(options ? { options } : {}),
|
|
87
|
+
...(question.allowOther !== undefined ? { allowOther: question.allowOther } : {}),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Ask the user a question and block the turn until they answer.
|
|
92
|
+
*
|
|
93
|
+
* Registered only by hosts that can actually render it (the gg-app sidecar).
|
|
94
|
+
* A subagent, a headless run or the TUI has nobody to answer, so the tool is
|
|
95
|
+
* simply absent there and the agent falls back to asking in prose.
|
|
96
|
+
*/
|
|
97
|
+
export function createAskUserTool(ask) {
|
|
98
|
+
return {
|
|
99
|
+
name: "ask_user",
|
|
100
|
+
description: "Ask the user a question and wait for their answer, rendered as clickable options in the " +
|
|
101
|
+
"chat. THIS IS HOW YOU ASK — if a reply would otherwise end by asking them anything, ask " +
|
|
102
|
+
"it here instead. That covers the decision you are blocked on (a product or taste call, a " +
|
|
103
|
+
"destructive or irreversible action, a real tradeoff) AND the softer closer offering " +
|
|
104
|
+
'optional follow-up work ("want me to also…?", "should I do X next?"): both are ' +
|
|
105
|
+
"questions, so both belong on a clickable card rather than in prose. Do NOT use it for " +
|
|
106
|
+
"anything the code, docs or a command can answer, to confirm work you were already asked " +
|
|
107
|
+
"to do, or to check in on progress mid-task. No question to ask? Then do not call it — " +
|
|
108
|
+
"just end the reply.\n\n" +
|
|
109
|
+
"Write every question and option so a non-technical person can answer it confidently " +
|
|
110
|
+
"without reading the code: plain words, no jargon, no bare file paths or symbol names, " +
|
|
111
|
+
"each option describing the OUTCOME they get rather than the change you make. If two " +
|
|
112
|
+
"options could look the same to someone who has not seen the code, add a `hint` saying " +
|
|
113
|
+
"what each one costs. Always mark the option you would pick with `recommended`, so an " +
|
|
114
|
+
"unsure user can accept your judgment in one click.\n\n" +
|
|
115
|
+
"CRITICAL — every option must be a COMPLETE instruction you can act on the moment it is " +
|
|
116
|
+
"clicked. A click sends that option and nothing else: the user cannot type, elaborate or " +
|
|
117
|
+
"narrow it down. So never offer an option that only defers the decision back to them " +
|
|
118
|
+
"('Fix something specific', 'Choose a file', 'Tell me more', 'Something else'). If you " +
|
|
119
|
+
"need specifics you do not have, either find them yourself first, or list the actual " +
|
|
120
|
+
"candidates as separate options. The free-text escape already exists in the UI — you do " +
|
|
121
|
+
"not need to add an option for it.\n\n" +
|
|
122
|
+
"This REPLACES writing the question in your reply — do not also end the message with an " +
|
|
123
|
+
"asking line, and do not restate the options as text.\n\n" +
|
|
124
|
+
'Good: question "Where should people\'s login sessions be stored?", options "Keep it ' +
|
|
125
|
+
'simple (one file)" [recommended, hint "No extra setup, fine to a few thousand users"] ' +
|
|
126
|
+
'and "Use a real database" [hint "More setup now, handles far more users"].\n' +
|
|
127
|
+
'Bad: question "SQLite or Postgres for the session store?", options "SQLite", ' +
|
|
128
|
+
'"Postgres" — the user cannot tell what either choice costs them.',
|
|
129
|
+
parameters: AskUserParams,
|
|
130
|
+
// The turn is blocked on a human; nothing else in the batch may run first.
|
|
131
|
+
executionMode: "sequential",
|
|
132
|
+
// The host's own timeout is the real bound. Without this the loop's 5-min
|
|
133
|
+
// default would abort the call while the user is still reading the
|
|
134
|
+
// question, and the answer would land on a tool call that no longer exists.
|
|
135
|
+
timeoutMs: ASK_USER_TIMEOUT_MS + 30_000,
|
|
136
|
+
async execute({ questions }) {
|
|
137
|
+
const ids = new Set(questions.map((q) => q.id));
|
|
138
|
+
if (ids.size !== questions.length) {
|
|
139
|
+
return "Error: every question needs a unique `id`.";
|
|
140
|
+
}
|
|
141
|
+
const missing = questions.find((q) => (q.kind === "choice" || q.kind === "multi") && (q.options?.length ?? 0) < 2);
|
|
142
|
+
if (missing) {
|
|
143
|
+
return `Error: question "${missing.id}" is kind "${missing.kind}" and needs at least 2 options.`;
|
|
144
|
+
}
|
|
145
|
+
const deferring = questions.flatMap((q) => q.options ?? []).find(defersBack);
|
|
146
|
+
if (deferring) {
|
|
147
|
+
return (`Error: the option "${deferring.label}" asks the user to specify something, but a ` +
|
|
148
|
+
"click sends only that option — they cannot type or elaborate. Replace it with the " +
|
|
149
|
+
"actual choices, or find the specifics yourself first. (The free-text escape is " +
|
|
150
|
+
"already built into the UI.)");
|
|
151
|
+
}
|
|
152
|
+
const normalized = questions.map(normalize);
|
|
153
|
+
return formatAskResult(normalized, await ask({ questions: normalized }));
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=ask-user.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ask-user.js","sourceRoot":"","sources":["../../src/tools/ask-user.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-hints.d.ts","sourceRoot":"","sources":["../../src/tools/prompt-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"prompt-hints.d.ts","sourceRoot":"","sources":["../../src/tools/prompt-hints.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA+CpD,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,qBAAqB,EAAE,aAAa,CAAC;IAChD,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;CACd,CAqBA,CAAC;AAEF,gFAAgF;AAChF,wBAAgB,iBAAiB,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAKxE;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EA+B/C,CAAC;AAEF,oEAAoE;AACpE,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAsB/C,CAAC"}
|