@nervekit/agent 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/NOTICE +5 -0
- package/dist/agent-loop.d.ts +2 -0
- package/dist/agent-loop.d.ts.map +1 -0
- package/dist/agent-loop.js +2 -0
- package/dist/agent-loop.js.map +1 -0
- package/dist/agent.d.ts +125 -0
- package/dist/agent.d.ts.map +1 -0
- package/dist/agent.js +427 -0
- package/dist/agent.js.map +1 -0
- package/dist/harness/agent-harness.d.ts +114 -0
- package/dist/harness/agent-harness.d.ts.map +1 -0
- package/dist/harness/agent-harness.js +474 -0
- package/dist/harness/agent-harness.js.map +1 -0
- package/dist/harness/compaction/branch-summarization.d.ts +54 -0
- package/dist/harness/compaction/branch-summarization.d.ts.map +1 -0
- package/dist/harness/compaction/branch-summarization.js +183 -0
- package/dist/harness/compaction/branch-summarization.js.map +1 -0
- package/dist/harness/compaction/compaction.d.ts +19 -0
- package/dist/harness/compaction/compaction.d.ts.map +1 -0
- package/dist/harness/compaction/compaction.js +335 -0
- package/dist/harness/compaction/compaction.js.map +1 -0
- package/dist/harness/compaction/cut-points.d.ts +7 -0
- package/dist/harness/compaction/cut-points.d.ts.map +1 -0
- package/dist/harness/compaction/cut-points.js +106 -0
- package/dist/harness/compaction/cut-points.js.map +1 -0
- package/dist/harness/compaction/overflow.d.ts +3 -0
- package/dist/harness/compaction/overflow.d.ts.map +1 -0
- package/dist/harness/compaction/overflow.js +54 -0
- package/dist/harness/compaction/overflow.js.map +1 -0
- package/dist/harness/compaction/policy.d.ts +8 -0
- package/dist/harness/compaction/policy.d.ts.map +1 -0
- package/dist/harness/compaction/policy.js +57 -0
- package/dist/harness/compaction/policy.js.map +1 -0
- package/dist/harness/compaction/types.d.ts +79 -0
- package/dist/harness/compaction/types.d.ts.map +1 -0
- package/dist/harness/compaction/types.js +2 -0
- package/dist/harness/compaction/types.js.map +1 -0
- package/dist/harness/compaction/usage.d.ts +30 -0
- package/dist/harness/compaction/usage.d.ts.map +1 -0
- package/dist/harness/compaction/usage.js +177 -0
- package/dist/harness/compaction/usage.js.map +1 -0
- package/dist/harness/compaction/utils.d.ts +25 -0
- package/dist/harness/compaction/utils.d.ts.map +1 -0
- package/dist/harness/compaction/utils.js +131 -0
- package/dist/harness/compaction/utils.js.map +1 -0
- package/dist/harness/configuration.d.ts +34 -0
- package/dist/harness/configuration.d.ts.map +1 -0
- package/dist/harness/configuration.js +75 -0
- package/dist/harness/configuration.js.map +1 -0
- package/dist/harness/conversation/context.d.ts +24 -0
- package/dist/harness/conversation/context.d.ts.map +1 -0
- package/dist/harness/conversation/context.js +76 -0
- package/dist/harness/conversation/context.js.map +1 -0
- package/dist/harness/conversation/conversation.d.ts +36 -0
- package/dist/harness/conversation/conversation.d.ts.map +1 -0
- package/dist/harness/conversation/conversation.js +163 -0
- package/dist/harness/conversation/conversation.js.map +1 -0
- package/dist/harness/conversation/entries.d.ts +117 -0
- package/dist/harness/conversation/entries.d.ts.map +1 -0
- package/dist/harness/conversation/entries.js +2 -0
- package/dist/harness/conversation/entries.js.map +1 -0
- package/dist/harness/conversation/jsonl-repo.d.ts +27 -0
- package/dist/harness/conversation/jsonl-repo.d.ts.map +1 -0
- package/dist/harness/conversation/jsonl-repo.js +110 -0
- package/dist/harness/conversation/jsonl-repo.js.map +1 -0
- package/dist/harness/conversation/jsonl-storage.d.ts +34 -0
- package/dist/harness/conversation/jsonl-storage.d.ts.map +1 -0
- package/dist/harness/conversation/jsonl-storage.js +213 -0
- package/dist/harness/conversation/jsonl-storage.js.map +1 -0
- package/dist/harness/conversation/memory-repo.d.ts +18 -0
- package/dist/harness/conversation/memory-repo.d.ts.map +1 -0
- package/dist/harness/conversation/memory-repo.js +45 -0
- package/dist/harness/conversation/memory-repo.js.map +1 -0
- package/dist/harness/conversation/memory-storage.d.ts +25 -0
- package/dist/harness/conversation/memory-storage.d.ts.map +1 -0
- package/dist/harness/conversation/memory-storage.js +88 -0
- package/dist/harness/conversation/memory-storage.js.map +1 -0
- package/dist/harness/conversation/repo-utils.d.ts +13 -0
- package/dist/harness/conversation/repo-utils.d.ts.map +1 -0
- package/dist/harness/conversation/repo-utils.js +39 -0
- package/dist/harness/conversation/repo-utils.js.map +1 -0
- package/dist/harness/conversation/storage-utils.d.ts +11 -0
- package/dist/harness/conversation/storage-utils.d.ts.map +1 -0
- package/dist/harness/conversation/storage-utils.js +32 -0
- package/dist/harness/conversation/storage-utils.js.map +1 -0
- package/dist/harness/conversation/text-extraction.d.ts +8 -0
- package/dist/harness/conversation/text-extraction.d.ts.map +1 -0
- package/dist/harness/conversation/text-extraction.js +24 -0
- package/dist/harness/conversation/text-extraction.js.map +1 -0
- package/dist/harness/conversation/uuid.d.ts +2 -0
- package/dist/harness/conversation/uuid.d.ts.map +1 -0
- package/dist/harness/conversation/uuid.js +54 -0
- package/dist/harness/conversation/uuid.js.map +1 -0
- package/dist/harness/conversation-writes.d.ts +9 -0
- package/dist/harness/conversation-writes.d.ts.map +1 -0
- package/dist/harness/conversation-writes.js +54 -0
- package/dist/harness/conversation-writes.js.map +1 -0
- package/dist/harness/env/nodejs.d.ts +53 -0
- package/dist/harness/env/nodejs.d.ts.map +1 -0
- package/dist/harness/env/nodejs.js +497 -0
- package/dist/harness/env/nodejs.js.map +1 -0
- package/dist/harness/env/types.d.ts +106 -0
- package/dist/harness/env/types.d.ts.map +1 -0
- package/dist/harness/env/types.js +2 -0
- package/dist/harness/env/types.js.map +1 -0
- package/dist/harness/errors.d.ts +48 -0
- package/dist/harness/errors.d.ts.map +1 -0
- package/dist/harness/errors.js +63 -0
- package/dist/harness/errors.js.map +1 -0
- package/dist/harness/events.d.ts +238 -0
- package/dist/harness/events.d.ts.map +1 -0
- package/dist/harness/events.js +2 -0
- package/dist/harness/events.js.map +1 -0
- package/dist/harness/harness-configuration-methods.d.ts +36 -0
- package/dist/harness/harness-configuration-methods.d.ts.map +1 -0
- package/dist/harness/harness-configuration-methods.js +145 -0
- package/dist/harness/harness-configuration-methods.js.map +1 -0
- package/dist/harness/harness-continuation.d.ts +18 -0
- package/dist/harness/harness-continuation.d.ts.map +1 -0
- package/dist/harness/harness-continuation.js +56 -0
- package/dist/harness/harness-continuation.js.map +1 -0
- package/dist/harness/harness-events.d.ts +23 -0
- package/dist/harness/harness-events.d.ts.map +1 -0
- package/dist/harness/harness-events.js +129 -0
- package/dist/harness/harness-events.js.map +1 -0
- package/dist/harness/harness-invocations.d.ts +20 -0
- package/dist/harness/harness-invocations.d.ts.map +1 -0
- package/dist/harness/harness-invocations.js +22 -0
- package/dist/harness/harness-invocations.js.map +1 -0
- package/dist/harness/harness-maintenance.d.ts +30 -0
- package/dist/harness/harness-maintenance.d.ts.map +1 -0
- package/dist/harness/harness-maintenance.js +155 -0
- package/dist/harness/harness-maintenance.js.map +1 -0
- package/dist/harness/harness-queue-methods.d.ts +45 -0
- package/dist/harness/harness-queue-methods.d.ts.map +1 -0
- package/dist/harness/harness-queue-methods.js +51 -0
- package/dist/harness/harness-queue-methods.js.map +1 -0
- package/dist/harness/messages.d.ts +76 -0
- package/dist/harness/messages.d.ts.map +1 -0
- package/dist/harness/messages.js +147 -0
- package/dist/harness/messages.js.map +1 -0
- package/dist/harness/options.d.ts +95 -0
- package/dist/harness/options.d.ts.map +1 -0
- package/dist/harness/options.js +2 -0
- package/dist/harness/options.js.map +1 -0
- package/dist/harness/prompt-templates.d.ts +49 -0
- package/dist/harness/prompt-templates.d.ts.map +1 -0
- package/dist/harness/prompt-templates.js +230 -0
- package/dist/harness/prompt-templates.js.map +1 -0
- package/dist/harness/result.d.ts +19 -0
- package/dist/harness/result.d.ts.map +1 -0
- package/dist/harness/result.js +32 -0
- package/dist/harness/result.js.map +1 -0
- package/dist/harness/run/messages.d.ts +5 -0
- package/dist/harness/run/messages.d.ts.map +1 -0
- package/dist/harness/run/messages.js +37 -0
- package/dist/harness/run/messages.js.map +1 -0
- package/dist/harness/skills/format.d.ts +6 -0
- package/dist/harness/skills/format.d.ts.map +1 -0
- package/dist/harness/skills/format.js +38 -0
- package/dist/harness/skills/format.js.map +1 -0
- package/dist/harness/skills/index.d.ts +5 -0
- package/dist/harness/skills/index.d.ts.map +1 -0
- package/dist/harness/skills/index.js +5 -0
- package/dist/harness/skills/index.js.map +1 -0
- package/dist/harness/skills/loader.d.ts +43 -0
- package/dist/harness/skills/loader.d.ts.map +1 -0
- package/dist/harness/skills/loader.js +279 -0
- package/dist/harness/skills/loader.js.map +1 -0
- package/dist/harness/skills/parser.d.ts +12 -0
- package/dist/harness/skills/parser.d.ts.map +1 -0
- package/dist/harness/skills/parser.js +22 -0
- package/dist/harness/skills/parser.js.map +1 -0
- package/dist/harness/skills/validation.d.ts +3 -0
- package/dist/harness/skills/validation.d.ts.map +1 -0
- package/dist/harness/skills/validation.js +28 -0
- package/dist/harness/skills/validation.js.map +1 -0
- package/dist/harness/skills.d.ts +2 -0
- package/dist/harness/skills.d.ts.map +1 -0
- package/dist/harness/skills.js +2 -0
- package/dist/harness/skills.js.map +1 -0
- package/dist/harness/stream-options.d.ts +5 -0
- package/dist/harness/stream-options.d.ts.map +1 -0
- package/dist/harness/stream-options.js +67 -0
- package/dist/harness/stream-options.js.map +1 -0
- package/dist/harness/system-prompt.d.ts +2 -0
- package/dist/harness/system-prompt.d.ts.map +1 -0
- package/dist/harness/system-prompt.js +2 -0
- package/dist/harness/system-prompt.js.map +1 -0
- package/dist/harness/turn-state.d.ts +27 -0
- package/dist/harness/turn-state.d.ts.map +1 -0
- package/dist/harness/turn-state.js +35 -0
- package/dist/harness/turn-state.js.map +1 -0
- package/dist/harness/types.d.ts +9 -0
- package/dist/harness/types.d.ts.map +1 -0
- package/dist/harness/types.js +8 -0
- package/dist/harness/types.js.map +1 -0
- package/dist/harness/utils/env-path.d.ts +14 -0
- package/dist/harness/utils/env-path.d.ts.map +1 -0
- package/dist/harness/utils/env-path.js +99 -0
- package/dist/harness/utils/env-path.js.map +1 -0
- package/dist/harness/utils/shell-output.d.ts +16 -0
- package/dist/harness/utils/shell-output.d.ts.map +1 -0
- package/dist/harness/utils/shell-output.js +137 -0
- package/dist/harness/utils/shell-output.js.map +1 -0
- package/dist/harness/utils/truncate.d.ts +70 -0
- package/dist/harness/utils/truncate.d.ts.map +1 -0
- package/dist/harness/utils/truncate.js +289 -0
- package/dist/harness/utils/truncate.js.map +1 -0
- package/dist/index.d.ts +24 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +25 -0
- package/dist/index.js.map +1 -0
- package/dist/node.d.ts +3 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +3 -0
- package/dist/node.js.map +1 -0
- package/dist/proxy.d.ts +67 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +299 -0
- package/dist/proxy.js.map +1 -0
- package/dist/runtime/loop/agent-loop.d.ts +24 -0
- package/dist/runtime/loop/agent-loop.d.ts.map +1 -0
- package/dist/runtime/loop/agent-loop.js +72 -0
- package/dist/runtime/loop/agent-loop.js.map +1 -0
- package/dist/runtime/loop/events.d.ts +5 -0
- package/dist/runtime/loop/events.d.ts.map +1 -0
- package/dist/runtime/loop/events.js +5 -0
- package/dist/runtime/loop/events.js.map +1 -0
- package/dist/runtime/loop/index.d.ts +6 -0
- package/dist/runtime/loop/index.d.ts.map +1 -0
- package/dist/runtime/loop/index.js +6 -0
- package/dist/runtime/loop/index.js.map +1 -0
- package/dist/runtime/loop/stream-assistant.d.ts +9 -0
- package/dist/runtime/loop/stream-assistant.d.ts.map +1 -0
- package/dist/runtime/loop/stream-assistant.js +87 -0
- package/dist/runtime/loop/stream-assistant.js.map +1 -0
- package/dist/runtime/loop/tool-execution.d.ts +15 -0
- package/dist/runtime/loop/tool-execution.d.ts.map +1 -0
- package/dist/runtime/loop/tool-execution.js +271 -0
- package/dist/runtime/loop/tool-execution.js.map +1 -0
- package/dist/runtime/loop/turn-loop.d.ts +7 -0
- package/dist/runtime/loop/turn-loop.d.ts.map +1 -0
- package/dist/runtime/loop/turn-loop.js +84 -0
- package/dist/runtime/loop/turn-loop.js.map +1 -0
- package/dist/runtime.d.ts +63 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +170 -0
- package/dist/runtime.js.map +1 -0
- package/dist/suspension.d.ts +18 -0
- package/dist/suspension.d.ts.map +1 -0
- package/dist/suspension.js +19 -0
- package/dist/suspension.js.map +1 -0
- package/dist/types.d.ts +395 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/worker.d.ts +2 -0
- package/dist/worker.d.ts.map +1 -0
- package/dist/worker.js +88 -0
- package/dist/worker.js.map +1 -0
- package/package.json +54 -0
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ConversationMetadata, ConversationStorage, ConversationTreeEntry } from "./entries.js";
|
|
2
|
+
export declare class InMemoryConversationStorage<TMetadata extends ConversationMetadata = ConversationMetadata> implements ConversationStorage<TMetadata> {
|
|
3
|
+
private readonly metadata;
|
|
4
|
+
private entries;
|
|
5
|
+
private byId;
|
|
6
|
+
private labelsById;
|
|
7
|
+
private leafId;
|
|
8
|
+
constructor(options?: {
|
|
9
|
+
entries?: ConversationTreeEntry[];
|
|
10
|
+
metadata?: TMetadata;
|
|
11
|
+
});
|
|
12
|
+
getMetadata(): Promise<TMetadata>;
|
|
13
|
+
getLeafId(): Promise<string | null>;
|
|
14
|
+
setLeafId(leafId: string | null): Promise<void>;
|
|
15
|
+
createEntryId(): Promise<string>;
|
|
16
|
+
appendEntry(entry: ConversationTreeEntry): Promise<void>;
|
|
17
|
+
getEntry(id: string): Promise<ConversationTreeEntry | undefined>;
|
|
18
|
+
findEntries<TType extends ConversationTreeEntry["type"]>(type: TType): Promise<Array<Extract<ConversationTreeEntry, {
|
|
19
|
+
type: TType;
|
|
20
|
+
}>>>;
|
|
21
|
+
getLabel(id: string): Promise<string | undefined>;
|
|
22
|
+
getPathToRoot(leafId: string | null): Promise<ConversationTreeEntry[]>;
|
|
23
|
+
getEntries(): Promise<ConversationTreeEntry[]>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=memory-storage.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-storage.d.ts","sourceRoot":"","sources":["../../../src/harness/conversation/memory-storage.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EAEtB,MAAM,cAAc,CAAC;AAStB,qBAAa,2BAA2B,CACtC,SAAS,SAAS,oBAAoB,GAAG,oBAAoB,CAC7D,YAAW,mBAAmB,CAAC,SAAS,CAAC;IAEzC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,OAAO,CAA0B;IACzC,OAAO,CAAC,IAAI,CAAqC;IACjD,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,MAAM,CAAgB;gBAElB,OAAO,CAAC,EAAE;QACpB,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAC;QAClC,QAAQ,CAAC,EAAE,SAAS,CAAC;KACtB;IAiBK,WAAW,IAAI,OAAO,CAAC,SAAS,CAAC;IAIjC,SAAS,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAUnC,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB/C,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAIhC,WAAW,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC;IAIhE,WAAW,CAAC,KAAK,SAAS,qBAAqB,CAAC,MAAM,CAAC,EAC3D,IAAI,EAAE,KAAK,GACV,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE;QAAE,IAAI,EAAE,KAAK,CAAA;KAAE,CAAC,CAAC,CAAC;IAO5D,QAAQ,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAIjD,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAoBtE,UAAU,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAGrD"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { ConversationError } from "../errors.js";
|
|
2
|
+
import { buildLabelsById, generateEntryId, leafIdAfterEntry, updateLabelCache, } from "./storage-utils.js";
|
|
3
|
+
import { uuidv7 } from "./uuid.js";
|
|
4
|
+
export class InMemoryConversationStorage {
|
|
5
|
+
metadata;
|
|
6
|
+
entries;
|
|
7
|
+
byId;
|
|
8
|
+
labelsById;
|
|
9
|
+
leafId;
|
|
10
|
+
constructor(options) {
|
|
11
|
+
this.entries = options?.entries ? [...options.entries] : [];
|
|
12
|
+
this.byId = new Map(this.entries.map((entry) => [entry.id, entry]));
|
|
13
|
+
this.labelsById = buildLabelsById(this.entries);
|
|
14
|
+
this.leafId = null;
|
|
15
|
+
for (const entry of this.entries)
|
|
16
|
+
this.leafId = leafIdAfterEntry(entry);
|
|
17
|
+
if (this.leafId !== null && !this.byId.has(this.leafId)) {
|
|
18
|
+
throw new ConversationError("invalid_conversation", `Entry ${this.leafId} not found`);
|
|
19
|
+
}
|
|
20
|
+
this.metadata =
|
|
21
|
+
options?.metadata ??
|
|
22
|
+
{ id: uuidv7(), createdAt: new Date().toISOString() };
|
|
23
|
+
}
|
|
24
|
+
async getMetadata() {
|
|
25
|
+
return this.metadata;
|
|
26
|
+
}
|
|
27
|
+
async getLeafId() {
|
|
28
|
+
if (this.leafId !== null && !this.byId.has(this.leafId)) {
|
|
29
|
+
throw new ConversationError("invalid_conversation", `Entry ${this.leafId} not found`);
|
|
30
|
+
}
|
|
31
|
+
return this.leafId;
|
|
32
|
+
}
|
|
33
|
+
async setLeafId(leafId) {
|
|
34
|
+
if (leafId !== null && !this.byId.has(leafId)) {
|
|
35
|
+
throw new ConversationError("not_found", `Entry ${leafId} not found`);
|
|
36
|
+
}
|
|
37
|
+
const entry = {
|
|
38
|
+
type: "leaf",
|
|
39
|
+
id: generateEntryId(this.byId, { style: "short" }),
|
|
40
|
+
parentId: this.leafId,
|
|
41
|
+
timestamp: new Date().toISOString(),
|
|
42
|
+
targetId: leafId,
|
|
43
|
+
};
|
|
44
|
+
this.entries.push(entry);
|
|
45
|
+
this.byId.set(entry.id, entry);
|
|
46
|
+
this.leafId = leafId;
|
|
47
|
+
}
|
|
48
|
+
async createEntryId() {
|
|
49
|
+
return generateEntryId(this.byId, { style: "short" });
|
|
50
|
+
}
|
|
51
|
+
async appendEntry(entry) {
|
|
52
|
+
this.entries.push(entry);
|
|
53
|
+
this.byId.set(entry.id, entry);
|
|
54
|
+
updateLabelCache(this.labelsById, entry);
|
|
55
|
+
this.leafId = leafIdAfterEntry(entry);
|
|
56
|
+
}
|
|
57
|
+
async getEntry(id) {
|
|
58
|
+
return this.byId.get(id);
|
|
59
|
+
}
|
|
60
|
+
async findEntries(type) {
|
|
61
|
+
return this.entries.filter((entry) => entry.type === type);
|
|
62
|
+
}
|
|
63
|
+
async getLabel(id) {
|
|
64
|
+
return this.labelsById.get(id);
|
|
65
|
+
}
|
|
66
|
+
async getPathToRoot(leafId) {
|
|
67
|
+
if (leafId === null)
|
|
68
|
+
return [];
|
|
69
|
+
const path = [];
|
|
70
|
+
let current = this.byId.get(leafId);
|
|
71
|
+
if (!current)
|
|
72
|
+
throw new ConversationError("not_found", `Entry ${leafId} not found`);
|
|
73
|
+
while (current) {
|
|
74
|
+
path.unshift(current);
|
|
75
|
+
if (!current.parentId)
|
|
76
|
+
break;
|
|
77
|
+
const parent = this.byId.get(current.parentId);
|
|
78
|
+
if (!parent)
|
|
79
|
+
throw new ConversationError("invalid_conversation", `Entry ${current.parentId} not found`);
|
|
80
|
+
current = parent;
|
|
81
|
+
}
|
|
82
|
+
return path;
|
|
83
|
+
}
|
|
84
|
+
async getEntries() {
|
|
85
|
+
return [...this.entries];
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=memory-storage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory-storage.js","sourceRoot":"","sources":["../../../src/harness/conversation/memory-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAOjD,OAAO,EACL,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,OAAO,2BAA2B;IAIrB,QAAQ,CAAY;IAC7B,OAAO,CAA0B;IACjC,IAAI,CAAqC;IACzC,UAAU,CAAsB;IAChC,MAAM,CAAgB;IAE9B,YAAY,OAGX;QACC,IAAI,CAAC,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACxE,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,SAAS,IAAI,CAAC,MAAM,YAAY,CACjC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ;YACX,OAAO,EAAE,QAAQ;gBAChB,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAgB,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,WAAW;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,SAAS;QACb,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,SAAS,IAAI,CAAC,MAAM,YAAY,CACjC,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,MAAqB;QACnC,IAAI,MAAM,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,iBAAiB,CAAC,WAAW,EAAE,SAAS,MAAM,YAAY,CAAC,CAAC;QACxE,CAAC;QACD,MAAM,KAAK,GAAc;YACvB,IAAI,EAAE,MAAM;YACZ,EAAE,EAAE,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC;YAClD,QAAQ,EAAE,IAAI,CAAC,MAAM;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ,EAAE,MAAM;SACjB,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA4B;QAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QAC/B,gBAAgB,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,WAAW,CACf,IAAW;QAEX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CACxB,CAAC,KAAK,EAA4D,EAAE,CAClE,KAAK,CAAC,IAAI,KAAK,IAAI,CACtB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,EAAU;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACjC,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,MAAqB;QACvC,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC/B,MAAM,IAAI,GAA4B,EAAE,CAAC;QACzC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,CAAC,OAAO;YACV,MAAM,IAAI,iBAAiB,CAAC,WAAW,EAAE,SAAS,MAAM,YAAY,CAAC,CAAC;QACxE,OAAO,OAAO,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAAE,MAAM;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM;gBACT,MAAM,IAAI,iBAAiB,CACzB,sBAAsB,EACtB,SAAS,OAAO,CAAC,QAAQ,YAAY,CACtC,CAAC;YACJ,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,UAAU;QACd,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;CACF"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { type FileError } from "../errors.js";
|
|
2
|
+
import type { Result } from "../result.js";
|
|
3
|
+
import { Conversation } from "./conversation.js";
|
|
4
|
+
import type { ConversationMetadata, ConversationStorage, ConversationTreeEntry } from "./entries.js";
|
|
5
|
+
export declare function createConversationId(): string;
|
|
6
|
+
export declare function createTimestamp(): string;
|
|
7
|
+
export declare function toConversation<TMetadata extends ConversationMetadata>(storage: ConversationStorage<TMetadata>): Conversation<TMetadata>;
|
|
8
|
+
export declare function getFileSystemResultOrThrow<TValue>(result: Result<TValue, FileError>, message: string): TValue;
|
|
9
|
+
export declare function getEntriesToFork(storage: ConversationStorage, options: {
|
|
10
|
+
entryId?: string;
|
|
11
|
+
position?: "before" | "at";
|
|
12
|
+
}): Promise<ConversationTreeEntry[]>;
|
|
13
|
+
//# sourceMappingURL=repo-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-utils.d.ts","sourceRoot":"","sources":["../../../src/harness/conversation/repo-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EACV,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,cAAc,CAAC;AAGtB,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAED,wBAAgB,cAAc,CAAC,SAAS,SAAS,oBAAoB,EACnE,OAAO,EAAE,mBAAmB,CAAC,SAAS,CAAC,GACtC,YAAY,CAAC,SAAS,CAAC,CAEzB;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAC/C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACjC,OAAO,EAAE,MAAM,GACd,MAAM,CAUR;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE;IAAE,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAAE,GACxD,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAsBlC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ConversationError } from "../errors.js";
|
|
2
|
+
import { Conversation } from "./conversation.js";
|
|
3
|
+
import { uuidv7 } from "./uuid.js";
|
|
4
|
+
export function createConversationId() {
|
|
5
|
+
return uuidv7();
|
|
6
|
+
}
|
|
7
|
+
export function createTimestamp() {
|
|
8
|
+
return new Date().toISOString();
|
|
9
|
+
}
|
|
10
|
+
export function toConversation(storage) {
|
|
11
|
+
return new Conversation(storage);
|
|
12
|
+
}
|
|
13
|
+
export function getFileSystemResultOrThrow(result, message) {
|
|
14
|
+
if (!result.ok) {
|
|
15
|
+
const code = result.error.code === "not_found" ? "not_found" : "storage";
|
|
16
|
+
throw new ConversationError(code, `${message}: ${result.error.message}`, result.error);
|
|
17
|
+
}
|
|
18
|
+
return result.value;
|
|
19
|
+
}
|
|
20
|
+
export async function getEntriesToFork(storage, options) {
|
|
21
|
+
if (!options.entryId)
|
|
22
|
+
return storage.getEntries();
|
|
23
|
+
const target = await storage.getEntry(options.entryId);
|
|
24
|
+
if (!target) {
|
|
25
|
+
throw new ConversationError("invalid_fork_target", `Entry ${options.entryId} not found`);
|
|
26
|
+
}
|
|
27
|
+
let effectiveLeafId;
|
|
28
|
+
if ((options.position ?? "before") === "at") {
|
|
29
|
+
effectiveLeafId = target.id;
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
if (target.type !== "message" || target.message.role !== "user") {
|
|
33
|
+
throw new ConversationError("invalid_fork_target", `Entry ${options.entryId} is not a user message`);
|
|
34
|
+
}
|
|
35
|
+
effectiveLeafId = target.parentId;
|
|
36
|
+
}
|
|
37
|
+
return storage.getPathToRoot(effectiveLeafId);
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=repo-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-utils.js","sourceRoot":"","sources":["../../../src/harness/conversation/repo-utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAkB,MAAM,cAAc,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMjD,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAEnC,MAAM,UAAU,oBAAoB;IAClC,OAAO,MAAM,EAAE,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,OAAuC;IAEvC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAAiC,EACjC,OAAe;IAEf,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACzE,MAAM,IAAI,iBAAiB,CACzB,IAAI,EACJ,GAAG,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,EACrC,MAAM,CAAC,KAAK,CACb,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,OAA4B,EAC5B,OAAyD;IAEzD,IAAI,CAAC,OAAO,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,UAAU,EAAE,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,SAAS,OAAO,CAAC,OAAO,YAAY,CACrC,CAAC;IACJ,CAAC;IACD,IAAI,eAA8B,CAAC;IACnC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC;QAC5C,eAAe,GAAG,MAAM,CAAC,EAAE,CAAC;IAC9B,CAAC;SAAM,CAAC;QACN,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;YAChE,MAAM,IAAI,iBAAiB,CACzB,qBAAqB,EACrB,SAAS,OAAO,CAAC,OAAO,wBAAwB,CACjD,CAAC;QACJ,CAAC;QACD,eAAe,GAAG,MAAM,CAAC,QAAQ,CAAC;IACpC,CAAC;IACD,OAAO,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;AAChD,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ConversationTreeEntry } from "./entries.js";
|
|
2
|
+
export type EntryIdStyle = "jsonl" | "short";
|
|
3
|
+
export declare function updateLabelCache(labelsById: Map<string, string>, entry: ConversationTreeEntry): void;
|
|
4
|
+
export declare function buildLabelsById(entries: ConversationTreeEntry[]): Map<string, string>;
|
|
5
|
+
export declare function leafIdAfterEntry(entry: ConversationTreeEntry): string | null;
|
|
6
|
+
export declare function generateEntryId(byId: {
|
|
7
|
+
has(id: string): boolean;
|
|
8
|
+
}, options?: {
|
|
9
|
+
style?: EntryIdStyle;
|
|
10
|
+
}): string;
|
|
11
|
+
//# sourceMappingURL=storage-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-utils.d.ts","sourceRoot":"","sources":["../../../src/harness/conversation/storage-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAG1D,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,OAAO,CAAC;AAE7C,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,KAAK,EAAE,qBAAqB,GAC3B,IAAI,CAQN;AAED,wBAAgB,eAAe,CAC7B,OAAO,EAAE,qBAAqB,EAAE,GAC/B,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAMrB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAE5E;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,EAClC,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,YAAY,CAAA;CAAO,GACrC,MAAM,CAOR"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { uuidv7 } from "./uuid.js";
|
|
2
|
+
export function updateLabelCache(labelsById, entry) {
|
|
3
|
+
if (entry.type !== "label")
|
|
4
|
+
return;
|
|
5
|
+
const label = entry.label?.trim();
|
|
6
|
+
if (label) {
|
|
7
|
+
labelsById.set(entry.targetId, label);
|
|
8
|
+
}
|
|
9
|
+
else {
|
|
10
|
+
labelsById.delete(entry.targetId);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function buildLabelsById(entries) {
|
|
14
|
+
const labelsById = new Map();
|
|
15
|
+
for (const entry of entries) {
|
|
16
|
+
updateLabelCache(labelsById, entry);
|
|
17
|
+
}
|
|
18
|
+
return labelsById;
|
|
19
|
+
}
|
|
20
|
+
export function leafIdAfterEntry(entry) {
|
|
21
|
+
return entry.type === "leaf" ? entry.targetId : entry.id;
|
|
22
|
+
}
|
|
23
|
+
export function generateEntryId(byId, options = {}) {
|
|
24
|
+
const style = options.style ?? "jsonl";
|
|
25
|
+
for (let i = 0; i < 100; i++) {
|
|
26
|
+
const id = style === "short" ? uuidv7().slice(0, 8) : `entry_${uuidv7()}`;
|
|
27
|
+
if (!byId.has(id))
|
|
28
|
+
return id;
|
|
29
|
+
}
|
|
30
|
+
return style === "short" ? uuidv7() : `entry_${uuidv7()}`;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=storage-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"storage-utils.js","sourceRoot":"","sources":["../../../src/harness/conversation/storage-utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAInC,MAAM,UAAU,gBAAgB,CAC9B,UAA+B,EAC/B,KAA4B;IAE5B,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO;IACnC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;IAClC,IAAI,KAAK,EAAE,CAAC;QACV,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,OAAgC;IAEhC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,gBAAgB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,KAA4B;IAC3D,OAAO,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAkC,EAClC,UAAoC,EAAE;IAEtC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7B,MAAM,EAAE,GAAG,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,CAAC;QAC1E,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;IAC/B,CAAC;IACD,OAAO,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,MAAM,EAAE,EAAE,CAAC;AAC5D,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ConversationTreeEntry } from "./entries.js";
|
|
2
|
+
type NavigationText = {
|
|
3
|
+
newLeafId: string | null;
|
|
4
|
+
editorText?: string;
|
|
5
|
+
};
|
|
6
|
+
export declare function editorTextForNavigatedEntry(targetEntry: ConversationTreeEntry, targetId: string | null): NavigationText;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=text-extraction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-extraction.d.ts","sourceRoot":"","sources":["../../../src/harness/conversation/text-extraction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAE1D,KAAK,cAAc,GAAG;IACpB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,CAAC;AAIF,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,qBAAqB,EAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,GACtB,cAAc,CAgBhB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
export function editorTextForNavigatedEntry(targetEntry, targetId) {
|
|
2
|
+
if (targetEntry.type === "message" && targetEntry.message.role === "user") {
|
|
3
|
+
return {
|
|
4
|
+
newLeafId: targetEntry.parentId,
|
|
5
|
+
editorText: textFromContent(targetEntry.message.content),
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
if (targetEntry.type === "custom_message") {
|
|
9
|
+
return {
|
|
10
|
+
newLeafId: targetEntry.parentId,
|
|
11
|
+
editorText: textFromContent(targetEntry.content),
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
return { newLeafId: targetId };
|
|
15
|
+
}
|
|
16
|
+
function textFromContent(content) {
|
|
17
|
+
return typeof content === "string"
|
|
18
|
+
? content
|
|
19
|
+
: content
|
|
20
|
+
.filter((item) => item.type === "text")
|
|
21
|
+
.map((item) => item.text)
|
|
22
|
+
.join("");
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=text-extraction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text-extraction.js","sourceRoot":"","sources":["../../../src/harness/conversation/text-extraction.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,2BAA2B,CACzC,WAAkC,EAClC,QAAuB;IAEvB,IAAI,WAAW,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,CAAC,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1E,OAAO;YACL,SAAS,EAAE,WAAW,CAAC,QAAQ;YAC/B,UAAU,EAAE,eAAe,CACzB,WAAW,CAAC,OAAO,CAAC,OAA0B,CAC/C;SACF,CAAC;IACJ,CAAC;IACD,IAAI,WAAW,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QAC1C,OAAO;YACL,SAAS,EAAE,WAAW,CAAC,QAAQ;YAC/B,UAAU,EAAE,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC;SACjD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AACjC,CAAC;AAED,SAAS,eAAe,CAAC,OAAwB;IAC/C,OAAO,OAAO,OAAO,KAAK,QAAQ;QAChC,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,OAAO;aACJ,MAAM,CACL,CAAC,IAAI,EAA0C,EAAE,CAC/C,IAAI,CAAC,IAAI,KAAK,MAAM,CACvB;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;aACxB,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.d.ts","sourceRoot":"","sources":["../../../src/harness/conversation/uuid.ts"],"names":[],"mappings":"AAcA,wBAAgB,MAAM,IAAI,MAAM,CAsC/B"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
let lastTimestamp = -Infinity;
|
|
2
|
+
let sequence = 0;
|
|
3
|
+
function fillRandomBytes(bytes) {
|
|
4
|
+
const crypto = globalThis.crypto;
|
|
5
|
+
if (crypto?.getRandomValues) {
|
|
6
|
+
crypto.getRandomValues(bytes);
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
for (let i = 0; i < bytes.length; i++) {
|
|
10
|
+
bytes[i] = Math.floor(Math.random() * 256);
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
export function uuidv7() {
|
|
14
|
+
const random = new Uint8Array(16);
|
|
15
|
+
fillRandomBytes(random);
|
|
16
|
+
const timestamp = Date.now();
|
|
17
|
+
if (timestamp > lastTimestamp) {
|
|
18
|
+
sequence =
|
|
19
|
+
random[6] * 0x1000000 +
|
|
20
|
+
random[7] * 0x10000 +
|
|
21
|
+
random[8] * 0x100 +
|
|
22
|
+
random[9];
|
|
23
|
+
lastTimestamp = timestamp;
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
sequence = (sequence + 1) >>> 0;
|
|
27
|
+
if (sequence === 0) {
|
|
28
|
+
lastTimestamp++;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const bytes = new Uint8Array(16);
|
|
32
|
+
bytes[0] = (lastTimestamp / 0x10000000000) & 0xff;
|
|
33
|
+
bytes[1] = (lastTimestamp / 0x100000000) & 0xff;
|
|
34
|
+
bytes[2] = (lastTimestamp / 0x1000000) & 0xff;
|
|
35
|
+
bytes[3] = (lastTimestamp / 0x10000) & 0xff;
|
|
36
|
+
bytes[4] = (lastTimestamp / 0x100) & 0xff;
|
|
37
|
+
bytes[5] = lastTimestamp & 0xff;
|
|
38
|
+
bytes[6] = 0x70 | ((sequence >>> 28) & 0x0f);
|
|
39
|
+
bytes[7] = (sequence >>> 20) & 0xff;
|
|
40
|
+
bytes[8] = 0x80 | ((sequence >>> 14) & 0x3f);
|
|
41
|
+
bytes[9] = (sequence >>> 6) & 0xff;
|
|
42
|
+
bytes[10] = ((sequence & 0x3f) << 2) | (random[10] & 0x03);
|
|
43
|
+
bytes[11] = random[11];
|
|
44
|
+
bytes[12] = random[12];
|
|
45
|
+
bytes[13] = random[13];
|
|
46
|
+
bytes[14] = random[14];
|
|
47
|
+
bytes[15] = random[15];
|
|
48
|
+
return formatUuid(bytes);
|
|
49
|
+
}
|
|
50
|
+
function formatUuid(bytes) {
|
|
51
|
+
const hex = Array.from(bytes, (byte) => byte.toString(16).padStart(2, "0"));
|
|
52
|
+
return `${hex.slice(0, 4).join("")}-${hex.slice(4, 6).join("")}-${hex.slice(6, 8).join("")}-${hex.slice(8, 10).join("")}-${hex.slice(10, 16).join("")}`;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=uuid.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uuid.js","sourceRoot":"","sources":["../../../src/harness/conversation/uuid.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { AgentMessage } from "../types.js";
|
|
2
|
+
import type { Conversation } from "./conversation/conversation.js";
|
|
3
|
+
import type { AgentHarnessPhase, PendingConversationWrite } from "./events.js";
|
|
4
|
+
export declare function queueOrWriteMessage(phase: AgentHarnessPhase, pendingWrites: PendingConversationWrite[], conversation: Conversation, message: AgentMessage, options?: {
|
|
5
|
+
id?: string;
|
|
6
|
+
timestamp?: string;
|
|
7
|
+
}): Promise<void> | void;
|
|
8
|
+
export declare function flushPendingConversationWrites(conversation: Conversation, pendingWrites: PendingConversationWrite[]): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=conversation-writes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-writes.d.ts","sourceRoot":"","sources":["../../src/harness/conversation-writes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAE/E,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,iBAAiB,EACxB,aAAa,EAAE,wBAAwB,EAAE,EACzC,YAAY,EAAE,YAAY,EAC1B,OAAO,EAAE,YAAY,EACrB,OAAO,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,GAChD,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAkBtB;AAED,wBAAsB,8BAA8B,CAClD,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,wBAAwB,EAAE,GACxC,OAAO,CAAC,IAAI,CAAC,CAsCf"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
export function queueOrWriteMessage(phase, pendingWrites, conversation, message, options = {}) {
|
|
2
|
+
if (phase === "idle") {
|
|
3
|
+
return (options.id
|
|
4
|
+
? conversation.appendMessageWithId(options.id, message, options.timestamp)
|
|
5
|
+
: conversation.appendMessage(message)).then(() => undefined);
|
|
6
|
+
}
|
|
7
|
+
pendingWrites.push({
|
|
8
|
+
type: "message",
|
|
9
|
+
id: options.id,
|
|
10
|
+
timestamp: options.timestamp,
|
|
11
|
+
message,
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
export async function flushPendingConversationWrites(conversation, pendingWrites) {
|
|
15
|
+
while (pendingWrites.length > 0) {
|
|
16
|
+
const write = pendingWrites[0];
|
|
17
|
+
if (!write)
|
|
18
|
+
break;
|
|
19
|
+
if (write.type === "message") {
|
|
20
|
+
if (write.id) {
|
|
21
|
+
await conversation.appendMessageWithId(write.id, write.message, write.timestamp);
|
|
22
|
+
}
|
|
23
|
+
else {
|
|
24
|
+
await conversation.appendMessage(write.message);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
else if (write.type === "model_change") {
|
|
28
|
+
await conversation.appendModelChange(write.provider, write.modelId);
|
|
29
|
+
}
|
|
30
|
+
else if (write.type === "thinking_level_change") {
|
|
31
|
+
await conversation.appendThinkingLevelChange(write.thinkingLevel);
|
|
32
|
+
}
|
|
33
|
+
else if (write.type === "active_tools_change") {
|
|
34
|
+
await conversation.appendActiveToolsChange(write.activeToolNames);
|
|
35
|
+
}
|
|
36
|
+
else if (write.type === "custom") {
|
|
37
|
+
await conversation.appendCustomEntry(write.customType, write.data);
|
|
38
|
+
}
|
|
39
|
+
else if (write.type === "custom_message") {
|
|
40
|
+
await conversation.appendCustomMessageEntry(write.customType, write.content, write.display, write.details);
|
|
41
|
+
}
|
|
42
|
+
else if (write.type === "label") {
|
|
43
|
+
await conversation.appendLabel(write.targetId, write.label);
|
|
44
|
+
}
|
|
45
|
+
else if (write.type === "conversation_info") {
|
|
46
|
+
await conversation.appendConversationName(write.name ?? "");
|
|
47
|
+
}
|
|
48
|
+
else if (write.type === "leaf") {
|
|
49
|
+
await conversation.getStorage().setLeafId(write.targetId);
|
|
50
|
+
}
|
|
51
|
+
pendingWrites.shift();
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=conversation-writes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conversation-writes.js","sourceRoot":"","sources":["../../src/harness/conversation-writes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { ExecutionError, FileError } from "../errors.js";
|
|
2
|
+
import { type Result } from "../result.js";
|
|
3
|
+
import type { ExecutionEnv, FileInfo } from "./types.js";
|
|
4
|
+
export declare class NodeExecutionEnv implements ExecutionEnv {
|
|
5
|
+
cwd: string;
|
|
6
|
+
private shellPath?;
|
|
7
|
+
private shellEnv?;
|
|
8
|
+
constructor(options: {
|
|
9
|
+
cwd: string;
|
|
10
|
+
shellPath?: string;
|
|
11
|
+
shellEnv?: NodeJS.ProcessEnv;
|
|
12
|
+
});
|
|
13
|
+
absolutePath(path: string): Promise<Result<string, FileError>>;
|
|
14
|
+
joinPath(parts: string[]): Promise<Result<string, FileError>>;
|
|
15
|
+
exec(command: string, options?: {
|
|
16
|
+
cwd?: string;
|
|
17
|
+
env?: Record<string, string>;
|
|
18
|
+
timeout?: number;
|
|
19
|
+
abortSignal?: AbortSignal;
|
|
20
|
+
onStdout?: (chunk: string) => void;
|
|
21
|
+
onStderr?: (chunk: string) => void;
|
|
22
|
+
}): Promise<Result<{
|
|
23
|
+
stdout: string;
|
|
24
|
+
stderr: string;
|
|
25
|
+
exitCode: number;
|
|
26
|
+
}, ExecutionError>>;
|
|
27
|
+
readTextFile(path: string, abortSignal?: AbortSignal): Promise<Result<string, FileError>>;
|
|
28
|
+
readTextLines(path: string, options?: {
|
|
29
|
+
maxLines?: number;
|
|
30
|
+
abortSignal?: AbortSignal;
|
|
31
|
+
}): Promise<Result<string[], FileError>>;
|
|
32
|
+
readBinaryFile(path: string, abortSignal?: AbortSignal): Promise<Result<Uint8Array, FileError>>;
|
|
33
|
+
writeFile(path: string, content: string | Uint8Array, abortSignal?: AbortSignal): Promise<Result<void, FileError>>;
|
|
34
|
+
appendFile(path: string, content: string | Uint8Array): Promise<Result<void, FileError>>;
|
|
35
|
+
fileInfo(path: string): Promise<Result<FileInfo, FileError>>;
|
|
36
|
+
listDir(path: string, abortSignal?: AbortSignal): Promise<Result<FileInfo[], FileError>>;
|
|
37
|
+
canonicalPath(path: string): Promise<Result<string, FileError>>;
|
|
38
|
+
exists(path: string): Promise<Result<boolean, FileError>>;
|
|
39
|
+
createDir(path: string, options?: {
|
|
40
|
+
recursive?: boolean;
|
|
41
|
+
}): Promise<Result<void, FileError>>;
|
|
42
|
+
remove(path: string, options?: {
|
|
43
|
+
recursive?: boolean;
|
|
44
|
+
force?: boolean;
|
|
45
|
+
}): Promise<Result<void, FileError>>;
|
|
46
|
+
createTempDir(prefix?: string): Promise<Result<string, FileError>>;
|
|
47
|
+
createTempFile(options?: {
|
|
48
|
+
prefix?: string;
|
|
49
|
+
suffix?: string;
|
|
50
|
+
}): Promise<Result<string, FileError>>;
|
|
51
|
+
cleanup(): Promise<void>;
|
|
52
|
+
}
|
|
53
|
+
//# sourceMappingURL=nodejs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nodejs.d.ts","sourceRoot":"","sources":["../../../src/harness/env/nodejs.ts"],"names":[],"mappings":"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"}
|