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.
- package/README.md +12 -0
- package/dist/base/config/tool-metadata.js +1 -1
- package/dist/base/config/tool-metadata.js.map +1 -1
- package/dist/base/llm/provider-config.d.ts.map +1 -1
- package/dist/base/llm/provider-config.js +13 -5
- package/dist/base/llm/provider-config.js.map +1 -1
- package/dist/base/state/state-manager.d.ts +7 -0
- package/dist/base/state/state-manager.d.ts.map +1 -1
- package/dist/base/state/state-manager.js +127 -17
- package/dist/base/state/state-manager.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/interface/chat/chat-history.d.ts +152 -46
- package/dist/interface/chat/chat-history.d.ts.map +1 -1
- package/dist/interface/chat/chat-history.js +55 -9
- package/dist/interface/chat/chat-history.js.map +1 -1
- package/dist/interface/chat/chat-runner.d.ts +9 -1
- package/dist/interface/chat/chat-runner.d.ts.map +1 -1
- package/dist/interface/chat/chat-runner.js +152 -9
- package/dist/interface/chat/chat-runner.js.map +1 -1
- package/dist/interface/chat/chat-session-store.d.ts +71 -0
- package/dist/interface/chat/chat-session-store.d.ts.map +1 -0
- package/dist/interface/chat/chat-session-store.js +378 -0
- package/dist/interface/chat/chat-session-store.js.map +1 -0
- package/dist/interface/cli/cli-command-registry.d.ts.map +1 -1
- package/dist/interface/cli/cli-command-registry.js +0 -4
- package/dist/interface/cli/cli-command-registry.js.map +1 -1
- package/dist/runtime/store/runtime-operation-schemas.d.ts +12 -12
- package/package.json +2 -2
- package/dist/interface/cli/commands/chat.d.ts +0 -3
- package/dist/interface/cli/commands/chat.d.ts.map +0 -1
- package/dist/interface/cli/commands/chat.js +0 -278
- 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":"AAAA,cAAc,uBAAuB,CAAC;AACtC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAC7F,OAAO,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAC7D,OAAO,EACL,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,EAClB,aAAa,EACb,iBAAiB,GAClB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EACL,oBAAoB,EACpB,aAAa,EACb,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,GACf,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EAAE,iBAAiB,EAAE,MAAM,8CAA8C,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE1F,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAClF,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAE9D,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAC9D,cAAc,2BAA2B,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,kDAAkD,CAAC;AACpK,cAAc,4BAA4B,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,6CAA6C,CAAC;AAC9E,OAAO,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7F,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAE5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAC5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;AAE1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,OAAO,EAAE,4BAA4B,EAAE,MAAM,mDAAmD,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,gCAAgC,CAAC;AACtF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAE/K,OAAO,EAAE,aAAa,EAAE,MAAM,iDAAiD,CAAC;AAChF,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,+BAA+B,EAC/B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,2CAA2C,CAAC;AAC7E,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,8CAA8C,CAAC;AAChF,OAAO,EAAE,QAAQ,EAAE,MAAM,kCAAkC,CAAC;AAE5D,OAAO,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,iCAAiC,CAAC;AAE7D,OAAO,EAAE,+BAA+B,EAAE,wCAAwC,EAAE,MAAM,4CAA4C,CAAC;AAsBvI,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAExE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAE3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAExD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sCAAsC,CAAC;AAE9E,OAAO,EACL,qBAAqB,EACrB,6BAA6B,GAC9B,MAAM,4BAA4B,CAAC;AASpC,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAC;AACnF,OAAO,EACL,yBAAyB,EACzB,iCAAiC,EACjC,6BAA6B,EAC7B,kCAAkC,EAClC,+BAA+B,GAChC,MAAM,8CAA8C,CAAC;AAQtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AACzF,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE5F,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,EACL,wBAAwB,EACxB,sBAAsB,EACtB,2BAA2B,EAC3B,uBAAuB,EACvB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,GACrB,MAAM,2BAA2B,CAAC;AAWnC,oBAAoB;AACpB,OAAO,EAAyB,mBAAmB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AACtK,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AAGnE,sBAAsB;AACtB,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,cAAc,EAAE,MAAM,+CAA+C,CAAC;AAGpJ,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAwB,MAAM,yCAAyC,CAAC;AAChG,OAAO,EAAE,oBAAoB,EAAE,MAAM,+CAA+C,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,iDAAiD,CAAC;AACrF,OAAO,EAAE,wBAAwB,EAAE,MAAM,uDAAuD,CAAC;AACjG,OAAO,EAAE,gBAAgB,EAAE,MAAM,oDAAoD,CAAC;AACtF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qDAAqD,CAAC;AAExF,+BAA+B;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AAE9D,OAAO,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAE5D,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,qBAAqB,CAAC;AAa7B,oCAAoC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAE1D,2BAA2B;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAG1E,QAAQ;AACR,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,qBAAqB,EACrB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAW1B,+BAA+B;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,yCAAyC,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,mCAAmC,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,uDAAuD,CAAC;AAC1F,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,4BAA4B,GAC7B,MAAM,yDAAyD,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,iDAAiD,CAAC;AACjF,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,2CAA2C,CAAC;AAC1E,OAAO,EAAE,YAAY,EAAE,MAAM,yCAAyC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,qDAAqD,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,8CAA8C,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAChF,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,kBAAkB,EAAE,MAAM,wDAAwD,CAAC;AAC5F,OAAO,EAAE,mBAAmB,EAAE,MAAM,0DAA0D,CAAC;AAC/F,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gDAAgD,CAAC;AAEtG,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,gDAAgD,CAAC;AACpG,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AACjG,OAAO,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC"}
|
|
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
|
-
}, "
|
|
9
|
-
|
|
10
|
-
content:
|
|
11
|
-
|
|
12
|
-
turnIndex:
|
|
13
|
-
}, {
|
|
14
|
-
|
|
15
|
-
content:
|
|
16
|
-
|
|
17
|
-
turnIndex:
|
|
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
|
-
}, "
|
|
30
|
-
|
|
31
|
-
content:
|
|
32
|
-
|
|
33
|
-
turnIndex:
|
|
34
|
-
}, {
|
|
35
|
-
|
|
36
|
-
content:
|
|
37
|
-
|
|
38
|
-
turnIndex:
|
|
39
|
-
}
|
|
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
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
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;;;;;;;;;;;;;;;
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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":"AAAA,sBAAsB;AACtB,EAAE;AACF,mDAAmD;AACnD,yEAAyE;AAEzE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,kBAAkB;AAElB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACnC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACnC,CAAC,CAAC;
|
|
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
|
|
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;
|
|
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
|
|
21
|
-
/clear
|
|
22
|
-
/
|
|
23
|
-
/
|
|
24
|
-
/
|
|
25
|
-
/
|
|
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
|
|
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
|
-
|
|
773
|
-
|
|
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)
|