pulseed 0.4.8 → 0.4.9

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.
Files changed (35) hide show
  1. package/README.md +12 -0
  2. package/dist/base/config/tool-metadata.js +1 -1
  3. package/dist/base/config/tool-metadata.js.map +1 -1
  4. package/dist/base/llm/provider-config.d.ts.map +1 -1
  5. package/dist/base/llm/provider-config.js +13 -5
  6. package/dist/base/llm/provider-config.js.map +1 -1
  7. package/dist/base/state/state-manager.d.ts +7 -0
  8. package/dist/base/state/state-manager.d.ts.map +1 -1
  9. package/dist/base/state/state-manager.js +127 -17
  10. package/dist/base/state/state-manager.js.map +1 -1
  11. package/dist/index.d.ts +2 -0
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +1 -0
  14. package/dist/index.js.map +1 -1
  15. package/dist/interface/chat/chat-history.d.ts +152 -46
  16. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  17. package/dist/interface/chat/chat-history.js +55 -9
  18. package/dist/interface/chat/chat-history.js.map +1 -1
  19. package/dist/interface/chat/chat-runner.d.ts +9 -1
  20. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  21. package/dist/interface/chat/chat-runner.js +152 -9
  22. package/dist/interface/chat/chat-runner.js.map +1 -1
  23. package/dist/interface/chat/chat-session-store.d.ts +71 -0
  24. package/dist/interface/chat/chat-session-store.d.ts.map +1 -0
  25. package/dist/interface/chat/chat-session-store.js +378 -0
  26. package/dist/interface/chat/chat-session-store.js.map +1 -0
  27. package/dist/interface/cli/cli-command-registry.d.ts.map +1 -1
  28. package/dist/interface/cli/cli-command-registry.js +0 -4
  29. package/dist/interface/cli/cli-command-registry.js.map +1 -1
  30. package/dist/runtime/store/runtime-operation-schemas.d.ts +12 -12
  31. package/package.json +2 -2
  32. package/dist/interface/cli/commands/chat.d.ts +0 -3
  33. package/dist/interface/cli/commands/chat.d.ts.map +0 -1
  34. package/dist/interface/cli/commands/chat.js +0 -278
  35. package/dist/interface/cli/commands/chat.js.map +0 -1
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -5,68 +5,172 @@ export declare const ChatMessageSchema: z.ZodObject<{
5
5
  content: z.ZodString;
6
6
  timestamp: z.ZodString;
7
7
  turnIndex: z.ZodNumber;
8
- }, "strip", z.ZodTypeAny, {
9
- timestamp: string;
10
- content: string;
11
- role: "user" | "assistant";
12
- turnIndex: number;
13
- }, {
14
- timestamp: string;
15
- content: string;
16
- role: "user" | "assistant";
17
- turnIndex: number;
18
- }>;
8
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
9
+ role: z.ZodEnum<["user", "assistant"]>;
10
+ content: z.ZodString;
11
+ timestamp: z.ZodString;
12
+ turnIndex: z.ZodNumber;
13
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
14
+ role: z.ZodEnum<["user", "assistant"]>;
15
+ content: z.ZodString;
16
+ timestamp: z.ZodString;
17
+ turnIndex: z.ZodNumber;
18
+ }, z.ZodTypeAny, "passthrough">>;
19
19
  export type ChatMessage = z.infer<typeof ChatMessageSchema>;
