@patze/code-cli 0.18.0 → 0.20.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/CHANGELOG.md +30 -0
- package/VERSION +1 -1
- package/dist/backend/preview-payload.d.ts +2 -0
- package/dist/backend/preview-payload.d.ts.map +1 -1
- package/dist/backend/preview-payload.js +27 -1
- package/dist/backend/preview-payload.js.map +1 -1
- package/dist/cli/commands/agent.d.ts.map +1 -1
- package/dist/cli/commands/agent.js +34 -11
- package/dist/cli/commands/agent.js.map +1 -1
- package/dist/cli/interactive/agent-events.d.ts +38 -0
- package/dist/cli/interactive/agent-events.d.ts.map +1 -0
- package/dist/cli/interactive/agent-events.js +65 -0
- package/dist/cli/interactive/agent-events.js.map +1 -0
- package/dist/cli/interactive/agent-execute-turn.d.ts +2 -0
- package/dist/cli/interactive/agent-execute-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-execute-turn.js +2 -1
- package/dist/cli/interactive/agent-execute-turn.js.map +1 -1
- package/dist/cli/interactive/agent-stream-format.d.ts +5 -1
- package/dist/cli/interactive/agent-stream-format.d.ts.map +1 -1
- package/dist/cli/interactive/agent-stream-format.js +30 -1
- package/dist/cli/interactive/agent-stream-format.js.map +1 -1
- package/dist/cli/interactive/agent-turn-classify.d.ts +1 -1
- package/dist/cli/interactive/agent-turn-classify.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn-classify.js +25 -9
- package/dist/cli/interactive/agent-turn-classify.js.map +1 -1
- package/dist/cli/interactive/agent-turn-context.d.ts +2 -0
- package/dist/cli/interactive/agent-turn-context.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn-context.js +8 -2
- package/dist/cli/interactive/agent-turn-context.js.map +1 -1
- package/dist/cli/interactive/agent-turn-format.d.ts +2 -0
- package/dist/cli/interactive/agent-turn-format.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn-format.js +38 -7
- package/dist/cli/interactive/agent-turn-format.js.map +1 -1
- package/dist/cli/interactive/agent-turn.d.ts +2 -0
- package/dist/cli/interactive/agent-turn.d.ts.map +1 -1
- package/dist/cli/interactive/agent-turn.js +39 -45
- package/dist/cli/interactive/agent-turn.js.map +1 -1
- package/dist/cli/interactive/plain-agent-render.d.ts +16 -0
- package/dist/cli/interactive/plain-agent-render.d.ts.map +1 -0
- package/dist/cli/interactive/plain-agent-render.js +67 -0
- package/dist/cli/interactive/plain-agent-render.js.map +1 -0
- package/dist/cli/interactive/tool-arg-summary.d.ts +7 -0
- package/dist/cli/interactive/tool-arg-summary.d.ts.map +1 -0
- package/dist/cli/interactive/tool-arg-summary.js +86 -0
- package/dist/cli/interactive/tool-arg-summary.js.map +1 -0
- package/package.json +1 -1
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import { isWorkspaceContextQuestion } from "./agent-turn-context.js";
|
|
1
2
|
const EN_CODE_INTENT = /\b(file|files|code|function|class|module|bug|error|test|tests|api|refactor|implement|fix|add|create|build|write|remove|migrate|debug|patch|diff|lint|deploy|readme|config|html|demo|page|app|script|component)\b/i;
|
|
2
3
|
const EN_TASK_LEAD = /^(fix|add|refactor|implement|update|create|build|write|remove|migrate|test|debug|improve|review|rename|extract|optimize|generate|make)\b/i;
|
|
3
4
|
const THAI_TASK_VERB = /(สร้าง|แก้ไข|แก้|เขียน|ลบ|อ่าน|เพิ่ม|ทำ|แปล|รัน|ทดสอบ|ดีบั๊ก|รีแฟคเตอร์|ย้าย|implement|generate)/i;
|
|
4
5
|
const THAI_CODE_NOUN = /(ไฟล์|โค้ด|ฟังก์ชัน|คลาส|โมดูล|แอป|หน้าเว็บ|html|css|javascript|typescript|api|เทส|บั๊ก|สคริปต์|demo)/i;
|
|
5
|
-
const PURE_META = /^(hi|hello|hey|thanks|thank you|ok|okay|yes|no|help|\/?help|สวัสดี|ขอบคุณ)
|
|
6
|
+
const PURE_META = /^(hi|hello|hey|thanks|thank you|ok|okay|yes|no|help|\/?help|สวัสดี|ขอบคุณ)/i;
|
|
6
7
|
const SEE_HEAR_META = /^(do you see|can you see|hear me|เห็นข้อความ|ได้ยิน|เห็น.*(ข้อความ|message))/i;
|
|
8
|
+
const CAPABILITY_META = /(ทำงานได้จริง|ใช้ได้จริง|ทำงานไหม|ใช้ได้ไหม|works?\s*(for real|actually)|actually work|are you (working|online|there)|can you help)/i;
|
|
7
9
|
function hasCodeIntent(text) {
|
|
8
10
|
return EN_CODE_INTENT.test(text) || THAI_CODE_NOUN.test(text) || /[{}();=`]/.test(text);
|
|
9
11
|
}
|
|
@@ -13,14 +15,26 @@ function hasTaskLead(text) {
|
|
|
13
15
|
THAI_TASK_VERB.test(text));
|
|
14
16
|
}
|
|
15
17
|
function isPureMetaChat(text) {
|
|
16
|
-
|
|
18
|
+
const trimmed = text.trim();
|
|
19
|
+
if (PURE_META.test(trimmed) || SEE_HEAR_META.test(trimmed)) {
|
|
20
|
+
return true;
|
|
21
|
+
}
|
|
22
|
+
if (/^(สวัสดี|ขอบคุณ)/.test(trimmed)) {
|
|
17
23
|
return true;
|
|
18
24
|
}
|
|
19
|
-
|
|
25
|
+
if (/(เห็น|ได้ยิน).*(ข้อความ|message)/i.test(trimmed)) {
|
|
26
|
+
return true;
|
|
27
|
+
}
|
|
28
|
+
return CAPABILITY_META.test(trimmed);
|
|
29
|
+
}
|
|
30
|
+
function isGenericQuestionWithoutCodeIntent(text) {
|
|
31
|
+
return ((/[\??]/.test(text) || /(ไหม|มั้ย|หรือเปล่า|ได้ไหม)/.test(text)) &&
|
|
32
|
+
!hasCodeIntent(text) &&
|
|
33
|
+
!hasTaskLead(text));
|
|
20
34
|
}
|
|
21
35
|
/**
|
|
22
36
|
* Decide whether free-text input is meta/chat or a coding task.
|
|
23
|
-
*
|
|
37
|
+
* Logged-in: cookbook sends coding work to the agent; meta/capability stays conversational.
|
|
24
38
|
*/
|
|
25
39
|
export function classifyTurnInput(text, options = {}) {
|
|
26
40
|
const trimmed = text.trim();
|
|
@@ -28,7 +42,12 @@ export function classifyTurnInput(text, options = {}) {
|
|
|
28
42
|
return "conversation";
|
|
29
43
|
}
|
|
30
44
|
if (options.authReady) {
|
|
31
|
-
|
|
45
|
+
if (isPureMetaChat(trimmed) ||
|
|
46
|
+
isGenericQuestionWithoutCodeIntent(trimmed) ||
|
|
47
|
+
isWorkspaceContextQuestion(trimmed)) {
|
|
48
|
+
return "conversation";
|
|
49
|
+
}
|
|
50
|
+
return "task";
|
|
32
51
|
}
|
|
33
52
|
const codeIntent = hasCodeIntent(trimmed);
|
|
34
53
|
const taskLead = hasTaskLead(trimmed);
|
|
@@ -38,10 +57,7 @@ export function classifyTurnInput(text, options = {}) {
|
|
|
38
57
|
if (isPureMetaChat(trimmed) && !codeIntent) {
|
|
39
58
|
return "conversation";
|
|
40
59
|
}
|
|
41
|
-
|
|
42
|
-
!codeIntent &&
|
|
43
|
-
!taskLead;
|
|
44
|
-
if (genericQuestion && trimmed.length <= 64) {
|
|
60
|
+
if (isGenericQuestionWithoutCodeIntent(trimmed)) {
|
|
45
61
|
return "conversation";
|
|
46
62
|
}
|
|
47
63
|
if (trimmed.length <= 32 && !codeIntent && !taskLead) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn-classify.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-classify.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent-turn-classify.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-classify.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,8 @@ export type ContextTurnInput = {
|
|
|
6
6
|
inspect: WorkspaceInspectResult;
|
|
7
7
|
authReady: boolean;
|
|
8
8
|
};
|
|
9
|
+
/** Meta prompts answered from local inspect — must not hit server preview. */
|
|
10
|
+
export declare function isWorkspaceContextQuestion(text: string): boolean;
|
|
9
11
|
/** Local, read-only answers from workspace inspect — no canned deflection. */
|
|
10
12
|
export declare function buildContextualReply(input: ContextTurnInput): string | null;
|
|
11
13
|
//# sourceMappingURL=agent-turn-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn-context.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,sBAAsB,CAAA;IAC/B,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAuCD,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CA0C3E"}
|
|
1
|
+
{"version":3,"file":"agent-turn-context.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAA;AAGtE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,IAAI,EAAE,MAAM,CAAA;IACZ,GAAG,EAAE,MAAM,CAAA;IACX,aAAa,EAAE,MAAM,CAAA;IACrB,OAAO,EAAE,sBAAsB,CAAA;IAC/B,SAAS,EAAE,OAAO,CAAA;CACnB,CAAA;AAuCD,8EAA8E;AAC9E,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAMhE;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI,CA0C3E"}
|
|
@@ -22,6 +22,12 @@ function asksWorkspaceContents(text) {
|
|
|
22
22
|
function asksAuthStatus(text) {
|
|
23
23
|
return /(auth|login|logged in|เชื่อม|ล็อกอิน|token)/i.test(text);
|
|
24
24
|
}
|
|
25
|
+
/** Meta prompts answered from local inspect — must not hit server preview. */
|
|
26
|
+
export function isWorkspaceContextQuestion(text) {
|
|
27
|
+
return (asksWorkspaceLocation(text) ||
|
|
28
|
+
asksWorkspaceContents(text) ||
|
|
29
|
+
asksAuthStatus(text));
|
|
30
|
+
}
|
|
25
31
|
/** Local, read-only answers from workspace inspect — no canned deflection. */
|
|
26
32
|
export function buildContextualReply(input) {
|
|
27
33
|
const { text, cwd, workspaceRoot, inspect, authReady } = input;
|
|
@@ -54,10 +60,10 @@ export function buildContextualReply(input) {
|
|
|
54
60
|
if (asksAuthStatus(text)) {
|
|
55
61
|
return isThai
|
|
56
62
|
? authReady
|
|
57
|
-
? "auth พร้อมแล้ว —
|
|
63
|
+
? "auth พร้อมแล้ว — สั่งงาน coding แล้ว agent stream ทำงานทันที (read-only · ไม่ auto-apply)"
|
|
58
64
|
: "auth ยังไม่ครบ — ใช้ /login หรือ PATZE_CODE_* แล้ว /status --check"
|
|
59
65
|
: authReady
|
|
60
|
-
? "Auth is ready —
|
|
66
|
+
? "Auth is ready — coding tasks start the live agent stream (read-only · no auto-apply)."
|
|
61
67
|
: "Auth incomplete — run /login or set PATZE_CODE_* then /status --check.";
|
|
62
68
|
}
|
|
63
69
|
return null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn-context.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-context.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAUzD,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,cAAc,CAAC,IAAI,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,0BAA0B,CAAC,IAAY;IAC9C,OAAO,CACL,qFAAqF,CAAC,IAAI,CACxF,IAAI,CACL;QACD,mDAAmD,CAAC,IAAI,CAAC,IAAI,CAAC,CAC/D,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC;QACrC,OAAO,KAAK,CAAA;IACd,CAAC;IAED,OAAO,CACL,6FAA6F,CAAC,IAAI,CAChG,IAAI,CACL;QACD,oEAAoE,CAAC,IAAI,CAAC,IAAI,CAAC;QAC/E,oDAAoD,CAAC,IAAI,CAAC,IAAI,CAAC,CAChE,CAAA;AACH,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY;IACzC,MAAM,UAAU,GAAG,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC/D,MAAM,WAAW,GAAG,sDAAsD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACrF,OAAO,UAAU,IAAI,WAAW,CAAA;AAClC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,8CAA8C,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAClE,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB,CAAC,KAAuB;IAC1D,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,CAAA;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAA;IAEzB,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,MAAM;YACpB,CAAC,CAAC,mBAAmB,OAAO,CAAC,SAAS,WAAW,OAAO,CAAC,cAAc,WAAW;YAClF,CAAC,CAAC,sBAAsB,OAAO,CAAC,SAAS,cAAc,OAAO,CAAC,cAAc,eAAe,CAAA;QAC9F,IAAI,OAAO,CAAC,SAAS,KAAK,CAAC,IAAI,OAAO,CAAC,cAAc,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,MAAM;gBACX,CAAC,CAAC,GAAG,OAAO,uDAAuD;gBACnE,CAAC,CAAC,GAAG,OAAO,6DAA6D,CAAA;QAC7E,CAAC;QACD,IAAI,OAAO,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnC,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YACzD,OAAO,GAAG,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAA;QACnE,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,IAAI,qBAAqB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YAC1B,OAAO,MAAM;gBACX,CAAC,CAAC,iBAAiB,aAAa,kCAAkC;gBAClE,CAAC,CAAC,cAAc,aAAa,4BAA4B,CAAA;QAC7D,CAAC;QACD,OAAO,MAAM;YACX,CAAC,CAAC,QAAQ,GAAG,qBAAqB,aAAa,EAAE;YACjD,CAAC,CAAC,QAAQ,GAAG,qBAAqB,aAAa,EAAE,CAAA;IACrD,CAAC;IAED,IAAI,cAAc,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,OAAO,MAAM;YACX,CAAC,CAAC,SAAS;gBACT,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"agent-turn-context.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,8 @@ export type ConversationTurnContext = {
|
|
|
19
19
|
/** Short reply for meta/chat prompts — uses local context when available. */
|
|
20
20
|
export declare function formatConversationTurnLines(objective: string, reply: string): string[];
|
|
21
21
|
export declare function resolveConversationReply(objective: string, context: ConversationTurnContext, contextualReply: string | null): string;
|
|
22
|
+
/** User-facing hint when execute returns blocked (server inline policy). */
|
|
23
|
+
export declare function formatRunBlockedHint(errorCode: string, findingCodes: string[], thai: boolean): string;
|
|
22
24
|
/** Compact task turn — agent voice, one screen. Details live in /context. */
|
|
23
25
|
export declare function formatAgentTurnLines(model: AgentTurnModel): string[];
|
|
24
26
|
/** Verbose formatter kept for /context and tests that need full preview fields. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn-format.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-format.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAI7D,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC9B,aAAa,EAAE,mBAAmB,CAAA;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,KAAK,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,OAAO,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,6EAA6E;AAC7E,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAEV;
|
|
1
|
+
{"version":3,"file":"agent-turn-format.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-format.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAI7D,MAAM,MAAM,cAAc,GAAG;IAC3B,SAAS,EAAE,MAAM,CAAA;IACjB,cAAc,EAAE,cAAc,CAAA;IAC9B,UAAU,EAAE,QAAQ,GAAG,OAAO,CAAA;IAC9B,aAAa,EAAE,mBAAmB,CAAA;IAClC,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;IACvB,SAAS,EAAE,MAAM,EAAE,CAAA;IACnB,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,KAAK,CAAA;CACxB,CAAA;AAED,MAAM,MAAM,uBAAuB,GAAG;IACpC,SAAS,EAAE,OAAO,CAAA;IAClB,cAAc,EAAE,MAAM,CAAA;IACtB,eAAe,EAAE,MAAM,CAAA;CACxB,CAAA;AAED,6EAA6E;AAC7E,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,EAAE,CAEV;AA0CD,wBAAgB,wBAAwB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,uBAAuB,EAChC,eAAe,EAAE,MAAM,GAAG,IAAI,GAC7B,MAAM,CAKR;AAuBD,4EAA4E;AAC5E,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EAAE,EACtB,IAAI,EAAE,OAAO,GACZ,MAAM,CAER;AAED,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,EAAE,CA4CpE;AAED,mFAAmF;AACnF,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,EAAE,CAY3E"}
|
|
@@ -7,10 +7,23 @@ export function formatConversationTurnLines(objective, reply) {
|
|
|
7
7
|
return formatAgentReply(reply);
|
|
8
8
|
}
|
|
9
9
|
function pickConversationReply(text, thai, authReady) {
|
|
10
|
-
if (/(
|
|
10
|
+
if (/(เห็น|ได้ยิน).*(ข้อความ|message)|do you see|can you see|hear me/i.test(text)) {
|
|
11
11
|
return thai
|
|
12
|
-
?
|
|
13
|
-
|
|
12
|
+
? authReady
|
|
13
|
+
? "เห็นครับ auth พร้อมแล้ว — สั่งงาน coding ได้เลย (เช่น “สร้างไฟล์ demo.html”)"
|
|
14
|
+
: "เห็นครับ พิมพ์งานที่อยากให้ช่วยได้เลย"
|
|
15
|
+
: authReady
|
|
16
|
+
? "I see your message. Auth is ready — describe a coding task to start the agent."
|
|
17
|
+
: "I see your message. Describe a coding task when you're ready.";
|
|
18
|
+
}
|
|
19
|
+
if (/(ทำงานได้จริง|ใช้ได้จริง|ทำงานไหม|actually work|works?\s*for real)/i.test(text)) {
|
|
20
|
+
return thai
|
|
21
|
+
? authReady
|
|
22
|
+
? "ทำงานจริงครับ — พิมพ์งาน coding แล้วจะเห็น run/tool/agent stream ทันที\nread-only: ไฟล์ยังไม่ถูกเขียนอัตโนมัติ · /diff → /approve → /apply"
|
|
23
|
+
: "ยังไม่ครบ — ใช้ /login หรือ PATZE_CODE_* ก่อน"
|
|
24
|
+
: authReady
|
|
25
|
+
? "Yes — describe a coding task to start the live agent stream.\nRead-only: no auto-apply until /diff → /approve → /apply."
|
|
26
|
+
: "Not yet — run /login or set PATZE_CODE_* first.";
|
|
14
27
|
}
|
|
15
28
|
if (/^(hi|hello|hey|สวัสดี)/i.test(text.trim())) {
|
|
16
29
|
return thai
|
|
@@ -26,7 +39,7 @@ function pickConversationReply(text, thai, authReady) {
|
|
|
26
39
|
return thai ? "ครับ" : "You're welcome.";
|
|
27
40
|
}
|
|
28
41
|
if (!authReady && thai) {
|
|
29
|
-
return "รับทราบครับ ตั้ง auth ด้วย /login หรือ env
|
|
42
|
+
return "รับทราบครับ ตั้ง auth ด้วย /login หรือ env ก่อนเรียก agent";
|
|
30
43
|
}
|
|
31
44
|
return thai
|
|
32
45
|
? "รับทราบครับ บอกงาน coding ที่ต้องการได้เลย"
|
|
@@ -38,6 +51,26 @@ export function resolveConversationReply(objective, context, contextualReply) {
|
|
|
38
51
|
}
|
|
39
52
|
return pickConversationReply(objective, inputLooksThai(objective), context.authReady);
|
|
40
53
|
}
|
|
54
|
+
function formatPreviewBlockedHint(errorCode, findingCodes, thai) {
|
|
55
|
+
const code = errorCode || findingCodes[0] || "blocked";
|
|
56
|
+
if (code === "PATZE_CODE_USER_TASK_CLI_WORKSPACE_CWD_INVALID") {
|
|
57
|
+
return thai
|
|
58
|
+
? `agent blocked (${code}) — server หา workspace ไม่เจอ\nใช้ path ที่ API มองเห็นได้ (WSL: /mnt/d/... ไม่ใช่ D:\\...) · /status --check`
|
|
59
|
+
: `Agent blocked (${code}) — server cannot see workspace_cwd.\nUse a path the API host resolves (WSL: /mnt/d/... not D:\\...).`;
|
|
60
|
+
}
|
|
61
|
+
if (code === "PATZE_CODE_USER_TASK_ROUTE_FEATURE_DISABLED") {
|
|
62
|
+
return thai
|
|
63
|
+
? `agent blocked — เปิด FEATURE_PATZE_CODE บน server`
|
|
64
|
+
: "Agent blocked — enable FEATURE_PATZE_CODE on the server.";
|
|
65
|
+
}
|
|
66
|
+
return thai
|
|
67
|
+
? `agent blocked (${code}) — /context · /status --check`
|
|
68
|
+
: `Agent blocked (${code}) — see /context or /status --check`;
|
|
69
|
+
}
|
|
70
|
+
/** User-facing hint when execute returns blocked (server inline policy). */
|
|
71
|
+
export function formatRunBlockedHint(errorCode, findingCodes, thai) {
|
|
72
|
+
return formatPreviewBlockedHint(errorCode, findingCodes, thai);
|
|
73
|
+
}
|
|
41
74
|
/** Compact task turn — agent voice, one screen. Details live in /context. */
|
|
42
75
|
export function formatAgentTurnLines(model) {
|
|
43
76
|
const ws = model.inspectSummary;
|
|
@@ -57,9 +90,7 @@ export function formatAgentTurnLines(model) {
|
|
|
57
90
|
}
|
|
58
91
|
}
|
|
59
92
|
else {
|
|
60
|
-
parts.push(thai
|
|
61
|
-
? `preview ไม่ผ่าน (${server.status}) — ดู /context`
|
|
62
|
-
: `Preview did not pass (${server.status}) — see /context`);
|
|
93
|
+
parts.push(formatPreviewBlockedHint(server.error_code ?? "", server.finding_codes ?? [], thai));
|
|
63
94
|
}
|
|
64
95
|
}
|
|
65
96
|
else if (model.previewResult.localSteps?.length) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn-format.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-format.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAC3E,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAA;AAGvE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAoBzD,6EAA6E;AAC7E,MAAM,UAAU,2BAA2B,CACzC,SAAiB,EACjB,KAAa;IAEb,OAAO,gBAAgB,CAAC,KAAK,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,qBAAqB,CAAC,IAAY,EAAE,IAAa,EAAE,SAAkB;IAC5E,IAAI,
|
|
1
|
+
{"version":3,"file":"agent-turn-format.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn-format.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type PlanPreviewOptions } from "../commands/plan.js";
|
|
2
2
|
import type { InteractiveSession } from "./session.js";
|
|
3
|
+
import type { AgentEvent } from "./agent-events.js";
|
|
3
4
|
export type AgentTurnResult = {
|
|
4
5
|
lines: string[];
|
|
5
6
|
exitCode: number;
|
|
@@ -9,6 +10,7 @@ export type AgentTurnOptions = PlanPreviewOptions & {
|
|
|
9
10
|
signal?: AbortSignal;
|
|
10
11
|
onTranscriptLine?: (line: string) => void;
|
|
11
12
|
onTranscriptPartial?: (chunk: string) => void;
|
|
13
|
+
onAgentEvent?: (event: AgentEvent) => void;
|
|
12
14
|
};
|
|
13
15
|
export declare function runAgentTurn(session: InteractiveSession, objective: string, options?: AgentTurnOptions): Promise<AgentTurnResult>;
|
|
14
16
|
//# sourceMappingURL=agent-turn.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"agent-turn.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"AAKA,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAM7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAgBtD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAGnD,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IAClD,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACzC,mBAAmB,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAC7C,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAA;CAC3C,CAAA;AAED,wBAAsB,YAAY,CAChC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CA2L1B"}
|
|
@@ -9,7 +9,7 @@ import { getPermissionModeDef } from "../../runtime/permissions.js";
|
|
|
9
9
|
import { guessWorkspaceRoot } from "../../runtime/workspace.js";
|
|
10
10
|
import { normalizePatchProposalInput } from "../../runtime/patch-proposal.js";
|
|
11
11
|
import { hasPatchBody } from "../../runtime/patch-proposal.js";
|
|
12
|
-
import { formatAgentTurnLines, formatConversationTurnLines, resolveConversationReply } from "./agent-turn-format.js";
|
|
12
|
+
import { formatAgentTurnLines, formatConversationTurnLines, resolveConversationReply, } from "./agent-turn-format.js";
|
|
13
13
|
import { formatAgentReply } from "./transcript-format.js";
|
|
14
14
|
import { classifyTurnInput } from "./agent-turn-classify.js";
|
|
15
15
|
import { buildContextualReply } from "./agent-turn-context.js";
|
|
@@ -60,6 +60,31 @@ export async function runAgentTurn(session, objective, options = {}) {
|
|
|
60
60
|
const inspectResult = inspectWorkspace(session.cwd, config.defaultAllow, config.defaultDeny);
|
|
61
61
|
const inspectSummary = toInspectSummary(inspectResult);
|
|
62
62
|
session.setLastInspectSummary(inspectSummary);
|
|
63
|
+
const canDirectExecute = authReady && isCliExecuteEnabled() && isExecuteAuthReady(config);
|
|
64
|
+
if (canDirectExecute) {
|
|
65
|
+
const execute = await runExecuteTurn({
|
|
66
|
+
cwd: session.cwd,
|
|
67
|
+
config,
|
|
68
|
+
objective: trimmed,
|
|
69
|
+
previewArtifactDigest: "",
|
|
70
|
+
modelHint,
|
|
71
|
+
conversationContext,
|
|
72
|
+
executionMode: session.getExecutionMode(),
|
|
73
|
+
fetchImpl: options.fetchImpl,
|
|
74
|
+
signal: options.signal,
|
|
75
|
+
onTranscriptLine: options.onTranscriptLine,
|
|
76
|
+
onTranscriptPartial: options.onTranscriptPartial,
|
|
77
|
+
onAgentEvent: options.onAgentEvent,
|
|
78
|
+
});
|
|
79
|
+
if (execute.run?.run_id) {
|
|
80
|
+
session.setLastRunId(execute.run.run_id);
|
|
81
|
+
}
|
|
82
|
+
return {
|
|
83
|
+
lines: execute.lines,
|
|
84
|
+
exitCode: execute.exitCode,
|
|
85
|
+
streamed: execute.streamed,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
63
88
|
const toolSteps = ["accept_task", "inspect_workspace"];
|
|
64
89
|
let planSource = "local";
|
|
65
90
|
let previewResult;
|
|
@@ -126,37 +151,7 @@ export async function runAgentTurn(session, objective, options = {}) {
|
|
|
126
151
|
if (pendingAction) {
|
|
127
152
|
session.setPendingAction(pendingAction);
|
|
128
153
|
}
|
|
129
|
-
|
|
130
|
-
const previewOk = previewResult.source === "server" &&
|
|
131
|
-
previewResult.server?.status === "ok" &&
|
|
132
|
-
Boolean(artifactDigest);
|
|
133
|
-
if (previewOk &&
|
|
134
|
-
isCliExecuteEnabled() &&
|
|
135
|
-
isExecuteAuthReady(config)) {
|
|
136
|
-
toolSteps.push("execute_stream");
|
|
137
|
-
const execute = await runExecuteTurn({
|
|
138
|
-
cwd: session.cwd,
|
|
139
|
-
config,
|
|
140
|
-
objective: trimmed,
|
|
141
|
-
previewArtifactDigest: artifactDigest,
|
|
142
|
-
modelHint,
|
|
143
|
-
conversationContext,
|
|
144
|
-
executionMode: session.getExecutionMode(),
|
|
145
|
-
fetchImpl: options.fetchImpl,
|
|
146
|
-
signal: options.signal,
|
|
147
|
-
onTranscriptLine: options.onTranscriptLine,
|
|
148
|
-
onTranscriptPartial: options.onTranscriptPartial,
|
|
149
|
-
});
|
|
150
|
-
if (execute.run?.run_id) {
|
|
151
|
-
session.setLastRunId(execute.run.run_id);
|
|
152
|
-
}
|
|
153
|
-
return {
|
|
154
|
-
lines: execute.lines,
|
|
155
|
-
exitCode: execute.exitCode,
|
|
156
|
-
streamed: execute.streamed,
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
if (previewOk && isCliExecuteEnabled() && !isExecuteAuthReady(config)) {
|
|
154
|
+
if (authReady && isCliExecuteEnabled() && !isExecuteAuthReady(config)) {
|
|
160
155
|
return {
|
|
161
156
|
lines: [
|
|
162
157
|
...formatAgentTurnLines({
|
|
@@ -170,25 +165,24 @@ export async function runAgentTurn(session, objective, options = {}) {
|
|
|
170
165
|
authReady,
|
|
171
166
|
mutationsEnabled: false,
|
|
172
167
|
}),
|
|
173
|
-
...formatAgentReply("
|
|
168
|
+
...formatAgentReply("Set user id via /login (session resolve) before agent execute."),
|
|
174
169
|
],
|
|
175
170
|
exitCode: 0,
|
|
176
171
|
streamed: false,
|
|
177
172
|
};
|
|
178
173
|
}
|
|
179
|
-
const model = {
|
|
180
|
-
objective: trimmed,
|
|
181
|
-
inspectSummary,
|
|
182
|
-
planSource,
|
|
183
|
-
previewResult,
|
|
184
|
-
permissionMode: permission.mode,
|
|
185
|
-
permissionLabel: permission.label,
|
|
186
|
-
toolSteps,
|
|
187
|
-
authReady,
|
|
188
|
-
mutationsEnabled: false,
|
|
189
|
-
};
|
|
190
174
|
return {
|
|
191
|
-
lines: formatAgentTurnLines(
|
|
175
|
+
lines: formatAgentTurnLines({
|
|
176
|
+
objective: trimmed,
|
|
177
|
+
inspectSummary,
|
|
178
|
+
planSource,
|
|
179
|
+
previewResult,
|
|
180
|
+
permissionMode: permission.mode,
|
|
181
|
+
permissionLabel: permission.label,
|
|
182
|
+
toolSteps,
|
|
183
|
+
authReady,
|
|
184
|
+
mutationsEnabled: false,
|
|
185
|
+
}),
|
|
192
186
|
exitCode,
|
|
193
187
|
streamed: false,
|
|
194
188
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-turn.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAA;AACnD,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAA;AAChE,OAAO,EAAE,cAAc,EAA2B,MAAM,qBAAqB,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAA;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAA;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAA;AAC7E,OAAO,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AAG9D,OAAO,
|
|
1
|
+
{"version":3,"file":"agent-turn.js","sourceRoot":"","sources":["../../../src/cli/interactive/agent-turn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plain (non-TUI) agent output — adapted from Cursor cookbook coding-agent-cli (index.ts).
|
|
3
|
+
* @see https://github.com/cursor/cookbook/tree/main/sdk/coding-agent-cli
|
|
4
|
+
*/
|
|
5
|
+
import { type AgentEvent } from "./agent-events.js";
|
|
6
|
+
export type PlainAnnotate = (message: string) => void;
|
|
7
|
+
export type PlainWriteAssistant = (text: string) => void;
|
|
8
|
+
export type PlainAgentHandlers = {
|
|
9
|
+
annotate: PlainAnnotate;
|
|
10
|
+
writeAssistant: PlainWriteAssistant;
|
|
11
|
+
assistantEndedWithNewline: () => boolean;
|
|
12
|
+
};
|
|
13
|
+
/** Cookbook-style stderr annotations + stdout assistant stream. */
|
|
14
|
+
export declare function createPlainAgentHandlers(stdout?: NodeJS.WriteStream, stderr?: NodeJS.WriteStream): PlainAgentHandlers;
|
|
15
|
+
export declare function renderPlainAgentEvent(event: AgentEvent, handlers: PlainAgentHandlers): void;
|
|
16
|
+
//# sourceMappingURL=plain-agent-render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-agent-render.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/plain-agent-render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAGL,KAAK,UAAU,EAChB,MAAM,mBAAmB,CAAA;AAE1B,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;AACrD,MAAM,MAAM,mBAAmB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;AAExD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,EAAE,aAAa,CAAA;IACvB,cAAc,EAAE,mBAAmB,CAAA;IACnC,yBAAyB,EAAE,MAAM,OAAO,CAAA;CACzC,CAAA;AAED,mEAAmE;AACnE,wBAAgB,wBAAwB,CACtC,MAAM,GAAE,MAAM,CAAC,WAA4B,EAC3C,MAAM,GAAE,MAAM,CAAC,WAA4B,GAC1C,kBAAkB,CAqBpB;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,UAAU,EACjB,QAAQ,EAAE,kBAAkB,GAC3B,IAAI,CA2CN"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plain (non-TUI) agent output — adapted from Cursor cookbook coding-agent-cli (index.ts).
|
|
3
|
+
* @see https://github.com/cursor/cookbook/tree/main/sdk/coding-agent-cli
|
|
4
|
+
*/
|
|
5
|
+
import { compactText, formatDuration, } from "./agent-events.js";
|
|
6
|
+
/** Cookbook-style stderr annotations + stdout assistant stream. */
|
|
7
|
+
export function createPlainAgentHandlers(stdout = process.stdout, stderr = process.stderr) {
|
|
8
|
+
let assistantEndedWithNewline = true;
|
|
9
|
+
const annotate = (message) => {
|
|
10
|
+
if (!assistantEndedWithNewline) {
|
|
11
|
+
stderr.write("\n");
|
|
12
|
+
}
|
|
13
|
+
stderr.write(`${message}\n`);
|
|
14
|
+
assistantEndedWithNewline = true;
|
|
15
|
+
};
|
|
16
|
+
const writeAssistant = (text) => {
|
|
17
|
+
stdout.write(text);
|
|
18
|
+
assistantEndedWithNewline = text.endsWith("\n");
|
|
19
|
+
};
|
|
20
|
+
return {
|
|
21
|
+
annotate,
|
|
22
|
+
writeAssistant,
|
|
23
|
+
assistantEndedWithNewline: () => assistantEndedWithNewline,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export function renderPlainAgentEvent(event, handlers) {
|
|
27
|
+
const { annotate, writeAssistant } = handlers;
|
|
28
|
+
switch (event.type) {
|
|
29
|
+
case "assistant_delta":
|
|
30
|
+
writeAssistant(event.text);
|
|
31
|
+
break;
|
|
32
|
+
case "thinking": {
|
|
33
|
+
const text = compactText(event.text);
|
|
34
|
+
if (text) {
|
|
35
|
+
annotate(`[thinking] ${text}`);
|
|
36
|
+
}
|
|
37
|
+
break;
|
|
38
|
+
}
|
|
39
|
+
case "tool": {
|
|
40
|
+
const params = event.params ? ` ${event.params}` : "";
|
|
41
|
+
annotate(`[tool] ${event.status} ${event.name}${params}`);
|
|
42
|
+
break;
|
|
43
|
+
}
|
|
44
|
+
case "status":
|
|
45
|
+
if (event.status !== "FINISHED" && event.status !== "COMPLETED") {
|
|
46
|
+
annotate(`[status] ${event.status}${event.message ? ` ${event.message}` : ""}`);
|
|
47
|
+
}
|
|
48
|
+
break;
|
|
49
|
+
case "task":
|
|
50
|
+
if (event.text || event.status) {
|
|
51
|
+
annotate(`[task] ${compactText([event.status, event.text].filter(Boolean).join(" "))}`);
|
|
52
|
+
}
|
|
53
|
+
break;
|
|
54
|
+
case "result": {
|
|
55
|
+
const details = [
|
|
56
|
+
`status=${event.status}`,
|
|
57
|
+
event.durationMs !== undefined ? `duration=${formatDuration(event.durationMs)}` : undefined,
|
|
58
|
+
event.errorCode ? `error=${event.errorCode}` : undefined,
|
|
59
|
+
].filter(Boolean);
|
|
60
|
+
annotate(`[done] ${details.join(" ")}`);
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
default:
|
|
64
|
+
break;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=plain-agent-render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plain-agent-render.js","sourceRoot":"","sources":["../../../src/cli/interactive/plain-agent-render.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool arg summarization — adapted from Cursor cookbook coding-agent-cli (agent.ts).
|
|
3
|
+
* @see https://github.com/cursor/cookbook/tree/main/sdk/coding-agent-cli
|
|
4
|
+
*/
|
|
5
|
+
export declare function summarizeToolArgs(toolName: string, args: unknown): string | undefined;
|
|
6
|
+
export declare function summarizeToolArgsFromDetail(toolName: string, detail: string | undefined): string | undefined;
|
|
7
|
+
//# sourceMappingURL=tool-arg-summary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-arg-summary.d.ts","sourceRoot":"","sources":["../../../src/cli/interactive/tool-arg-summary.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAiBrF;AAED,wBAAgB,2BAA2B,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAa5G"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool arg summarization — adapted from Cursor cookbook coding-agent-cli (agent.ts).
|
|
3
|
+
* @see https://github.com/cursor/cookbook/tree/main/sdk/coding-agent-cli
|
|
4
|
+
*/
|
|
5
|
+
export function summarizeToolArgs(toolName, args) {
|
|
6
|
+
if (!args || typeof args !== "object") {
|
|
7
|
+
return undefined;
|
|
8
|
+
}
|
|
9
|
+
const record = args;
|
|
10
|
+
const keyGroups = getToolSummaryKeys(toolName);
|
|
11
|
+
const parts = [];
|
|
12
|
+
for (const keys of keyGroups) {
|
|
13
|
+
const part = summarizeFirstValue(record, keys);
|
|
14
|
+
if (part) {
|
|
15
|
+
parts.push(part);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return parts.length > 0 ? parts.join(" ") : undefined;
|
|
19
|
+
}
|
|
20
|
+
export function summarizeToolArgsFromDetail(toolName, detail) {
|
|
21
|
+
if (!detail?.trim()) {
|
|
22
|
+
return undefined;
|
|
23
|
+
}
|
|
24
|
+
const trimmed = detail.trim();
|
|
25
|
+
if (trimmed.startsWith("{") || trimmed.startsWith("[")) {
|
|
26
|
+
try {
|
|
27
|
+
return summarizeToolArgs(toolName, JSON.parse(trimmed));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
return shortenValue(trimmed.replace(/\s+/g, " "));
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return shortenValue(trimmed.replace(/\s+/g, " "));
|
|
34
|
+
}
|
|
35
|
+
function getToolSummaryKeys(toolName) {
|
|
36
|
+
const name = toolName.toLowerCase();
|
|
37
|
+
if (name.includes("read")) {
|
|
38
|
+
return [["path", "filePath", "target_file", "absolutePath"], ["offset"], ["limit"]];
|
|
39
|
+
}
|
|
40
|
+
if (name.includes("glob")) {
|
|
41
|
+
return [["pattern", "glob", "glob_pattern"], ["path", "cwd", "target_directory"]];
|
|
42
|
+
}
|
|
43
|
+
if (name.includes("grep") || name.includes("search")) {
|
|
44
|
+
return [["pattern", "query"], ["path"], ["glob"], ["type"]];
|
|
45
|
+
}
|
|
46
|
+
if (name.includes("shell") || name.includes("terminal") || name.includes("command")) {
|
|
47
|
+
return [["command", "cmd"], ["cwd", "working_directory"]];
|
|
48
|
+
}
|
|
49
|
+
if (name.includes("edit") || name.includes("write") || name.includes("patch")) {
|
|
50
|
+
return [["path", "target_file", "file"], ["instruction"]];
|
|
51
|
+
}
|
|
52
|
+
return [["path", "file", "target_file"], ["pattern", "query", "command"]];
|
|
53
|
+
}
|
|
54
|
+
function summarizeFirstValue(record, keys) {
|
|
55
|
+
for (const key of keys) {
|
|
56
|
+
const value = record[key];
|
|
57
|
+
const formatted = formatArgValue(value);
|
|
58
|
+
if (formatted) {
|
|
59
|
+
return `${key}=${formatted}`;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return undefined;
|
|
63
|
+
}
|
|
64
|
+
function formatArgValue(value) {
|
|
65
|
+
if (typeof value === "string") {
|
|
66
|
+
return shortenValue(value.replace(/\s+/g, " ").trim());
|
|
67
|
+
}
|
|
68
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
69
|
+
return String(value);
|
|
70
|
+
}
|
|
71
|
+
if (Array.isArray(value)) {
|
|
72
|
+
const items = value
|
|
73
|
+
.slice(0, 3)
|
|
74
|
+
.map(formatArgValue)
|
|
75
|
+
.filter((item) => Boolean(item));
|
|
76
|
+
return items.length > 0 ? `[${items.join(",")}]` : undefined;
|
|
77
|
+
}
|
|
78
|
+
return undefined;
|
|
79
|
+
}
|
|
80
|
+
function shortenValue(value, maxLength = 80) {
|
|
81
|
+
if (value.length <= maxLength) {
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
return `${value.slice(0, maxLength - 3)}...`;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=tool-arg-summary.js.map
|