ashral 0.1.9 → 0.1.10
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/adapters/claudeAdapter.d.ts.map +1 -1
- package/dist/adapters/claudeAdapter.js +4 -0
- package/dist/adapters/claudeAdapter.js.map +1 -1
- package/dist/ai/extractQuestion.d.ts +7 -0
- package/dist/ai/extractQuestion.d.ts.map +1 -0
- package/dist/ai/extractQuestion.js +50 -0
- package/dist/ai/extractQuestion.js.map +1 -0
- package/dist/api/backendClient.d.ts +1 -1
- package/dist/api/backendClient.d.ts.map +1 -1
- package/dist/api/backendClient.js +2 -2
- package/dist/api/backendClient.js.map +1 -1
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -1
- package/dist/notifications/backendNotifier.d.ts.map +1 -1
- package/dist/notifications/backendNotifier.js +1 -1
- package/dist/notifications/backendNotifier.js.map +1 -1
- package/dist/notifications/notifier.d.ts +2 -0
- package/dist/notifications/notifier.d.ts.map +1 -1
- package/dist/runner/runSession.d.ts.map +1 -1
- package/dist/runner/runSession.js +35 -1
- package/dist/runner/runSession.js.map +1 -1
- package/dist/runner/sessionState.d.ts +1 -1
- package/dist/runner/sessionState.d.ts.map +1 -1
- package/dist/runner/sessionState.js +2 -1
- package/dist/runner/sessionState.js.map +1 -1
- package/dist/types/events.d.ts +2 -0
- package/dist/types/events.d.ts.map +1 -1
- package/package.json +2 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/claudeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"claudeAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/claudeAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AA6DtD,qBAAa,aAAc,SAAQ,WAAW;IAC5C,QAAQ,CAAC,SAAS,YAAY;IAE9B,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,cAAc;IAWrD,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,aAAa,GAAG,IAAI;IAqB7E,OAAO,CAAC,OAAO;CAGhB"}
|
|
@@ -15,13 +15,17 @@ function stripAnsi(raw) {
|
|
|
15
15
|
*/
|
|
16
16
|
// Claude is prompting the user to approve a tool call or destructive action
|
|
17
17
|
const APPROVAL_PATTERNS = [
|
|
18
|
+
/claude wants to/i, // "Claude wants to use Bash"
|
|
18
19
|
/do you want to/i,
|
|
19
20
|
/allow this/i,
|
|
21
|
+
/allow all/i, // "Allow all Bash commands for this session"
|
|
22
|
+
/yes,?\s+and don't ask/i, // "Yes, and don't ask again"
|
|
20
23
|
/\(y\/n\)/i,
|
|
21
24
|
/\[y\/n\]/i,
|
|
22
25
|
/yes\/no/i,
|
|
23
26
|
/press enter to confirm/i,
|
|
24
27
|
/approve|deny/i,
|
|
28
|
+
/^\s*❯?\s*allow\s*$/im, // standalone "Allow" / "❯ Allow" option line
|
|
25
29
|
];
|
|
26
30
|
// Claude is waiting for the user to type a new message
|
|
27
31
|
const WAITING_PATTERNS = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claudeAdapter.js","sourceRoot":"","sources":["../../src/adapters/claudeAdapter.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAGjE,oEAAoE;AACpE,MAAM,OAAO,GAAG,mDAAmD,CAAC;AAEpE,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AAEH,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG;IACxB,iBAAiB;IACjB,aAAa;IACb,WAAW;IACX,WAAW;IACX,UAAU;IACV,yBAAyB;IACzB,eAAe;
|
|
1
|
+
{"version":3,"file":"claudeAdapter.js","sourceRoot":"","sources":["../../src/adapters/claudeAdapter.ts"],"names":[],"mappings":";;;AAAA,+CAAiE;AAGjE,oEAAoE;AACpE,MAAM,OAAO,GAAG,mDAAmD,CAAC;AAEpE,SAAS,SAAS,CAAC,GAAW;IAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AAEH,4EAA4E;AAC5E,MAAM,iBAAiB,GAAG;IACxB,kBAAkB,EAAmB,6BAA6B;IAClE,iBAAiB;IACjB,aAAa;IACb,YAAY,EAAyB,6CAA6C;IAClF,wBAAwB,EAAa,6BAA6B;IAClE,WAAW;IACX,WAAW;IACX,UAAU;IACV,yBAAyB;IACzB,eAAe;IACf,sBAAsB,EAAe,6CAA6C;CACnF,CAAC;AAEF,uDAAuD;AACvD,MAAM,gBAAgB,GAAG;IACvB,SAAS,EAAgB,uBAAuB;IAChD,SAAS,EAAgB,0FAA0F;IACnH,gBAAgB,EAAS,sDAAsD;IAC/E,iBAAiB,EAAQ,iDAAiD;IAC1E,iBAAiB,EAAS,qDAAqD;IAC/E,sBAAsB;IACtB,0BAA0B;IAC1B,cAAc;CACf,CAAC;AAEF,gCAAgC;AAChC,MAAM,gBAAgB,GAAG;IACvB,iCAAiC;IACjC,qCAAqC;IACrC,6BAA6B;IAC7B,iBAAiB;CAClB,CAAC;AAEF,+BAA+B;AAC/B,MAAM,cAAc,GAAG;IACrB,WAAW;IACX,cAAc;IACd,qBAAqB;IACrB,oBAAoB;IACpB,oBAAoB;IACpB,4BAA4B;CAC7B,CAAC;AAEF,MAAa,aAAc,SAAQ,yBAAW;IAA9C;;QACW,cAAS,GAAG,QAAQ,CAAC;IAqChC,CAAC;IAnCC,UAAU,CAAC,eAAyB;QAClC,2EAA2E;QAC3E,0EAA0E;QAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvE,OAAO;YACL,OAAO;YACP,IAAI,EAAE,eAAe;YACrB,iEAAiE;SAClE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,aAA4B;QACpD,2DAA2D;QAC3D,IAAI,aAAa,KAAK,WAAW;YAAE,OAAO,IAAI,CAAC;QAE/C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;QAE5B,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,iBAAiB,CAAC;YAAE,OAAO,mBAAmB,CAAC;QACtE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,cAAc,CAAC;YAAE,OAAO,OAAO,CAAC;QACvD,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC;YAAE,OAAO,mBAAmB,CAAC;QAErE,+DAA+D;QAC/D,IACE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC;YACpC,CAAC,aAAa,KAAK,mBAAmB,IAAI,aAAa,KAAK,mBAAmB,CAAC,EAChF,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,OAAO,CAAC,IAAY,EAAE,QAAkB;QAC9C,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5C,CAAC;CACF;AAtCD,sCAsCC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Uses GPT-4o-mini to extract the actual question or message from noisy
|
|
3
|
+
* PTY terminal output. Falls back to the provided fallback string if OpenAI
|
|
4
|
+
* is unavailable or the call fails.
|
|
5
|
+
*/
|
|
6
|
+
export declare function extractQuestion(rawText: string, fallback: string): Promise<string>;
|
|
7
|
+
//# sourceMappingURL=extractQuestion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractQuestion.d.ts","sourceRoot":"","sources":["../../src/ai/extractQuestion.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CA4BjB"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.extractQuestion = extractQuestion;
|
|
7
|
+
const openai_1 = __importDefault(require("openai"));
|
|
8
|
+
let client = null;
|
|
9
|
+
function getClient() {
|
|
10
|
+
const key = process.env.OPENAI_API_KEY;
|
|
11
|
+
if (!key)
|
|
12
|
+
return null;
|
|
13
|
+
if (!client)
|
|
14
|
+
client = new openai_1.default({ apiKey: key });
|
|
15
|
+
return client;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Uses GPT-4o-mini to extract the actual question or message from noisy
|
|
19
|
+
* PTY terminal output. Falls back to the provided fallback string if OpenAI
|
|
20
|
+
* is unavailable or the call fails.
|
|
21
|
+
*/
|
|
22
|
+
async function extractQuestion(rawText, fallback) {
|
|
23
|
+
const ai = getClient();
|
|
24
|
+
if (!ai || !rawText.trim())
|
|
25
|
+
return fallback;
|
|
26
|
+
try {
|
|
27
|
+
const response = await ai.chat.completions.create({
|
|
28
|
+
model: 'gpt-4o-mini',
|
|
29
|
+
max_tokens: 60,
|
|
30
|
+
messages: [
|
|
31
|
+
{
|
|
32
|
+
role: 'system',
|
|
33
|
+
content: 'Extract the question or message the AI coding agent is asking the user from the terminal output. ' +
|
|
34
|
+
'Return ONLY the question or message text — no explanation, no quotes, no punctuation changes. ' +
|
|
35
|
+
'Max 150 characters. If no clear question is found, return an empty string.',
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
role: 'user',
|
|
39
|
+
content: rawText.slice(0, 1000),
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
});
|
|
43
|
+
const text = response.choices[0]?.message?.content?.trim() ?? '';
|
|
44
|
+
return text.length > 0 ? text : fallback;
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
return fallback;
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=extractQuestion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extractQuestion.js","sourceRoot":"","sources":["../../src/ai/extractQuestion.ts"],"names":[],"mappings":";;;;;AAgBA,0CA+BC;AA/CD,oDAA4B;AAE5B,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC,SAAS,SAAS;IAChB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IACvC,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,IAAI,gBAAM,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC;IAClD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,QAAgB;IAEhB,MAAM,EAAE,GAAG,SAAS,EAAE,CAAC;IACvB,IAAI,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;YAChD,KAAK,EAAE,aAAa;YACpB,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE;gBACR;oBACE,IAAI,EAAE,QAAQ;oBACd,OAAO,EACL,mGAAmG;wBACnG,gGAAgG;wBAChG,4EAA4E;iBAC/E;gBACD;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC;iBAChC;aACF;SACF,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -7,6 +7,6 @@ export interface CreateSessionPayload {
|
|
|
7
7
|
}
|
|
8
8
|
export declare function createSession(payload: CreateSessionPayload): Promise<string>;
|
|
9
9
|
export declare function updateSessionStatus(sessionId: string, status: string): Promise<void>;
|
|
10
|
-
export declare function notifySession(sessionId: string, title: string, body: string, priority: string): Promise<void>;
|
|
10
|
+
export declare function notifySession(sessionId: string, title: string, body: string, priority: string, rawText?: string): Promise<void>;
|
|
11
11
|
export declare function deleteSession(sessionId: string): Promise<void>;
|
|
12
12
|
//# sourceMappingURL=backendClient.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backendClient.d.ts","sourceRoot":"","sources":["../../src/api/backendClient.ts"],"names":[],"mappings":"AAIA,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBlF;AAED,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1F;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE"}
|
|
1
|
+
{"version":3,"file":"backendClient.d.ts","sourceRoot":"","sources":["../../src/api/backendClient.ts"],"names":[],"mappings":"AAIA,qBAAa,mBAAoB,SAAQ,KAAK;;CAK7C;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;CACd;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAoBlF;AAED,wBAAsB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM1F;AAED,wBAAsB,aAAa,CACjC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAMf;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE"}
|
|
@@ -39,11 +39,11 @@ async function updateSessionStatus(sessionId, status) {
|
|
|
39
39
|
body: JSON.stringify({ status }),
|
|
40
40
|
}).catch(() => { }); // best-effort, don't interrupt the session
|
|
41
41
|
}
|
|
42
|
-
async function notifySession(sessionId, title, body, priority) {
|
|
42
|
+
async function notifySession(sessionId, title, body, priority, rawText) {
|
|
43
43
|
await fetch(`${BACKEND_URL}/sessions/${sessionId}/notify`, {
|
|
44
44
|
method: 'POST',
|
|
45
45
|
headers: { 'Content-Type': 'application/json' },
|
|
46
|
-
body: JSON.stringify({ title, body, priority }),
|
|
46
|
+
body: JSON.stringify({ title, body, priority, rawText }),
|
|
47
47
|
}).catch(() => { });
|
|
48
48
|
}
|
|
49
49
|
async function deleteSession(sessionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backendClient.js","sourceRoot":"","sources":["../../src/api/backendClient.ts"],"names":[],"mappings":";;;AAgBA,sCAoBC;AAED,kDAMC;AAED,
|
|
1
|
+
{"version":3,"file":"backendClient.js","sourceRoot":"","sources":["../../src/api/backendClient.ts"],"names":[],"mappings":";;;AAgBA,sCAoBC;AAED,kDAMC;AAED,sCAYC;AAED,sCAIC;AAhED,qDAA6C;AAE7C,MAAM,WAAW,GAAG,+BAA+B,CAAC;AAEpD,MAAa,mBAAoB,SAAQ,KAAK;IAC5C;QACE,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAC9E,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AALD,kDAKC;AAOM,KAAK,UAAU,aAAa,CAAC,OAA6B;IAC/D,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,WAAW,WAAW,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,kBAAkB,EAAE,sBAAO;SAC5B;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;KAC9B,CAAC,CAAC;IAEH,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,mBAAmB,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,6BAA6B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,GAAG,CAAC,IAAI,EAA2B,CAAC;IACvD,OAAO,IAAI,CAAC,SAAS,CAAC;AACxB,CAAC;AAEM,KAAK,UAAU,mBAAmB,CAAC,SAAiB,EAAE,MAAc;IACzE,MAAM,KAAK,CAAC,GAAG,WAAW,aAAa,SAAS,SAAS,EAAE;QACzD,MAAM,EAAE,OAAO;QACf,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACjC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC,2CAA2C;AACjE,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,KAAa,EACb,IAAY,EACZ,QAAgB,EAChB,OAAgB;IAEhB,MAAM,KAAK,CAAC,GAAG,WAAW,aAAa,SAAS,SAAS,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;QAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC;KACzD,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACrB,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,SAAiB;IACnD,MAAM,KAAK,CAAC,GAAG,WAAW,aAAa,SAAS,EAAE,EAAE;QAClD,MAAM,EAAE,QAAQ;KACjB,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACrB,CAAC"}
|
package/dist/cli.js
CHANGED
|
@@ -37,6 +37,7 @@ function makeEventHandler(sessionId, sessionName) {
|
|
|
37
37
|
title: label,
|
|
38
38
|
body: 'AI is waiting for your input.',
|
|
39
39
|
priority: 'high',
|
|
40
|
+
rawText: event.text,
|
|
40
41
|
});
|
|
41
42
|
}
|
|
42
43
|
else if (event.to === 'approval_required') {
|
|
@@ -44,6 +45,7 @@ function makeEventHandler(sessionId, sessionName) {
|
|
|
44
45
|
title: label,
|
|
45
46
|
body: 'AI is waiting for your approval.',
|
|
46
47
|
priority: 'urgent',
|
|
48
|
+
rawText: event.text,
|
|
47
49
|
});
|
|
48
50
|
}
|
|
49
51
|
else if (event.to === 'error') {
|
|
@@ -51,6 +53,7 @@ function makeEventHandler(sessionId, sessionName) {
|
|
|
51
53
|
title: label,
|
|
52
54
|
body: 'AI encountered an error.',
|
|
53
55
|
priority: 'high',
|
|
56
|
+
rawText: event.text,
|
|
54
57
|
});
|
|
55
58
|
}
|
|
56
59
|
break;
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;AACA,yCAAoC;AACpC,oDAAiD;AACjD,4DAAyD;AACzD,0DAAuD;AACvD,qEAAkE;AAClE,8CAA+C;AAC/C,sDAAmD;AACnD,uDAAuG;AACvG,mCAAoC,CAAC,uCAAuC;AAG5E,gFAAgF;AAEhF,MAAM,GAAG,GAAG,SAAS,CAAC;AACtB,MAAM,KAAK,GAAG,SAAS,CAAC;AACxB,MAAM,IAAI,GAAG,UAAU,CAAC;AACxB,MAAM,MAAM,GAAG,UAAU,CAAC;AAC1B,MAAM,GAAG,GAAG,UAAU,CAAC;AACvB,MAAM,KAAK,GAAG,UAAU,CAAC;AAEzB,SAAS,SAAS;IAChB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,iFAAiF;AAEjF,SAAS,gBAAgB,CACvB,SAAiB,EACjB,WAA+B;IAE/B,MAAM,GAAG,GAAK,GAAG,GAAG,WAAW,KAAK,EAAE,CAAC;IACvC,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,iCAAe,CAAC,SAAS,CAAC,CAAC;IAEhD,OAAO,SAAS,OAAO,CAAC,KAAkB;QACxC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO;QAEpC,MAAM,EAAE,GAAG,GAAG,GAAG,GAAG,SAAS,EAAE,GAAG,KAAK,EAAE,CAAC;QAE1C,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,gBAAgB,CAAC,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,GAAG,IAAI,EAAE,IAAI,IAAI,SAAS,KAAK,KAAK,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,IAAI,CACtE,CAAC;gBAEF,IAAI,KAAK,CAAC,EAAE,KAAK,mBAAmB,EAAE,CAAC;oBACrC,QAAQ,CAAC,IAAI,CAAC;wBACZ,KAAK,EAAE,KAAK;wBACZ,IAAI,EAAE,+BAA+B;wBACrC,QAAQ,EAAE,MAAM;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backendNotifier.d.ts","sourceRoot":"","sources":["../../src/notifications/backendNotifier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,SAAS,EAAE,MAAM;IAIvB,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"backendNotifier.d.ts","sourceRoot":"","sources":["../../src/notifications/backendNotifier.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEhE;;;;GAIG;AACH,qBAAa,eAAgB,YAAW,QAAQ;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;gBAEvB,SAAS,EAAE,MAAM;IAIvB,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CASxD"}
|
|
@@ -12,7 +12,7 @@ class BackendNotifier {
|
|
|
12
12
|
this.sessionId = sessionId;
|
|
13
13
|
}
|
|
14
14
|
async send(payload) {
|
|
15
|
-
await (0, backendClient_1.notifySession)(this.sessionId, payload.title, payload.body, payload.priority ?? 'normal');
|
|
15
|
+
await (0, backendClient_1.notifySession)(this.sessionId, payload.title, payload.body, payload.priority ?? 'normal', payload.rawText);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
exports.BackendNotifier = BackendNotifier;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"backendNotifier.js","sourceRoot":"","sources":["../../src/notifications/backendNotifier.ts"],"names":[],"mappings":";;;AAAA,wDAAqD;AAGrD;;;;GAIG;AACH,MAAa,eAAe;IAG1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA4B;QACrC,MAAM,IAAA,6BAAa,EACjB,IAAI,CAAC,SAAS,EACd,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,QAAQ,IAAI,QAAQ,
|
|
1
|
+
{"version":3,"file":"backendNotifier.js","sourceRoot":"","sources":["../../src/notifications/backendNotifier.ts"],"names":[],"mappings":";;;AAAA,wDAAqD;AAGrD;;;;GAIG;AACH,MAAa,eAAe;IAG1B,YAAY,SAAiB;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,OAA4B;QACrC,MAAM,IAAA,6BAAa,EACjB,IAAI,CAAC,SAAS,EACd,OAAO,CAAC,KAAK,EACb,OAAO,CAAC,IAAI,EACZ,OAAO,CAAC,QAAQ,IAAI,QAAQ,EAC5B,OAAO,CAAC,OAAO,CAChB,CAAC;IACJ,CAAC;CACF;AAhBD,0CAgBC"}
|
|
@@ -5,6 +5,8 @@ export interface NotificationPayload {
|
|
|
5
5
|
priority?: 'low' | 'normal' | 'high' | 'urgent';
|
|
6
6
|
/** Optional deep-link or action URL */
|
|
7
7
|
url?: string;
|
|
8
|
+
/** Raw terminal output — backend uses this to extract the clean question via AI */
|
|
9
|
+
rawText?: string;
|
|
8
10
|
}
|
|
9
11
|
/**
|
|
10
12
|
* Minimal interface every push provider must satisfy.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"notifier.d.ts","sourceRoot":"","sources":["../../src/notifications/notifier.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChD,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"notifier.d.ts","sourceRoot":"","sources":["../../src/notifications/notifier.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,CAAC;IAChD,uCAAuC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,mFAAmF;IACnF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;GAGG;AACH,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSession.d.ts","sourceRoot":"","sources":["../../src/runner/runSession.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"runSession.d.ts","sourceRoot":"","sources":["../../src/runner/runSession.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAuCnD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2EAA2E;IAC3E,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,OAAO,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACvC;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmG1E"}
|
|
@@ -36,6 +36,38 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.runSession = runSession;
|
|
37
37
|
const pty = __importStar(require("node-pty"));
|
|
38
38
|
const sessionState_1 = require("./sessionState");
|
|
39
|
+
const ANSI_RE = /\x1B\[[0-9;]*[A-Za-z]|\x1B[@-_][0-?]*[ -/]*[@-~]/g;
|
|
40
|
+
const BUFFER_SIZE = 40;
|
|
41
|
+
/**
|
|
42
|
+
* Rolling buffer of the last N clean lines of PTY output.
|
|
43
|
+
* The question text often arrives in an earlier chunk than the one that
|
|
44
|
+
* triggers the status change, so we look back across recent output.
|
|
45
|
+
*/
|
|
46
|
+
function makeOutputBuffer() {
|
|
47
|
+
const lines = [];
|
|
48
|
+
function push(raw) {
|
|
49
|
+
const cleaned = raw
|
|
50
|
+
.replace(ANSI_RE, '')
|
|
51
|
+
.split('\n')
|
|
52
|
+
.map((l) => l.trim())
|
|
53
|
+
.filter((l) => l.length > 1);
|
|
54
|
+
lines.push(...cleaned);
|
|
55
|
+
if (lines.length > BUFFER_SIZE)
|
|
56
|
+
lines.splice(0, lines.length - BUFFER_SIZE);
|
|
57
|
+
}
|
|
58
|
+
function extractBody() {
|
|
59
|
+
const candidates = lines
|
|
60
|
+
.filter((l) => !l.includes('[ashral]'))
|
|
61
|
+
.filter((l) => !/^\d+\.\s/.test(l))
|
|
62
|
+
.filter((l) => !/^[╭╰╮╯│─❯>\s□↓↑←→]+$/.test(l))
|
|
63
|
+
.filter((l) => !/→\s*\w+_\w+/.test(l));
|
|
64
|
+
// Prefer the last line ending with "?" — most likely the actual question
|
|
65
|
+
const question = [...candidates].reverse().find((l) => l.endsWith('?'));
|
|
66
|
+
const body = question ?? candidates[candidates.length - 1];
|
|
67
|
+
return body ? body.slice(0, 200) : undefined;
|
|
68
|
+
}
|
|
69
|
+
return { push, extractBody };
|
|
70
|
+
}
|
|
39
71
|
/**
|
|
40
72
|
* Spawns the agent inside a PTY, bridges all I/O, and drives the session
|
|
41
73
|
* state machine. Resolves when the agent process exits.
|
|
@@ -56,6 +88,7 @@ async function runSession(options) {
|
|
|
56
88
|
env,
|
|
57
89
|
});
|
|
58
90
|
state.transition('running');
|
|
91
|
+
const buffer = makeOutputBuffer();
|
|
59
92
|
// ── Output: mirror PTY → stdout, inspect for state changes ─────────────────
|
|
60
93
|
term.onData((data) => {
|
|
61
94
|
// Write raw (ANSI-preserved) data so the terminal renders correctly
|
|
@@ -66,9 +99,10 @@ async function runSession(options) {
|
|
|
66
99
|
timestamp: new Date(),
|
|
67
100
|
data,
|
|
68
101
|
});
|
|
102
|
+
buffer.push(data);
|
|
69
103
|
const next = adapter.detectStatus(data, state.status);
|
|
70
104
|
if (next !== null) {
|
|
71
|
-
state.transition(next);
|
|
105
|
+
state.transition(next, buffer.extractBody());
|
|
72
106
|
}
|
|
73
107
|
});
|
|
74
108
|
// ── Input: forward stdin → PTY ──────────────────────────────────────────────
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runSession.js","sourceRoot":"","sources":["../../src/runner/runSession.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"runSession.js","sourceRoot":"","sources":["../../src/runner/runSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ export declare class SessionState {
|
|
|
7
7
|
get id(): string;
|
|
8
8
|
get status(): SessionStatus;
|
|
9
9
|
/** Transition to a new status and emit a status_changed event. No-ops on same status. */
|
|
10
|
-
transition(to: SessionStatus): void;
|
|
10
|
+
transition(to: SessionStatus, text?: string): void;
|
|
11
11
|
/** Mark the session as done. Sets endedAt and transitions to completed. */
|
|
12
12
|
complete(exitCode: number): void;
|
|
13
13
|
snapshot(): Readonly<Session>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionState.d.ts","sourceRoot":"","sources":["../../src/runner/sessionState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AAEvE,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+B;gBAGlD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EAClC,EAAE,CAAC,EAAE,MAAM;IAab,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,yFAAyF;IACzF,UAAU,CAAC,EAAE,EAAE,aAAa,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"sessionState.d.ts","sourceRoot":"","sources":["../../src/runner/sessionState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAsB,MAAM,iBAAiB,CAAC;AAEvE,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA+B;gBAGlD,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EAClC,EAAE,CAAC,EAAE,MAAM;IAab,IAAI,EAAE,IAAI,MAAM,CAEf;IAED,IAAI,MAAM,IAAI,aAAa,CAE1B;IAED,yFAAyF;IACzF,UAAU,CAAC,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI;IAiBlD,2EAA2E;IAC3E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAWhC,QAAQ,IAAI,QAAQ,CAAC,OAAO,CAAC;CAG9B"}
|
|
@@ -21,7 +21,7 @@ class SessionState {
|
|
|
21
21
|
return this.session.status;
|
|
22
22
|
}
|
|
23
23
|
/** Transition to a new status and emit a status_changed event. No-ops on same status. */
|
|
24
|
-
transition(to) {
|
|
24
|
+
transition(to, text) {
|
|
25
25
|
const from = this.session.status;
|
|
26
26
|
if (from === to)
|
|
27
27
|
return;
|
|
@@ -32,6 +32,7 @@ class SessionState {
|
|
|
32
32
|
timestamp: new Date(),
|
|
33
33
|
from,
|
|
34
34
|
to,
|
|
35
|
+
...(text !== undefined && { text }),
|
|
35
36
|
};
|
|
36
37
|
this.emit(event);
|
|
37
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessionState.js","sourceRoot":"","sources":["../../src/runner/sessionState.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAIpC,MAAa,YAAY;IAIvB,YACE,KAAa,EACb,IAAwB,EACxB,GAAW,EACX,IAAkC,EAClC,EAAW;QAEX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG;YACb,EAAE,EAAE,EAAE,IAAI,IAAA,mBAAU,GAAE;YACtB,IAAI;YACJ,KAAK;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG;SACJ,CAAC;IACJ,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,yFAAyF;IACzF,UAAU,CAAC,EAAiB;
|
|
1
|
+
{"version":3,"file":"sessionState.js","sourceRoot":"","sources":["../../src/runner/sessionState.ts"],"names":[],"mappings":";;;AAAA,mCAAoC;AAIpC,MAAa,YAAY;IAIvB,YACE,KAAa,EACb,IAAwB,EACxB,GAAW,EACX,IAAkC,EAClC,EAAW;QAEX,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG;YACb,EAAE,EAAE,EAAE,IAAI,IAAA,mBAAU,GAAE;YACtB,IAAI;YACJ,KAAK;YACL,MAAM,EAAE,UAAU;YAClB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,GAAG;SACJ,CAAC;IACJ,CAAC;IAED,IAAI,EAAE;QACJ,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,yFAAyF;IACzF,UAAU,CAAC,EAAiB,EAAE,IAAa;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACjC,IAAI,IAAI,KAAK,EAAE;YAAE,OAAO;QAExB,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;QAEzB,MAAM,KAAK,GAAuB;YAChC,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,IAAI;YACJ,EAAE;YACF,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,EAAE,IAAI,EAAE,CAAC;SACpC,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAED,2EAA2E;IAC3E,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC;YACR,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YAC1B,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,QAAQ;SACT,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,OAAO,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;IAC7B,CAAC;CACF;AA/DD,oCA+DC"}
|
package/dist/types/events.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface StatusChangedEvent extends BaseEvent {
|
|
|
13
13
|
type: 'status_changed';
|
|
14
14
|
from: SessionStatus;
|
|
15
15
|
to: SessionStatus;
|
|
16
|
+
/** Cleaned text from the output chunk that triggered this transition */
|
|
17
|
+
text?: string;
|
|
16
18
|
}
|
|
17
19
|
export interface AgentPromptEvent extends BaseEvent {
|
|
18
20
|
type: 'agent_prompt';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,gBAAgB,GAChB,cAAc,GACd,OAAO,GACP,WAAW,CAAC;AAEhB,UAAU,SAAS;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,QAAQ,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/types/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,gBAAgB,GAChB,cAAc,GACd,OAAO,GACP,WAAW,CAAC;AAEhB,UAAU,SAAS;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,IAAI,EAAE,QAAQ,CAAC;IAEf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,IAAI,EAAE,gBAAgB,CAAC;IACvB,IAAI,EAAE,aAAa,CAAC;IACpB,EAAE,EAAE,aAAa,CAAC;IAClB,wEAAwE;IACxE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAGD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC3C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAe,SAAQ,SAAS;IAC/C,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,WAAW,GACnB,WAAW,GACX,kBAAkB,GAClB,gBAAgB,GAChB,UAAU,GACV,cAAc,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ashral",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.10",
|
|
4
4
|
"description": "Control center for AI coding agents",
|
|
5
5
|
"main": "dist/cli.js",
|
|
6
6
|
"bin": {
|
|
@@ -22,6 +22,7 @@
|
|
|
22
22
|
"commander": "^12.1.0",
|
|
23
23
|
"firebase-admin": "^13.7.0",
|
|
24
24
|
"node-pty": "^1.0.0",
|
|
25
|
+
"openai": "^6.33.0",
|
|
25
26
|
"qrcode": "^1.5.4",
|
|
26
27
|
"qrcode-terminal": "^0.12.0"
|
|
27
28
|
},
|