20
+ export declare const ChatSessionAgentLoopMetadataSchema: z.ZodObject<{
21
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
22
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
23
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
24
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
25
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
26
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
27
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
28
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
29
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
30
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
31
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
32
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
33
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
34
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
35
+ }, z.ZodTypeAny, "passthrough">>;
36
+ export type ChatSessionAgentLoopMetadata = z.infer<typeof ChatSessionAgentLoopMetadataSchema>;
20
37
  export declare const ChatSessionSchema: z.ZodObject<{
21
38
  id: z.ZodString;
22
39
  cwd: z.ZodString;
23
40
  createdAt: z.ZodString;
41
+ updatedAt: z.ZodOptional<z.ZodString>;
42
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
43
+ messages: z.ZodArray<z.ZodObject<{
44
+ role: z.ZodEnum<["user", "assistant"]>;
45
+ content: z.ZodString;
46
+ timestamp: z.ZodString;
47
+ turnIndex: z.ZodNumber;
48
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
49
+ role: z.ZodEnum<["user", "assistant"]>;
50
+ content: z.ZodString;
51
+ timestamp: z.ZodString;
52
+ turnIndex: z.ZodNumber;
53
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
54
+ role: z.ZodEnum<["user", "assistant"]>;
55
+ content: z.ZodString;
56
+ timestamp: z.ZodString;
57
+ turnIndex: z.ZodNumber;
58
+ }, z.ZodTypeAny, "passthrough">>, "many">;
59
+ compactionSummary: z.ZodOptional<z.ZodString>;
60
+ agentLoopStatePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
61
+ agentLoopStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
62
+ agentLoopResumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
63
+ agentLoopUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
64
+ agentLoop: z.ZodOptional<z.ZodObject<{
65
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
66
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
67
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
68
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
69
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
70
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
71
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
72
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
73
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
74
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
75
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
76
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
77
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
78
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
79
+ }, z.ZodTypeAny, "passthrough">>>;
80
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
81
+ id: z.ZodString;
82
+ cwd: z.ZodString;
83
+ createdAt: z.ZodString;
84
+ updatedAt: z.ZodOptional<z.ZodString>;
85
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
24
86
  messages: z.ZodArray<z.ZodObject<{
25
87
  role: z.ZodEnum<["user", "assistant"]>;
26
88
  content: z.ZodString;
27
89
  timestamp: z.ZodString;
28
90
  turnIndex: z.ZodNumber;
29
- }, "strip", z.ZodTypeAny, {
30
- timestamp: string;
31
- content: string;
32
- role: "user" | "assistant";
33
- turnIndex: number;
34
- }, {
35
- timestamp: string;
36
- content: string;
37
- role: "user" | "assistant";
38
- turnIndex: number;
39
- }>, "many">;
91
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
92
+ role: z.ZodEnum<["user", "assistant"]>;
93
+ content: z.ZodString;
94
+ timestamp: z.ZodString;
95
+ turnIndex: z.ZodNumber;
96
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
97
+ role: z.ZodEnum<["user", "assistant"]>;
98
+ content: z.ZodString;
99
+ timestamp: z.ZodString;
100
+ turnIndex: z.ZodNumber;
101
+ }, z.ZodTypeAny, "passthrough">>, "many">;
102
+ compactionSummary: z.ZodOptional<z.ZodString>;
103
+ agentLoopStatePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
104
+ agentLoopStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
105
+ agentLoopResumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
106
+ agentLoopUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
107
+ agentLoop: z.ZodOptional<z.ZodObject<{
108
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
109
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
110
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
111
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
112
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
113
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
114
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
115
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
116
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
117
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
118
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
119
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
120
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
121
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
122
+ }, z.ZodTypeAny, "passthrough">>>;
123
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
124
+ id: z.ZodString;
125
+ cwd: z.ZodString;
126
+ createdAt: z.ZodString;
127
+ updatedAt: z.ZodOptional<z.ZodString>;
128
+ title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
129
+ messages: z.ZodArray<z.ZodObject<{
130
+ role: z.ZodEnum<["user", "assistant"]>;
131
+ content: z.ZodString;
132
+ timestamp: z.ZodString;
133
+ turnIndex: z.ZodNumber;
134
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
135
+ role: z.ZodEnum<["user", "assistant"]>;
136
+ content: z.ZodString;
137
+ timestamp: z.ZodString;
138
+ turnIndex: z.ZodNumber;
139
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
140
+ role: z.ZodEnum<["user", "assistant"]>;
141
+ content: z.ZodString;
142
+ timestamp: z.ZodString;
143
+ turnIndex: z.ZodNumber;
144
+ }, z.ZodTypeAny, "passthrough">>, "many">;
40
145
  compactionSummary: z.ZodOptional<z.ZodString>;
