@ai0x0/codex-ts 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core/src/base_instructions.d.ts +20 -0
- package/dist/core/src/base_instructions.d.ts.map +1 -0
- package/dist/core/src/base_instructions.js +40 -0
- package/dist/core/src/base_instructions.js.map +1 -0
- package/dist/core/src/codex_thread.d.ts +48 -0
- package/dist/core/src/codex_thread.d.ts.map +1 -1
- package/dist/core/src/codex_thread.js +72 -6
- package/dist/core/src/codex_thread.js.map +1 -1
- package/dist/core/src/compact.d.ts +37 -0
- package/dist/core/src/compact.d.ts.map +1 -0
- package/dist/core/src/compact.js +154 -0
- package/dist/core/src/compact.js.map +1 -0
- package/dist/core/src/index.d.ts +6 -0
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/index.js +4 -0
- package/dist/core/src/index.js.map +1 -1
- package/dist/core/src/session/sse.d.ts +7 -0
- package/dist/core/src/session/sse.d.ts.map +1 -0
- package/dist/core/src/session/sse.js +40 -0
- package/dist/core/src/session/sse.js.map +1 -0
- package/dist/core/src/session/turn.d.ts +29 -1
- package/dist/core/src/session/turn.d.ts.map +1 -1
- package/dist/core/src/session/turn.js +90 -40
- package/dist/core/src/session/turn.js.map +1 -1
- package/dist/core/src/skills.d.ts +66 -0
- package/dist/core/src/skills.d.ts.map +1 -0
- package/dist/core/src/skills.js +304 -0
- package/dist/core/src/skills.js.map +1 -0
- package/dist/core/src/state/auto_compact_window.d.ts +42 -0
- package/dist/core/src/state/auto_compact_window.d.ts.map +1 -0
- package/dist/core/src/state/auto_compact_window.js +59 -0
- package/dist/core/src/state/auto_compact_window.js.map +1 -0
- package/dist/core/src/tools/router.d.ts +26 -1
- package/dist/core/src/tools/router.d.ts.map +1 -1
- package/dist/core/src/tools/router.js +15 -2
- package/dist/core/src/tools/router.js.map +1 -1
- package/dist/core/tests/suite/compact.test.d.ts +10 -0
- package/dist/core/tests/suite/compact.test.d.ts.map +1 -0
- package/dist/core/tests/suite/compact.test.js +170 -0
- package/dist/core/tests/suite/compact.test.js.map +1 -0
- package/dist/core/tests/suite/extensions.test.d.ts +8 -0
- package/dist/core/tests/suite/extensions.test.d.ts.map +1 -0
- package/dist/core/tests/suite/extensions.test.js +186 -0
- package/dist/core/tests/suite/extensions.test.js.map +1 -0
- package/dist/core/tests/suite/message_item_type.test.d.ts +17 -0
- package/dist/core/tests/suite/message_item_type.test.d.ts.map +1 -0
- package/dist/core/tests/suite/message_item_type.test.js +111 -0
- package/dist/core/tests/suite/message_item_type.test.js.map +1 -0
- package/dist/core/tests/suite/skills.test.d.ts +7 -0
- package/dist/core/tests/suite/skills.test.d.ts.map +1 -0
- package/dist/core/tests/suite/skills.test.js +324 -0
- package/dist/core/tests/suite/skills.test.js.map +1 -0
- package/dist/protocol/src/index.d.ts +1 -0
- package/dist/protocol/src/index.d.ts.map +1 -1
- package/dist/protocol/src/protocol.d.ts +32 -0
- package/dist/protocol/src/protocol.d.ts.map +1 -1
- package/dist/thread-store/src/index.d.ts +1 -0
- package/dist/thread-store/src/index.d.ts.map +1 -1
- package/dist/thread-store/src/index.js +1 -0
- package/dist/thread-store/src/index.js.map +1 -1
- package/dist/thread-store/src/indexeddb.d.ts +29 -0
- package/dist/thread-store/src/indexeddb.d.ts.map +1 -0
- package/dist/thread-store/src/indexeddb.js +97 -0
- package/dist/thread-store/src/indexeddb.js.map +1 -0
- package/dist/thread-store/src/types.d.ts +2 -0
- package/dist/thread-store/src/types.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extensions.test.js","sourceRoot":"","sources":["../../../../core/tests/suite/extensions.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regression: Responses API `input` message items MUST carry `type: "message"`.
|
|
3
|
+
*
|
|
4
|
+
* codex-rs serializes `ResponseItem::Message` with
|
|
5
|
+
* `#[serde(tag = "type", rename_all = "snake_case")]`, so every message rides
|
|
6
|
+
* the wire as `{"type":"message","role":...,"content":...}`. codex-ts must
|
|
7
|
+
* mirror that exactly. Discriminating user/assistant by `role` alone (omitting
|
|
8
|
+
* `type`) is a silent divergence: strict Responses-API translators that key off
|
|
9
|
+
* `type` (e.g. codeproxy's `String(item.type) || "message"`, which turns a
|
|
10
|
+
* missing `type` into the literal string `"undefined"`) then DROP every message
|
|
11
|
+
* item — the model receives only the system prompt and replies with nonsense.
|
|
12
|
+
*
|
|
13
|
+
* These tests capture the actual request body and assert the discriminator is
|
|
14
|
+
* present on user, assistant (replayed as history), and context items.
|
|
15
|
+
*/
|
|
16
|
+
export {};
|
|
17
|
+
//# sourceMappingURL=message_item_type.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message_item_type.test.d.ts","sourceRoot":"","sources":["../../../../core/tests/suite/message_item_type.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Regression: Responses API `input` message items MUST carry `type: "message"`.
|
|
3
|
+
*
|
|
4
|
+
* codex-rs serializes `ResponseItem::Message` with
|
|
5
|
+
* `#[serde(tag = "type", rename_all = "snake_case")]`, so every message rides
|
|
6
|
+
* the wire as `{"type":"message","role":...,"content":...}`. codex-ts must
|
|
7
|
+
* mirror that exactly. Discriminating user/assistant by `role` alone (omitting
|
|
8
|
+
* `type`) is a silent divergence: strict Responses-API translators that key off
|
|
9
|
+
* `type` (e.g. codeproxy's `String(item.type) || "message"`, which turns a
|
|
10
|
+
* missing `type` into the literal string `"undefined"`) then DROP every message
|
|
11
|
+
* item — the model receives only the system prompt and replies with nonsense.
|
|
12
|
+
*
|
|
13
|
+
* These tests capture the actual request body and assert the discriminator is
|
|
14
|
+
* present on user, assistant (replayed as history), and context items.
|
|
15
|
+
*/
|
|
16
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
17
|
+
import { CodexThread } from "../../src/codex_thread.js";
|
|
18
|
+
import { evAssistantMessage, evCompleted, evResponseCreated, makeSseResponse, sseFlat, waitForEvent, } from "../common/lib.js";
|
|
19
|
+
const SKILLS = [
|
|
20
|
+
{
|
|
21
|
+
name: "song-analyzer",
|
|
22
|
+
description: "Analyze a song.",
|
|
23
|
+
path: ".agents/skills/song-analyzer/SKILL.md",
|
|
24
|
+
},
|
|
25
|
+
];
|
|
26
|
+
function mockSingleTurn(assistantText = "ok") {
|
|
27
|
+
const fetchMock = vi.fn().mockResolvedValue(makeSseResponse(sseFlat([
|
|
28
|
+
evResponseCreated("r1"),
|
|
29
|
+
evAssistantMessage(assistantText),
|
|
30
|
+
evCompleted("r1"),
|
|
31
|
+
])));
|
|
32
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
33
|
+
return fetchMock;
|
|
34
|
+
}
|
|
35
|
+
function inputOf(fetchMock, callIndex = 0) {
|
|
36
|
+
const init = fetchMock.mock.calls[callIndex][1];
|
|
37
|
+
return JSON.parse(init.body).input;
|
|
38
|
+
}
|
|
39
|
+
describe("Responses input items carry the `type` discriminator", () => {
|
|
40
|
+
beforeEach(() => {
|
|
41
|
+
vi.unstubAllGlobals();
|
|
42
|
+
});
|
|
43
|
+
it("tags the user message with type:'message'", async () => {
|
|
44
|
+
const fetchMock = mockSingleTurn();
|
|
45
|
+
const codex = new CodexThread({ apiKey: "k", model: "m" });
|
|
46
|
+
await codex.submit({
|
|
47
|
+
type: "UserInput",
|
|
48
|
+
items: [{ type: "text", text: "你好" }],
|
|
49
|
+
});
|
|
50
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
51
|
+
const userMsg = inputOf(fetchMock).find((it) => it.role === "user");
|
|
52
|
+
expect(userMsg).toBeDefined();
|
|
53
|
+
expect(userMsg.type).toBe("message");
|
|
54
|
+
});
|
|
55
|
+
it("tags every role-bearing item (user + context) and emits no role-only item", async () => {
|
|
56
|
+
const fetchMock = mockSingleTurn();
|
|
57
|
+
const codex = new CodexThread({
|
|
58
|
+
apiKey: "k",
|
|
59
|
+
model: "m",
|
|
60
|
+
baseInstructions: "",
|
|
61
|
+
agentsMd: "PROJECT_DOC",
|
|
62
|
+
skills: SKILLS,
|
|
63
|
+
});
|
|
64
|
+
await codex.submit({
|
|
65
|
+
type: "UserInput",
|
|
66
|
+
items: [{ type: "text", text: "hi" }],
|
|
67
|
+
});
|
|
68
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
69
|
+
const input = inputOf(fetchMock);
|
|
70
|
+
// contextItems (agentsMd + catalog) + the user message all carry a role.
|
|
71
|
+
const roleItems = input.filter((it) => "role" in it);
|
|
72
|
+
expect(roleItems.length).toBeGreaterThan(1);
|
|
73
|
+
for (const item of roleItems) {
|
|
74
|
+
expect(item.type).toBe("message");
|
|
75
|
+
}
|
|
76
|
+
// Invariant: a role-bearing item without type:"message" is exactly the bug.
|
|
77
|
+
expect(input.some((it) => "role" in it && it.type !== "message")).toBe(false);
|
|
78
|
+
});
|
|
79
|
+
it("tags the assistant message when it is replayed as history next turn", async () => {
|
|
80
|
+
const fetchMock = vi
|
|
81
|
+
.fn()
|
|
82
|
+
.mockResolvedValueOnce(makeSseResponse(sseFlat([
|
|
83
|
+
evResponseCreated("r1"),
|
|
84
|
+
evAssistantMessage("hi there"),
|
|
85
|
+
evCompleted("r1"),
|
|
86
|
+
])))
|
|
87
|
+
.mockResolvedValueOnce(makeSseResponse(sseFlat([
|
|
88
|
+
evResponseCreated("r2"),
|
|
89
|
+
evAssistantMessage("again"),
|
|
90
|
+
evCompleted("r2"),
|
|
91
|
+
])));
|
|
92
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
93
|
+
const codex = new CodexThread({ apiKey: "k", model: "m" });
|
|
94
|
+
await codex.submit({
|
|
95
|
+
type: "UserInput",
|
|
96
|
+
items: [{ type: "text", text: "first" }],
|
|
97
|
+
});
|
|
98
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
99
|
+
await codex.submit({
|
|
100
|
+
type: "UserInput",
|
|
101
|
+
items: [{ type: "text", text: "second" }],
|
|
102
|
+
});
|
|
103
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
104
|
+
// The 2nd request replays turn-1's assistant message as history.
|
|
105
|
+
const assistantMsg = inputOf(fetchMock, 1).find((it) => it.role === "assistant");
|
|
106
|
+
expect(assistantMsg).toBeDefined();
|
|
107
|
+
expect(assistantMsg.type).toBe("message");
|
|
108
|
+
expect(assistantMsg.content).toBe("hi there");
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
//# sourceMappingURL=message_item_type.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message_item_type.test.js","sourceRoot":"","sources":["../../../../core/tests/suite/message_item_type.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for the two-layer skill injection (mirrors codex-rs core-skills):
|
|
3
|
+
* - Layer 1: renderSkillsCatalog() — always-on "## Skills" index
|
|
4
|
+
* - Layer 2: extractSkillMentions() / loadSkillContent — `$skill-name` → full body
|
|
5
|
+
*/
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=skills.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.test.d.ts","sourceRoot":"","sources":["../../../../core/tests/suite/skills.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tests for the two-layer skill injection (mirrors codex-rs core-skills):
|
|
3
|
+
* - Layer 1: renderSkillsCatalog() — always-on "## Skills" index
|
|
4
|
+
* - Layer 2: extractSkillMentions() / loadSkillContent — `$skill-name` → full body
|
|
5
|
+
*/
|
|
6
|
+
import { beforeEach, describe, expect, it, vi } from "vitest";
|
|
7
|
+
import { CodexThread } from "../../src/codex_thread.js";
|
|
8
|
+
import { defaultSkillMetadataBudget, extractSkillMentions, renderSkillInjection, renderSkillsCatalog, } from "../../src/skills.js";
|
|
9
|
+
import { evAssistantMessage, evCompleted, evResponseCreated, makeSseResponse, sseFlat, waitForEvent, } from "../common/lib.js";
|
|
10
|
+
const SKILLS = [
|
|
11
|
+
{
|
|
12
|
+
name: "song-analyzer",
|
|
13
|
+
description: "Analyze a song.",
|
|
14
|
+
path: ".agents/skills/song-analyzer/SKILL.md",
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: "mv-workflow",
|
|
18
|
+
description: "End-to-end MV workflow.",
|
|
19
|
+
path: ".agents/skills/mv-workflow/SKILL.md",
|
|
20
|
+
},
|
|
21
|
+
];
|
|
22
|
+
describe("renderSkillsCatalog", () => {
|
|
23
|
+
it("returns an empty string when there are no skills", () => {
|
|
24
|
+
expect(renderSkillsCatalog([])).toBe("");
|
|
25
|
+
});
|
|
26
|
+
it("renders header, one line per skill, and the how-to-use section", () => {
|
|
27
|
+
const out = renderSkillsCatalog(SKILLS);
|
|
28
|
+
expect(out).toContain("## Skills");
|
|
29
|
+
expect(out).toContain("### Available skills");
|
|
30
|
+
expect(out).toContain("- song-analyzer: Analyze a song. (file: .agents/skills/song-analyzer/SKILL.md)");
|
|
31
|
+
expect(out).toContain("### How to use skills");
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
describe("extractSkillMentions", () => {
|
|
35
|
+
it("matches a $skill-name mention", () => {
|
|
36
|
+
const result = extractSkillMentions("please run $song-analyzer now", SKILLS);
|
|
37
|
+
expect(result.map((s) => s.name)).toEqual(["song-analyzer"]);
|
|
38
|
+
});
|
|
39
|
+
it("ignores unknown mentions and common env vars", () => {
|
|
40
|
+
expect(extractSkillMentions("echo $HOME and $nope", SKILLS)).toEqual([]);
|
|
41
|
+
});
|
|
42
|
+
it("preserves skills order and de-dupes repeats", () => {
|
|
43
|
+
const result = extractSkillMentions("$mv-workflow then $song-analyzer and $song-analyzer again", SKILLS);
|
|
44
|
+
expect(result.map((s) => s.name)).toEqual(["song-analyzer", "mv-workflow"]);
|
|
45
|
+
});
|
|
46
|
+
it("only matches a plain name when it is unique", () => {
|
|
47
|
+
const dup = [
|
|
48
|
+
...SKILLS,
|
|
49
|
+
{ name: "song-analyzer", description: "dup", path: "other/SKILL.md" },
|
|
50
|
+
];
|
|
51
|
+
expect(extractSkillMentions("$song-analyzer", dup)).toEqual([]);
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe("renderSkillInjection", () => {
|
|
55
|
+
it("wraps the body in the <skill> envelope", () => {
|
|
56
|
+
const out = renderSkillInjection(SKILLS[0], "BODY");
|
|
57
|
+
expect(out).toBe("<skill>\n<name>song-analyzer</name>\n<path>.agents/skills/song-analyzer/SKILL.md</path>\nBODY\n</skill>");
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe("skill injection inside a turn", () => {
|
|
61
|
+
beforeEach(() => {
|
|
62
|
+
vi.unstubAllGlobals();
|
|
63
|
+
});
|
|
64
|
+
it("injects the catalog into the request instructions (Layer 1)", async () => {
|
|
65
|
+
const fetchMock = vi.fn().mockResolvedValue(makeSseResponse(sseFlat([
|
|
66
|
+
evResponseCreated("r1"),
|
|
67
|
+
evAssistantMessage("ok"),
|
|
68
|
+
evCompleted("r1"),
|
|
69
|
+
])));
|
|
70
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
71
|
+
const codex = new CodexThread({ apiKey: "k", model: "m", skills: SKILLS });
|
|
72
|
+
await codex.submit({
|
|
73
|
+
type: "UserInput",
|
|
74
|
+
items: [{ type: "text", text: "hi" }],
|
|
75
|
+
});
|
|
76
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
77
|
+
const init = fetchMock.mock.calls[0][1];
|
|
78
|
+
const body = JSON.parse(init.body);
|
|
79
|
+
// Catalog rides as a discrete input message, NOT in the instructions field.
|
|
80
|
+
expect(body.instructions ?? "").not.toContain("## Skills");
|
|
81
|
+
expect(JSON.stringify(body.input)).toContain("## Skills");
|
|
82
|
+
expect(JSON.stringify(body.input)).toContain("- song-analyzer:");
|
|
83
|
+
});
|
|
84
|
+
it("injects the full skill body on $mention, ahead of history (Layer 2)", async () => {
|
|
85
|
+
const fetchMock = vi.fn().mockResolvedValue(makeSseResponse(sseFlat([
|
|
86
|
+
evResponseCreated("r1"),
|
|
87
|
+
evAssistantMessage("ok"),
|
|
88
|
+
evCompleted("r1"),
|
|
89
|
+
])));
|
|
90
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
91
|
+
const loaded = [];
|
|
92
|
+
const codex = new CodexThread({
|
|
93
|
+
apiKey: "k",
|
|
94
|
+
model: "m",
|
|
95
|
+
skills: SKILLS,
|
|
96
|
+
loadSkillContent: async (s) => {
|
|
97
|
+
loaded.push(s.name);
|
|
98
|
+
return `BODY:${s.name}`;
|
|
99
|
+
},
|
|
100
|
+
});
|
|
101
|
+
await codex.submit({
|
|
102
|
+
type: "UserInput",
|
|
103
|
+
items: [{ type: "text", text: "use $song-analyzer please" }],
|
|
104
|
+
});
|
|
105
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
106
|
+
// Only the mentioned skill's body is loaded.
|
|
107
|
+
expect(loaded).toEqual(["song-analyzer"]);
|
|
108
|
+
const init = fetchMock.mock.calls[0][1];
|
|
109
|
+
const body = JSON.parse(init.body);
|
|
110
|
+
// The skill body rides in input as a turn-scoped message (after the catalog).
|
|
111
|
+
const inputStr = JSON.stringify(body.input);
|
|
112
|
+
expect(inputStr).toContain("<skill>");
|
|
113
|
+
expect(inputStr).toContain("BODY:song-analyzer");
|
|
114
|
+
// The real user message stays last (context messages are prepended).
|
|
115
|
+
expect(JSON.stringify(body.input[body.input.length - 1])).toContain("use $song-analyzer please");
|
|
116
|
+
});
|
|
117
|
+
it("does not load any skill body without a mention", async () => {
|
|
118
|
+
const fetchMock = vi.fn().mockResolvedValue(makeSseResponse(sseFlat([
|
|
119
|
+
evResponseCreated("r1"),
|
|
120
|
+
evAssistantMessage("ok"),
|
|
121
|
+
evCompleted("r1"),
|
|
122
|
+
])));
|
|
123
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
124
|
+
const loaded = [];
|
|
125
|
+
const codex = new CodexThread({
|
|
126
|
+
apiKey: "k",
|
|
127
|
+
model: "m",
|
|
128
|
+
skills: SKILLS,
|
|
129
|
+
loadSkillContent: async (s) => {
|
|
130
|
+
loaded.push(s.name);
|
|
131
|
+
return "BODY";
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
await codex.submit({
|
|
135
|
+
type: "UserInput",
|
|
136
|
+
items: [{ type: "text", text: "just chatting" }],
|
|
137
|
+
});
|
|
138
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
139
|
+
expect(loaded).toEqual([]);
|
|
140
|
+
});
|
|
141
|
+
});
|
|
142
|
+
describe("catalog budget (mirrors render.rs)", () => {
|
|
143
|
+
const many = Array.from({ length: 5 }, (_, i) => ({
|
|
144
|
+
name: `skill-${i}`,
|
|
145
|
+
description: "A fairly long description that will need trimming when the budget is tight.",
|
|
146
|
+
path: `.agents/skills/skill-${i}/SKILL.md`,
|
|
147
|
+
}));
|
|
148
|
+
it("defaultSkillMetadataBudget: 2% tokens with a context window, else 8000 chars", () => {
|
|
149
|
+
expect(defaultSkillMetadataBudget(/*contextWindow*/ 128_000)).toEqual({
|
|
150
|
+
kind: "tokens",
|
|
151
|
+
limit: 2_560,
|
|
152
|
+
});
|
|
153
|
+
expect(defaultSkillMetadataBudget()).toEqual({
|
|
154
|
+
kind: "characters",
|
|
155
|
+
limit: 8_000,
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
it("keeps full descriptions under a generous budget", () => {
|
|
159
|
+
const out = renderSkillsCatalog(many, {
|
|
160
|
+
kind: "characters",
|
|
161
|
+
limit: 100_000,
|
|
162
|
+
});
|
|
163
|
+
expect(out).toContain("A fairly long description that will need trimming when the budget is tight.");
|
|
164
|
+
for (let i = 0; i < 5; i += 1) {
|
|
165
|
+
expect(out).toContain(`skill-${i}`);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
it("trims descriptions but keeps every skill when the budget is tight", () => {
|
|
169
|
+
const out = renderSkillsCatalog(many, { kind: "characters", limit: 350 });
|
|
170
|
+
for (let i = 0; i < 5; i += 1) {
|
|
171
|
+
expect(out).toContain(`skill-${i}`);
|
|
172
|
+
}
|
|
173
|
+
// The full description no longer fits verbatim.
|
|
174
|
+
expect(out).not.toContain("A fairly long description that will need trimming when the budget is tight.");
|
|
175
|
+
});
|
|
176
|
+
it("appends truncation warning when descriptions are shortened (mirrors render.rs)", () => {
|
|
177
|
+
const out = renderSkillsCatalog(many, { kind: "characters", limit: 350 });
|
|
178
|
+
// At least one description must be shortened → truncation warning appears
|
|
179
|
+
expect(out).toContain("Skill descriptions were shortened to fit the skills context budget.");
|
|
180
|
+
});
|
|
181
|
+
it("appends omission warning when skills are dropped (mirrors render.rs)", () => {
|
|
182
|
+
const out = renderSkillsCatalog(many, { kind: "characters", limit: 80 });
|
|
183
|
+
const shown = many.filter((skill) => out.includes(skill.name)).length;
|
|
184
|
+
expect(shown).toBeGreaterThan(0);
|
|
185
|
+
expect(shown).toBeLessThan(5);
|
|
186
|
+
// Omission warning must appear
|
|
187
|
+
expect(out).toContain("not included in the model-visible skills list.");
|
|
188
|
+
});
|
|
189
|
+
it("no warning when all skills and descriptions fit", () => {
|
|
190
|
+
const out = renderSkillsCatalog(many, { kind: "characters", limit: 100_000 });
|
|
191
|
+
expect(out).not.toContain("shortened to fit");
|
|
192
|
+
expect(out).not.toContain("not included in the model-visible skills list.");
|
|
193
|
+
});
|
|
194
|
+
});
|
|
195
|
+
describe("AGENTS.md injection (mirrors AgentsMdManager)", () => {
|
|
196
|
+
/**
|
|
197
|
+
* Mirrors codex-rs AgentsMdManager / user_instructions fragment behaviour.
|
|
198
|
+
* Architecture: agentsMd rides as a discrete user_instructions `input`
|
|
199
|
+
* message (format: "# AGENTS.md instructions\n\n<INSTRUCTIONS>…</INSTRUCTIONS>"),
|
|
200
|
+
* NOT merged into the `instructions` field — this keeps developer instructions
|
|
201
|
+
* and project docs as separate model-visible boundaries (codex-rs contextItems).
|
|
202
|
+
* When agentsMd is absent, no AGENTS.md message is injected.
|
|
203
|
+
*/
|
|
204
|
+
beforeEach(() => {
|
|
205
|
+
vi.unstubAllGlobals();
|
|
206
|
+
});
|
|
207
|
+
it("rides agentsMd as a discrete user_instructions input message", async () => {
|
|
208
|
+
const fetchMock = vi.fn().mockResolvedValue(makeSseResponse(sseFlat([
|
|
209
|
+
evResponseCreated("r1"),
|
|
210
|
+
evAssistantMessage("ok"),
|
|
211
|
+
evCompleted("r1"),
|
|
212
|
+
])));
|
|
213
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
214
|
+
const codex = new CodexThread({
|
|
215
|
+
apiKey: "k",
|
|
216
|
+
model: "m",
|
|
217
|
+
instructions: "DEV_INSTRUCTIONS",
|
|
218
|
+
agentsMd: "PROJECT_DOC_BODY",
|
|
219
|
+
});
|
|
220
|
+
await codex.submit({
|
|
221
|
+
type: "UserInput",
|
|
222
|
+
items: [{ type: "text", text: "hi" }],
|
|
223
|
+
});
|
|
224
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
225
|
+
const init = fetchMock.mock.calls[0][1];
|
|
226
|
+
const body = JSON.parse(init.body);
|
|
227
|
+
// Developer instructions stay in the instructions field (base + developer);
|
|
228
|
+
// AGENTS.md rides as a discrete user_instructions input message.
|
|
229
|
+
expect(body.instructions ?? "").toContain("DEV_INSTRUCTIONS");
|
|
230
|
+
const inputStr = JSON.stringify(body.input);
|
|
231
|
+
expect(inputStr).toContain("# AGENTS.md instructions");
|
|
232
|
+
expect(inputStr).toContain("PROJECT_DOC_BODY");
|
|
233
|
+
expect(body.instructions ?? "").not.toContain("PROJECT_DOC_BODY");
|
|
234
|
+
});
|
|
235
|
+
it("rides agentsMd in an input message even when base is empty", async () => {
|
|
236
|
+
// base "" → empty instructions; agentsMd still rides as an input message
|
|
237
|
+
const fetchMock = vi.fn().mockResolvedValue(makeSseResponse(sseFlat([
|
|
238
|
+
evResponseCreated("r1"),
|
|
239
|
+
evAssistantMessage("ok"),
|
|
240
|
+
evCompleted("r1"),
|
|
241
|
+
])));
|
|
242
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
243
|
+
const codex = new CodexThread({
|
|
244
|
+
apiKey: "k",
|
|
245
|
+
model: "m",
|
|
246
|
+
baseInstructions: "", // suppress default so only agentsMd appears
|
|
247
|
+
agentsMd: "ONLY_PROJECT_DOC",
|
|
248
|
+
});
|
|
249
|
+
await codex.submit({
|
|
250
|
+
type: "UserInput",
|
|
251
|
+
items: [{ type: "text", text: "hi" }],
|
|
252
|
+
});
|
|
253
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
254
|
+
const init = fetchMock.mock.calls[0][1];
|
|
255
|
+
const body = JSON.parse(init.body);
|
|
256
|
+
expect(JSON.stringify(body.input)).toContain("ONLY_PROJECT_DOC");
|
|
257
|
+
expect(body.instructions ?? "").not.toContain("ONLY_PROJECT_DOC");
|
|
258
|
+
});
|
|
259
|
+
it("emits no AGENTS.md input message when none is provided", async () => {
|
|
260
|
+
// instructions + no doc → developer text in instructions, no AGENTS.md msg
|
|
261
|
+
const fetchMock = vi.fn().mockResolvedValue(makeSseResponse(sseFlat([
|
|
262
|
+
evResponseCreated("r1"),
|
|
263
|
+
evAssistantMessage("ok"),
|
|
264
|
+
evCompleted("r1"),
|
|
265
|
+
])));
|
|
266
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
267
|
+
const codex = new CodexThread({
|
|
268
|
+
apiKey: "k",
|
|
269
|
+
model: "m",
|
|
270
|
+
instructions: "DEV_INSTRUCTIONS",
|
|
271
|
+
// no agentsMd
|
|
272
|
+
});
|
|
273
|
+
await codex.submit({
|
|
274
|
+
type: "UserInput",
|
|
275
|
+
items: [{ type: "text", text: "hi" }],
|
|
276
|
+
});
|
|
277
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
278
|
+
const init = fetchMock.mock.calls[0][1];
|
|
279
|
+
const body = JSON.parse(init.body);
|
|
280
|
+
// Developer instructions ride in the instructions field; no AGENTS.md message.
|
|
281
|
+
expect(body.instructions ?? "").toContain("DEV_INSTRUCTIONS");
|
|
282
|
+
expect(JSON.stringify(body.input)).not.toContain("# AGENTS.md instructions");
|
|
283
|
+
});
|
|
284
|
+
it("orders context items: agentsMd → catalog → $mention body → user message", async () => {
|
|
285
|
+
// Verifies the full input ordering mirrors codex-rs TurnContext:
|
|
286
|
+
// contextItems (agentsMd, catalog) → skillInjectionItems ($mention) → history
|
|
287
|
+
const fetchMock = vi.fn().mockResolvedValue(makeSseResponse(sseFlat([
|
|
288
|
+
evResponseCreated("r1"),
|
|
289
|
+
evAssistantMessage("ok"),
|
|
290
|
+
evCompleted("r1"),
|
|
291
|
+
])));
|
|
292
|
+
vi.stubGlobal("fetch", fetchMock);
|
|
293
|
+
const codex = new CodexThread({
|
|
294
|
+
apiKey: "k",
|
|
295
|
+
model: "m",
|
|
296
|
+
baseInstructions: "",
|
|
297
|
+
agentsMd: "PROJECT_DOC",
|
|
298
|
+
skills: SKILLS,
|
|
299
|
+
loadSkillContent: async () => "SKILL_BODY",
|
|
300
|
+
});
|
|
301
|
+
await codex.submit({
|
|
302
|
+
type: "UserInput",
|
|
303
|
+
items: [{ type: "text", text: "use $song-analyzer please" }],
|
|
304
|
+
});
|
|
305
|
+
await waitForEvent(codex, (m) => m.type === "TurnComplete");
|
|
306
|
+
const init = fetchMock.mock.calls[0][1];
|
|
307
|
+
const body = JSON.parse(init.body);
|
|
308
|
+
const inputStr = JSON.stringify(body.input);
|
|
309
|
+
// All four layers must be present
|
|
310
|
+
expect(inputStr).toContain("# AGENTS.md instructions"); // agentsMd
|
|
311
|
+
expect(inputStr).toContain("## Skills"); // catalog
|
|
312
|
+
expect(inputStr).toContain("<skill>"); // $mention body
|
|
313
|
+
expect(inputStr).toContain("use $song-analyzer please"); // user message
|
|
314
|
+
// Ordering: agentsMd before catalog before $mention before user message
|
|
315
|
+
const posAgentsMd = inputStr.indexOf("# AGENTS.md instructions");
|
|
316
|
+
const posCatalog = inputStr.indexOf("## Skills");
|
|
317
|
+
const posSkill = inputStr.indexOf("<skill>");
|
|
318
|
+
const posUser = inputStr.indexOf("use $song-analyzer please");
|
|
319
|
+
expect(posAgentsMd).toBeLessThan(posCatalog);
|
|
320
|
+
expect(posCatalog).toBeLessThan(posSkill);
|
|
321
|
+
expect(posSkill).toBeLessThan(posUser);
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
//# sourceMappingURL=skills.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.test.js","sourceRoot":"","sources":["../../../../core/tests/suite/skills.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAE9D,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACxD,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GAEpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EACjB,eAAe,EACf,OAAO,EACP,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,GAAoB;IAC9B;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,iBAAiB;QAC9B,IAAI,EAAE,uCAAuC;KAC9C;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,yBAAyB;QACtC,IAAI,EAAE,qCAAqC;KAC5C;CACF,CAAC;AAEF,QAAQ,CAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,GAAG,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CACnB,gFAAgF,CACjF,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,uBAAuB,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,MAAM,GAAG,oBAAoB,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;QAC7E,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,oBAAoB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,MAAM,GAAG,oBAAoB,CACjC,2DAA2D,EAC3D,MAAM,CACP,CAAC;QACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,GAAG,GAAoB;YAC3B,GAAG,MAAM;YACT,EAAE,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE;SACtE,CAAC;QACF,MAAM,CAAC,oBAAoB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,sBAAsB,EAAE,GAAG,EAAE;IACpC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAE,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CACd,yGAAyG,CAC1G,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+BAA+B,EAAE,GAAG,EAAE;IAC7C,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACzC,eAAe,CACb,OAAO,CAAC;YACN,iBAAiB,CAAC,IAAI,CAAC;YACvB,kBAAkB,CAAC,IAAI,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC;SAClB,CAAC,CACH,CACF,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAC3E,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACtC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAgB,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAG1C,CAAC;QACF,4EAA4E;QAC5E,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC3D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QAC1D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACnE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qEAAqE,EAAE,KAAK,IAAI,EAAE;QACnF,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACzC,eAAe,CACb,OAAO,CAAC;YACN,iBAAiB,CAAC,IAAI,CAAC;YACvB,kBAAkB,CAAC,IAAI,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC;SAClB,CAAC,CACH,CACF,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;YAC5B,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,MAAM;YACd,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpB,OAAO,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC;YAC1B,CAAC;SACF,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;SAC7D,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAE5D,6CAA6C;QAC7C,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;QAE1C,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAgB,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAAyB,CAAC;QACrE,8EAA8E;QAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QACtC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QACjD,qEAAqE;QACrE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CACjE,2BAA2B,CAC5B,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gDAAgD,EAAE,KAAK,IAAI,EAAE;QAC9D,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACzC,eAAe,CACb,OAAO,CAAC;YACN,iBAAiB,CAAC,IAAI,CAAC;YACvB,kBAAkB,CAAC,IAAI,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC;SAClB,CAAC,CACH,CACF,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;YAC5B,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,MAAM,EAAE,MAAM;YACd,gBAAgB,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC5B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACpB,OAAO,MAAM,CAAC;YAChB,CAAC;SACF,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;SACjD,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAE5D,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,oCAAoC,EAAE,GAAG,EAAE;IAClD,MAAM,IAAI,GAAoB,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACjE,IAAI,EAAE,SAAS,CAAC,EAAE;QAClB,WAAW,EACT,6EAA6E;QAC/E,IAAI,EAAE,wBAAwB,CAAC,WAAW;KAC3C,CAAC,CAAC,CAAC;IAEJ,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YACpE,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,MAAM,CAAC,0BAA0B,EAAE,CAAC,CAAC,OAAO,CAAC;YAC3C,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE;YACpC,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CACnB,6EAA6E,CAC9E,CAAC;QACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QACD,gDAAgD;QAChD,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CACvB,6EAA6E,CAC9E,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1E,0EAA0E;QAC1E,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,qEAAqE,CAAC,CAAC;IAC/F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACtE,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACjC,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC9B,+BAA+B;QAC/B,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAC9E,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC9C,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,gDAAgD,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,+CAA+C,EAAE,GAAG,EAAE;IAC7D;;;;;;;OAOG;IACH,UAAU,CAAC,GAAG,EAAE;QACd,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACzC,eAAe,CACb,OAAO,CAAC;YACN,iBAAiB,CAAC,IAAI,CAAC;YACvB,kBAAkB,CAAC,IAAI,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC;SAClB,CAAC,CACH,CACF,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;YAC5B,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,YAAY,EAAE,kBAAkB;YAChC,QAAQ,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACtC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAgB,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAG1C,CAAC;QACF,4EAA4E;QAC5E,iEAAiE;QACjE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QACvD,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,KAAK,IAAI,EAAE;QAC1E,yEAAyE;QACzE,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACzC,eAAe,CACb,OAAO,CAAC;YACN,iBAAiB,CAAC,IAAI,CAAC;YACvB,kBAAkB,CAAC,IAAI,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC;SAClB,CAAC,CACH,CACF,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;YAC5B,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,gBAAgB,EAAE,EAAE,EAAI,4CAA4C;YACpE,QAAQ,EAAE,kBAAkB;SAC7B,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACtC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAgB,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAG1C,CAAC;QACF,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QACjE,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,KAAK,IAAI,EAAE;QACtE,2EAA2E;QAC3E,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACzC,eAAe,CACb,OAAO,CAAC;YACN,iBAAiB,CAAC,IAAI,CAAC;YACvB,kBAAkB,CAAC,IAAI,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC;SAClB,CAAC,CACH,CACF,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;YAC5B,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,YAAY,EAAE,kBAAkB;YAChC,cAAc;SACf,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;SACtC,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAgB,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAG1C,CAAC;QACF,+EAA+E;QAC/E,MAAM,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC;QAC9D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yEAAyE,EAAE,KAAK,IAAI,EAAE;QACvF,iEAAiE;QACjE,gFAAgF;QAChF,MAAM,SAAS,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CACzC,eAAe,CACb,OAAO,CAAC;YACN,iBAAiB,CAAC,IAAI,CAAC;YACvB,kBAAkB,CAAC,IAAI,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC;SAClB,CAAC,CACH,CACF,CAAC;QACF,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAElC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAC;YAC5B,MAAM,EAAE,GAAG;YACX,KAAK,EAAE,GAAG;YACV,gBAAgB,EAAE,EAAE;YACpB,QAAQ,EAAE,aAAa;YACvB,MAAM,EAAE,MAAM;YACd,gBAAgB,EAAE,KAAK,IAAI,EAAE,CAAC,YAAY;SAC3C,CAAC,CAAC;QACH,MAAM,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,WAAW;YACjB,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,2BAA2B,EAAE,CAAC;SAC7D,CAAC,CAAC;QACH,MAAM,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,CAAC,CAAC,CAAgB,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAc,CAAyB,CAAC;QACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5C,kCAAkC;QAClC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC,CAAC,WAAW;QACnE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAe,UAAU;QACjE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAkB,gBAAgB;QACxE,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,2BAA2B,CAAC,CAAC,CAAC,eAAe;QAExE,wEAAwE;QACxE,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACjE,MAAM,UAAU,GAAI,QAAQ,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAM,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAChD,MAAM,OAAO,GAAO,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;QAClE,MAAM,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC7C,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC1C,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type { UserInput } from "./user_input.js";
|
|
2
2
|
export type { RequestUserInputQuestionOption, RequestUserInputQuestion, RequestUserInputArgs, RequestUserInputAnswer, RequestUserInputResponse, RequestUserInputEvent, } from "./request_user_input.js";
|
|
3
3
|
export type { StepStatus, PlanItemArg, UpdatePlanArgs } from "./plan_tool.js";
|
|
4
|
+
export type { ContextCompactedEvent, WarningEvent } from "./protocol.js";
|
|
4
5
|
export type { ThreadGoalStatus, ThreadGoal, TurnStartedEvent, TurnCompleteEvent, AgentMessageEvent, AgentMessageContentDeltaEvent, ThreadGoalUpdatedEvent, ErrorEvent, EventMsg, Event, Op, } from "./protocol.js";
|
|
5
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../protocol/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC9E,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAC7B,sBAAsB,EACtB,UAAU,EACV,QAAQ,EACR,KAAK,EACL,EAAE,GACH,MAAM,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../protocol/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,YAAY,EACV,8BAA8B,EAC9B,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC9E,YAAY,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AACzE,YAAY,EACV,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,6BAA6B,EAC7B,sBAAsB,EACtB,UAAU,EACV,QAAQ,EACR,KAAK,EACL,EAAE,GACH,MAAM,eAAe,CAAC"}
|
|
@@ -38,6 +38,18 @@ export interface ThreadGoalUpdatedEvent {
|
|
|
38
38
|
}
|
|
39
39
|
export interface ErrorEvent {
|
|
40
40
|
message: string;
|
|
41
|
+
/**
|
|
42
|
+
* Browser-specific extension — no equivalent in codex-rs/protocol ErrorEvent.
|
|
43
|
+
* Lets hosts correlate an error with the turn that produced it (e.g. to
|
|
44
|
+
* suppress stale-turn errors after an Interrupt).
|
|
45
|
+
*/
|
|
46
|
+
turn_id?: string | undefined;
|
|
47
|
+
}
|
|
48
|
+
/** mirrors codex-rs/protocol/src/protocol.rs ContextCompactedEvent (unit struct) */
|
|
49
|
+
export type ContextCompactedEvent = Record<never, never>;
|
|
50
|
+
/** mirrors WarningEvent */
|
|
51
|
+
export interface WarningEvent {
|
|
52
|
+
message: string;
|
|
41
53
|
}
|
|
42
54
|
export type EventMsg = {
|
|
43
55
|
type: "TurnStarted";
|
|
@@ -60,6 +72,16 @@ export type EventMsg = {
|
|
|
60
72
|
} | {
|
|
61
73
|
type: "PlanUpdate";
|
|
62
74
|
event: UpdatePlanArgs;
|
|
75
|
+
}
|
|
76
|
+
/** mirrors EventMsg::ContextCompacted — emitted when inline compaction runs */
|
|
77
|
+
| {
|
|
78
|
+
type: "ContextCompacted";
|
|
79
|
+
event: ContextCompactedEvent;
|
|
80
|
+
}
|
|
81
|
+
/** mirrors EventMsg::Warning — post-compaction advisory */
|
|
82
|
+
| {
|
|
83
|
+
type: "Warning";
|
|
84
|
+
event: WarningEvent;
|
|
63
85
|
} | {
|
|
64
86
|
type: "Error";
|
|
65
87
|
event: ErrorEvent;
|
|
@@ -73,6 +95,16 @@ export interface Event {
|
|
|
73
95
|
export type Op = {
|
|
74
96
|
type: "UserInput";
|
|
75
97
|
items: UserInput[];
|
|
98
|
+
/**
|
|
99
|
+
* Per-turn instructions override. Subset of ThreadSettingsOverrides in
|
|
100
|
+
* codex-rs. Falls back to the thread's instructions when omitted.
|
|
101
|
+
*/
|
|
102
|
+
instructions?: string | undefined;
|
|
103
|
+
/**
|
|
104
|
+
* Per-turn model override. Subset of ThreadSettingsOverrides in codex-rs.
|
|
105
|
+
* Falls back to the thread's model when omitted.
|
|
106
|
+
*/
|
|
107
|
+
model?: string | undefined;
|
|
76
108
|
} | {
|
|
77
109
|
type: "UserInputAnswer";
|
|
78
110
|
/** RequestUserInputEvent.turn_id — identifies which turn to unblock */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../protocol/src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,KAAK,EACV,qBAAqB,EACrB,wBAAwB,EACzB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAIrD,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,cAAc,GACd,eAAe,GACf,UAAU,CAAC;AAEf,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,gBAAgB,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAID,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC;AAED,kDAAkD;AAClD,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,mEAAmE;AACnE,MAAM,WAAW,6BAA6B;IAC5C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,sBAAsB;IACrC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7B,IAAI,EAAE,UAAU,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../../protocol/src/protocol.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ export type { ConversationItem, RolloutItem, CreateThreadParams, AppendThreadIte
|
|
|
2
2
|
export type { ThreadStore } from "./store.js";
|
|
3
3
|
export type { IoBackend } from "./io_backend.js";
|
|
4
4
|
export { InMemoryIoBackend } from "./io_backend.js";
|
|
5
|
+
export { IndexedDBIoBackend } from "./indexeddb.js";
|
|
5
6
|
export { InMemoryThreadStore } from "./in_memory.js";
|
|
6
7
|
export { LocalThreadStore } from "./local_thread_store.js";
|
|
7
8
|
export { LiveThread } from "./live_thread.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../thread-store/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,EACd,mBAAmB,EACnB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../thread-store/src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,gBAAgB,EAChB,0BAA0B,EAC1B,cAAc,EACd,mBAAmB,EACnB,YAAY,GACb,MAAM,YAAY,CAAC;AAEpB,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export { InMemoryIoBackend } from "./io_backend.js";
|
|
2
|
+
export { IndexedDBIoBackend } from "./indexeddb.js";
|
|
2
3
|
export { InMemoryThreadStore } from "./in_memory.js";
|
|
3
4
|
export { LocalThreadStore } from "./local_thread_store.js";
|
|
4
5
|
export { LiveThread } from "./live_thread.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../thread-store/src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../thread-store/src/index.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|