41
- }, "strip", z.ZodTypeAny, {
42
- id: string;
43
- cwd: string;
44
- createdAt: string;
45
- messages: {
46
- timestamp: string;
47
- content: string;
48
- role: "user" | "assistant";
49
- turnIndex: number;
50
- }[];
51
- compactionSummary?: string | undefined;
52
- }, {
53
- id: string;
54
- cwd: string;
55
- createdAt: string;
56
- messages: {
57
- timestamp: string;
58
- content: string;
59
- role: "user" | "assistant";
60
- turnIndex: number;
61
- }[];
62
- compactionSummary?: string | undefined;
63
- }>;
146
+ agentLoopStatePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
147
+ agentLoopStatus: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
148
+ agentLoopResumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
149
+ agentLoopUpdatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
150
+ agentLoop: z.ZodOptional<z.ZodObject<{
151
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
152
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
153
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
154
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
155
+ }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
156
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
157
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
158
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
159
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
160
+ }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
161
+ statePath: z.ZodOptional<z.ZodNullable<z.ZodString>>;
162
+ status: z.ZodOptional<z.ZodNullable<z.ZodEnum<["running", "completed", "failed"]>>>;
163
+ resumable: z.ZodOptional<z.ZodNullable<z.ZodBoolean>>;
164
+ updatedAt: z.ZodOptional<z.ZodNullable<z.ZodString>>;
165
+ }, z.ZodTypeAny, "passthrough">>>;
166
+ }, z.ZodTypeAny, "passthrough">>;
64
167
  export type ChatSession = z.infer<typeof ChatSessionSchema>;
65
168
  export declare class ChatHistory {
66
169
  private readonly stateManager;
67
170
  private readonly sessionId;
68
171
  private readonly session;
69
- constructor(stateManager: StateManager, sessionId: string, cwd: string);
172
+ constructor(stateManager: StateManager, sessionId: string, cwd: string, existingSession?: ChatSession);
173
+ static fromSession(stateManager: StateManager, session: ChatSession): ChatHistory;
70
174
  /** Append a user message and persist to disk BEFORE adapter execution. */
71
175
  appendUserMessage(content: string): Promise<void>;
72
176
  /** Append an assistant message and persist it as the committed assistant turn. */
@@ -76,6 +180,8 @@ export declare class ChatHistory {
76
180
  getMessages(): ChatMessage[];
77
181
  getSessionData(): ChatSession;
78
182
  getSessionId(): string;
183
+ setTitle(title: string | null): void;
184
+ setAgentLoopStatePath(statePath: string | null): void;
79
185
  persist(): Promise<void>;
80
186
  }
81
187
  //# sourceMappingURL=chat-history.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chat-history.d.ts","sourceRoot":"","sources":["../../../src/interface/chat/chat-history.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;EAK5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM;IAWtE,0EAA0E;IACpE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD,kFAAkF;IAC5E,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,sDAAsD;IACtD,KAAK,IAAI,IAAI;IAKb,WAAW,IAAI,WAAW,EAAE;IAI5B,cAAc,IAAI,WAAW;IAI7B,YAAY,IAAI,MAAM;IAIhB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAM/B"}
1
+ {"version":3,"file":"chat-history.d.ts","sourceRoot":"","sources":["../../../src/interface/chat/chat-history.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;gCAKd,CAAC;AACjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;gCAK/B,CAAC;AACjB,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAad,CAAC;AACjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,WAAW;IAuBrG,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW;IAIjF,0EAA0E;IACpE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD,kFAAkF;IAC5E,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,sDAAsD;IACtD,KAAK,IAAI,IAAI;IAKb,WAAW,IAAI,WAAW,EAAE;IAI5B,cAAc,IAAI,WAAW;IAI7B,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQ/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
@@ -9,28 +9,57 @@ export const ChatMessageSchema = z.object({
9
9
  content: z.string(),
10
10
  timestamp: z.string(), // ISO 8601
11
11
  turnIndex: z.number().int().min(0),
12
- });
12
+ }).passthrough();
13
+ export const ChatSessionAgentLoopMetadataSchema = z.object({
14
+ statePath: z.string().nullable().optional(),
15
+ status: z.enum(["running", "completed", "failed"]).nullable().optional(),
16
+ resumable: z.boolean().nullable().optional(),
17
+ updatedAt: z.string().nullable().optional(),
18
+ }).passthrough();
13
19
  export const ChatSessionSchema = z.object({
14
20
  id: z.string(),
15
21
  cwd: z.string(), // git root at session start
16
22
  createdAt: z.string(),
23
+ updatedAt: z.string().optional(),
24
+ title: z.string().trim().min(1).max(200).nullable().optional(),
17
25
  messages: z.array(ChatMessageSchema),
18
26
  compactionSummary: z.string().optional(),
19
- });
27
+ agentLoopStatePath: z.string().nullable().optional(),
28
+ agentLoopStatus: z.enum(["running", "completed", "failed"]).nullable().optional(),
29
+ agentLoopResumable: z.boolean().nullable().optional(),
30
+ agentLoopUpdatedAt: z.string().nullable().optional(),
31
+ agentLoop: ChatSessionAgentLoopMetadataSchema.optional(),
32
+ }).passthrough();
20
33
  // ─── ChatHistory ───
21
34
  export class ChatHistory {
22
35
  stateManager;
23
36
  sessionId;
24
37
  session;
25
- constructor(stateManager, sessionId, cwd) {
38
+ constructor(stateManager, sessionId, cwd, existingSession) {
26
39
  this.stateManager = stateManager;
27
40
  this.sessionId = sessionId;
28
- this.session = {
29
- id: sessionId,
30
- cwd,
31
- createdAt: new Date().toISOString(),
32
- messages: [],
33
- };
41
+ if (existingSession) {
42
+ this.session = {
43
+ ...existingSession,
44
+ id: existingSession.id,
45
+ cwd: existingSession.cwd,
46
+ updatedAt: existingSession.updatedAt ?? existingSession.createdAt,
47
+ messages: [...existingSession.messages],
48
+ };
49
+ }
50
+ else {
51
+ const createdAt = new Date().toISOString();
52
+ this.session = {
53
+ id: sessionId,
54
+ cwd,
55
+ createdAt,
56
+ updatedAt: createdAt,
57
+ messages: [],
58
+ };
59
+ }
60
+ }
61
+ static fromSession(stateManager, session) {
62
+ return new ChatHistory(stateManager, session.id, session.cwd, session);
34
63
  }
35
64
  /** Append a user message and persist to disk BEFORE adapter execution. */
36
65
  async appendUserMessage(content) {
@@ -66,7 +95,24 @@ export class ChatHistory {
66
95
  getSessionId() {
67
96
  return this.sessionId;
68
97
  }
98
+ setTitle(title) {
99
+ if (title && title.trim().length > 0) {
100
+ this.session.title = title.trim();
101
+ }
102
+ else {
103
+ delete this.session.title;
104
+ }
105
+ }
106
+ setAgentLoopStatePath(statePath) {
107
+ if (statePath) {
108
+ this.session.agentLoopStatePath = statePath;
109
+ }
110
+ else {
111
+ delete this.session.agentLoopStatePath;
112
+ }
113
+ }
69
114
  async persist() {
115
+ this.session.updatedAt = new Date().toISOString();
70
116
  await this.stateManager.writeRaw(`chat/sessions/${this.sessionId}.json`, this.session);
71
117
  }
72
118
  }
@@ -1 +1 @@
1
- {"version":3,"file":"chat-history.js","sourceRoot":"","sources":["../../../src/interface/chat/chat-history.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"chat-history.js","sourceRoot":"","sources":["../../../src/interface/chat/chat-history.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,8 @@
1
1
  import type { StateManager } from "../../base/state/state-manager.js";
2
2
  import type { IAdapter } from "../../orchestrator/execution/adapter-layer.js";
3
3
  import type { ILLMClient } from "../../base/llm/llm-client.js";
4
+ import { type ChatSession } from "./chat-history.js";
5
+ import { type LoadedChatSession } from "./chat-session-store.js";
4
6
  import type { EscalationHandler } from "./escalation.js";
5
7
  import type { ApprovalLevel } from "./self-knowledge-mutation-tools.js";
6
8
  import type { ToolRegistry } from "../../tools/registry.js";
@@ -111,7 +113,13 @@ export declare class ChatRunner {
111
113
  * If not called, execute() auto-creates a new session per call (Phase 1a behavior).
112
114
  */
113
115
  startSession(cwd: string): void;
116
+ startSessionFromLoadedSession(session: LoadedChatSession): void;
117
+ getSessionId(): string | null;
118
+ getCurrentSessionMessages(): ChatSession["messages"];
114
119
  setRuntimeControlContext(context: RuntimeControlChatContext | null): void;
120
+ private loadedSessionToChatSession;
121
+ private formatSessionsList;
122
+ private formatHistory;
115
123
  private handleCommand;
116
124
  private handleTrack;
117
125
  private handleTend;
@@ -142,7 +150,7 @@ export declare class ChatRunner {
142
150
  private activateToolSearchResults;
143
151
  private createAgentLoopEventSink;
144
152
  private parseAgentLoopPreview;
145
- private isResumeCommand;
153
+ private parseResumeCommand;
146
154
  private loadResumableAgentLoopState;
147
155
  private isAgentLoopSessionState;
148
156
  /** Dispatch a tool call through the registry. */
@@ -1 +1 @@
1
- {"version":3,"file":"chat-runner.d.ts","sourceRoot":"","sources":["../../../src/interface/chat/chat-runner.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAa,MAAM,+CAA+C,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAG/D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAK5D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4CAA4C,CAAC;AACjF,OAAO,KAAK,EAAgB,SAAS,EAAoB,MAAM,kBAAkB,CAAC;AAClF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mEAAmE,CAAC;AAO7G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,KAAK,EACV,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,kDAAkD,CAAC;AAI1D,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,OAAO,EAAE,QAAQ,CAAC;IAClB,mEAAmE;IACnE,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,iBAAiB,CAAC;IACtC,sEAAsE;IACtE,YAAY,CAAC,EAAE;QAAE,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,WAAW,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;KAAE,CAAC;IAC1J,sEAAsE;IACtE,YAAY,CAAC,EAAE;QAAE,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC,CAAA;KAAE,CAAC;IACjG,qDAAqD;IACrD,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC/C,+EAA+E;IAC/E,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,2EAA2E;IAC3E,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACxE,mFAAmF;IACnF,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IAC1G,+EAA+E;IAC/E,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,kFAAkF;IAClF,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,iFAAiF;IACjF,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3C,+FAA+F;IAC/F,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,qDAAqD;IACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,wDAAwD;IACxD,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;IAC1C,kGAAkG;IAClG,qBAAqB,CAAC,EAAE,IAAI,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;IAC/D,4EAA4E;IAC5E,wBAAwB,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,yBAAyB,CAAC;IAC/C,uEAAuE;IACvE,mBAAmB,CAAC,EAAE,mBAAmB,CAAC;CAC3C;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,WAAW,CAAC,EAAE,yBAAyB,CAAC;IACxC,KAAK,CAAC,EAAE,mBAAmB,CAAC;IAC5B,UAAU,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACxD;AA2CD,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAiB;IACtC,OAAO,CAAC,OAAO,CAA4B;IAC3C,OAAO,CAAC,UAAU,CAAuB;IACzC,qGAAqG;IACrG,OAAO,CAAC,aAAa,CAAS;IAC9B,0GAA0G;IAC1G,OAAO,CAAC,cAAc,CAA0B;IAChD,+FAA+F;IAC/F,OAAO,CAAC,wBAAwB,CAAuB;IACvD,4DAA4D;IAC5D,OAAO,CAAC,WAAW,CAA2D;IAC9E,wDAAwD;IACxD,OAAO,CAAC,iBAAiB,CAA2C;IACpE;;;OAGG;IACH,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAa;IACpE,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAa;IAC9D,OAAO,CAAC,wBAAwB,CAAuB;IACvD,OAAO,CAAC,qBAAqB,CAA0C;gBAE3D,IAAI,EAAE,cAAc;IAIhC;;;;OAIG;IACH,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAS/B,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI;YAI3D,aAAa;YAqCb,WAAW;YAgCX,UAAU;YAmDV,sBAAsB;IA+DpC;;;;;;;;;;;OAWG;IACG,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,SAAS,SAAqB,GAAG,OAAO,CAAC,aAAa,CAAC;YAyUnF,0BAA0B;IAyCxC;;;OAGG;YACW,gBAAgB;IA+D9B;;;OAGG;IACH,OAAO,CAAC,yBAAyB;IAgBjC,OAAO,CAAC,wBAAwB;IAiHhC,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,eAAe;YAIT,2BAA2B;IAYzC,OAAO,CAAC,uBAAuB;IAc/B,iDAAiD;YACnC,gBAAgB;YA6JhB,cAAc;IA4B5B,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,SAAS;IAIjB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,YAAY;IAiBpB,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,qBAAqB;IAe7B,OAAO,CAAC,uBAAuB;IAc/B,qEAAqE;IACrE,OAAO,CAAC,oBAAoB;CAc7B"}
1
+ {"version":3,"file":"chat-runner.d.ts","sourceRoot":"","sources":["../../../src/interface/chat/chat-runner.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  // Bypasses TaskLifecycle — calls adapter.execute() directly.
5
5
  import { execFile } from "node:child_process";
6
6
  import { ChatHistory } from "./chat-history.js";
7
+ import { ChatSessionCatalog, ChatSessionSelectorError, } from "./chat-session-store.js";
7
8
  import { buildChatContext, resolveGitRoot } from "../../platform/observation/context-provider.js";
8
9
  import { buildDynamicContextPrompt, buildStaticSystemPrompt } from "./grounding.js";
9
10
  import { verifyChatAction } from "./chat-verifier.js";
@@ -17,12 +18,16 @@ const MAX_TOOL_LOOPS = 5;
17
18
  const ACTIVITY_PREVIEW_CHARS = 40;
18
19
  // ─── Command help text ───
19
20
  const COMMAND_HELP = `Available commands:
20
- /help Show this help message
21
- /clear Clear conversation history
22
- /resume Resume the last native agentloop turn when resumable state exists
23
- /exit Exit chat mode
24
- /track Promote session to Tier 2 goal pursuit (not yet implemented)
25
- /tend Generate a goal from chat history and start autonomous daemon execution`;
21
+ /help Show this help message
22
+ /clear Clear conversation history
23
+ /sessions List prior chat sessions
24
+ /history [id|title] Show saved chat history
25
+ /title <title> Rename the current session
26
+ /resume [id|title] Resume native agentloop state for the current or selected session
27
+ /cleanup [--dry-run] Clean up stale chat sessions
28
+ /exit Exit chat mode
29
+ /track Promote session to Tier 2 goal pursuit (not yet implemented)
30
+ /tend Generate a goal from chat history and start autonomous daemon execution`;
26
31
  // ─── Helpers ───
27
32
  function checkGitChanges(cwd) {
28
33
  return new Promise((resolve) => {
@@ -77,10 +82,64 @@ export class ChatRunner {
77
82
  this.sessionCwd = gitRoot;
78
83
  this.sessionActive = true;
79
84
  this.nativeAgentLoopStatePath = `chat/agentloop/${sessionId}.state.json`;
85
+ this.history.setAgentLoopStatePath(this.nativeAgentLoopStatePath);
86
+ }
87
+ startSessionFromLoadedSession(session) {
88
+ const chatSession = this.loadedSessionToChatSession(session);
89
+ this.history = ChatHistory.fromSession(this.deps.stateManager, chatSession);
90
+ this.sessionCwd = session.cwd;
91
+ this.sessionActive = true;
92
+ this.nativeAgentLoopStatePath = session.agentLoopStatePath ?? `chat/agentloop/${session.id}.state.json`;
93
+ this.history.setAgentLoopStatePath(this.nativeAgentLoopStatePath);
94
+ }
95
+ getSessionId() {
96
+ return this.history?.getSessionId() ?? null;
97
+ }
98
+ getCurrentSessionMessages() {
99
+ return this.history?.getMessages() ?? [];
80
100
  }
81
101
  setRuntimeControlContext(context) {
82
102
  this.runtimeControlContext = context;
83
103
  }
104
+ loadedSessionToChatSession(session) {
105
+ return {
106
+ id: session.id,
107
+ cwd: session.cwd,
108
+ createdAt: session.createdAt,
109
+ updatedAt: session.updatedAt,
110
+ messages: [...session.messages],
111
+ ...(session.compactionSummary ? { compactionSummary: session.compactionSummary } : {}),
112
+ ...(session.title ? { title: session.title } : {}),
113
+ ...(session.agentLoopStatePath ? { agentLoopStatePath: session.agentLoopStatePath } : {}),
114
+ ...(session.agentLoopStatus === "running" || session.agentLoopStatus === "completed" || session.agentLoopStatus === "failed"
115
+ ? { agentLoopStatus: session.agentLoopStatus }
116
+ : {}),
117
+ ...(session.agentLoopResumable ? { agentLoopResumable: true } : {}),
118
+ ...(session.agentLoopUpdatedAt ? { agentLoopUpdatedAt: session.agentLoopUpdatedAt } : {}),
119
+ ...(session.agentLoop ? { agentLoop: session.agentLoop } : {}),
120
+ };
121
+ }
122
+ formatSessionsList(entries) {
123
+ if (entries.length === 0)
124
+ return "No chat sessions found.";
125
+ const lines = entries.map((entry) => {
126
+ const title = entry.title ? ` "${entry.title}"` : "";
127
+ const resumable = entry.agentLoopResumable ? " resumable" : "";
128
+ return `${entry.id}${title} - ${entry.messageCount} message(s), updated ${entry.updatedAt}, cwd ${entry.cwd}${resumable}`;
129
+ });
130
+ return `Chat sessions:\n${lines.join("\n")}`;
131
+ }
132
+ formatHistory(session) {
133
+ const title = session.title ? ` "${session.title}"` : "";
134
+ if (session.messages.length === 0) {
135
+ return `Session ${session.id}${title} has no messages.`;
136
+ }
137
+ const lines = session.messages.map((message) => {
138
+ const role = message.role === "assistant" ? "Assistant" : "User";
139
+ return `${role}: ${message.content}`;
140
+ });
141
+ return `Session ${session.id}${title} (${session.cwd})\n${lines.join("\n")}`;
142
+ }
84
143
  async handleCommand(input) {
85
144
  const trimmed = input.trim();
86
145
  if (!trimmed.startsWith("/"))
@@ -94,6 +153,52 @@ export class ChatRunner {
94
153
  this.history?.clear();
95
154
  return { success: true, output: "Conversation history cleared.", elapsed_ms: Date.now() - start };
96
155
  }
156
+ if (cmd === "/sessions") {
157
+ const catalog = new ChatSessionCatalog(this.deps.stateManager);
158
+ const sessions = await catalog.listSessions();
159
+ return { success: true, output: this.formatSessionsList(sessions), elapsed_ms: Date.now() - start };
160
+ }
161
+ if (cmd === "/history") {
162
+ const catalog = new ChatSessionCatalog(this.deps.stateManager);
163
+ const selector = trimmed.slice("/history".length).trim();
164
+ const session = selector
165
+ ? await catalog.loadSessionBySelector(selector)
166
+ : this.history
167
+ ? await catalog.loadSession(this.history.getSessionId())
168
+ : null;
169
+ if (!session) {
170
+ return { success: false, output: "No chat session history found.", elapsed_ms: Date.now() - start };
171
+ }
172
+ return { success: true, output: this.formatHistory(session), elapsed_ms: Date.now() - start };
173
+ }
174
+ if (cmd === "/title") {
175
+ const title = trimmed.slice("/title".length).trim();
176
+ if (!title) {
177
+ return { success: false, output: "Usage: /title <title>", elapsed_ms: Date.now() - start };
178
+ }
179
+ if (!this.history) {
180
+ return { success: false, output: "No active chat session to rename.", elapsed_ms: Date.now() - start };
181
+ }
182
+ const catalog = new ChatSessionCatalog(this.deps.stateManager);
183
+ this.history.setTitle(title);
184
+ await this.history.persist();
185
+ await catalog.renameSession(this.history.getSessionId(), title);
186
+ return { success: true, output: `Renamed chat session to "${title}".`, elapsed_ms: Date.now() - start };
187
+ }
188
+ if (cmd === "/cleanup") {
189
+ const catalog = new ChatSessionCatalog(this.deps.stateManager);
190
+ const dryRun = trimmed.includes("--dry-run");
191
+ const report = await catalog.cleanupSessions({
192
+ dryRun,
193
+ activeSessionId: this.history?.getSessionId(),
194
+ });
195
+ const verb = dryRun ? "would remove" : "removed";
196
+ return {
197
+ success: true,
198
+ output: `Chat session cleanup ${verb} ${report.removedSessionIds.length} session(s).`,
199
+ elapsed_ms: Date.now() - start,
200
+ };
201
+ }
97
202
  if (cmd === "/exit") {
98
203
  return { success: true, output: "Exiting chat mode.", elapsed_ms: Date.now() - start };
99
204
  }
@@ -261,7 +366,8 @@ export class ChatRunner {
261
366
  */
262
367
  async execute(input, cwd, timeoutMs = DEFAULT_TIMEOUT_MS) {
263
368
  const eventContext = this.createEventContext();
264
- const resumeOnly = this.isResumeCommand(input);
369
+ const resumeCommand = this.parseResumeCommand(input);
370
+ const resumeOnly = resumeCommand !== null;
265
371
  // Intercept commands before any adapter call
266
372
  const commandResult = resumeOnly ? null : await this.handleCommand(input);
267
373
  if (commandResult !== null) {
@@ -305,12 +411,44 @@ export class ChatRunner {
305
411
  this.emitLifecycleEndEvent(runtimeControlResult.success ? "completed" : "error", runtimeControlResult.elapsed_ms, eventContext, false);
306
412
  return runtimeControlResult;
307
413
  }
414
+ if (resumeOnly && resumeCommand.selector) {
415
+ try {
416
+ const catalog = new ChatSessionCatalog(this.deps.stateManager);
417
+ const session = await catalog.loadSessionBySelector(resumeCommand.selector);
418
+ if (!session) {
419
+ const elapsed_ms = 0;
420
+ const output = `No chat session matched selector "${resumeCommand.selector}".`;
421
+ this.emitEvent({
422
+ type: "assistant_final",
423
+ text: output,
424
+ persisted: false,
425
+ ...this.eventBase(eventContext),
426
+ });
427
+ this.emitLifecycleEndEvent("error", elapsed_ms, eventContext, false);
428
+ return { success: false, output, elapsed_ms };
429
+ }
430
+ this.startSessionFromLoadedSession(session);
431
+ }
432
+ catch (err) {
433
+ const elapsed_ms = 0;
434
+ const output = err instanceof ChatSessionSelectorError ? err.message : `Failed to load chat session: ${err instanceof Error ? err.message : String(err)}`;
435
+ this.emitEvent({
436
+ type: "assistant_final",
437
+ text: output,
438
+ persisted: false,
439
+ ...this.eventBase(eventContext),
440
+ });
441
+ this.emitLifecycleEndEvent("error", elapsed_ms, eventContext, false);
442
+ return { success: false, output, elapsed_ms };
443
+ }
444
+ }
308
445
  // Reuse session (interactive mode) or create a fresh one per call (1-shot mode)
309
446
  if (!this.sessionActive) {
310
447
  const gitRoot = resolveGitRoot(cwd);
311
448
  const sessionId = crypto.randomUUID();
312
449
  this.history = new ChatHistory(this.deps.stateManager, sessionId, gitRoot);
313
450
  this.nativeAgentLoopStatePath = `chat/agentloop/${sessionId}.state.json`;
451
+ this.history.setAgentLoopStatePath(this.nativeAgentLoopStatePath);
314
452
  }
315
453
  const gitRoot = this.sessionCwd ?? resolveGitRoot(cwd);
316
454
  // history is always assigned by this point (either by startSession or the block above)
@@ -769,8 +907,13 @@ export class ChatRunner {
769
907
  }
770
908
  return preview ? { preview } : {};
771
909
  }
772
- isResumeCommand(input) {
773
- return input.trim().toLowerCase() === "/resume";
910
+ parseResumeCommand(input) {
911
+ const trimmed = input.trim();
912
+ const match = /^\/resume(?:\s+(.+))?$/i.exec(trimmed);
913
+ if (!match)
914
+ return null;
915
+ const selector = match[1]?.trim();
916
+ return selector ? { selector } : {};
774
917
  }
775
918
  async loadResumableAgentLoopState() {
776
919
  if (!this.nativeAgentLoopStatePath)