kimaki 1.3.0 → 1.5.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/assets/fonts/Geist-Bold.ttf +0 -0
- package/assets/fonts/Geist-Regular.ttf +0 -0
- package/assets/fonts/GeistMono-Regular.ttf +0 -0
- package/assets/fonts/OFL.txt +92 -0
- package/dist/agent-ui.e2e.test.js +27 -13
- package/dist/agent-ui.e2e.test.js.map +1 -1
- package/dist/agent-ui.js +2 -1
- package/dist/agent-ui.js.map +1 -1
- package/dist/analytics.e2e.test.js +1 -1
- package/dist/analytics.e2e.test.js.map +1 -1
- package/dist/autostart.d.ts +4 -0
- package/dist/autostart.js +55 -10
- package/dist/autostart.js.map +1 -1
- package/dist/bot.d.ts +13 -6
- package/dist/bot.js +17 -15
- package/dist/bot.js.map +1 -1
- package/dist/btw.e2e.test.js +3 -3
- package/dist/builtin-skills.d.ts +3 -0
- package/dist/builtin-skills.js +29 -0
- package/dist/builtin-skills.js.map +1 -1
- package/dist/builtin-skills.test.js +72 -1
- package/dist/builtin-skills.test.js.map +1 -1
- package/dist/catalog-refresh.e2e.test.js +2 -2
- package/dist/cli/bot.d.ts +1 -1
- package/dist/cli/bot.js +33 -18
- package/dist/cli/bot.js.map +1 -1
- package/dist/cli/discord.js +32 -6
- package/dist/cli/discord.js.map +1 -1
- package/dist/cli/schedule.js +23 -9
- package/dist/cli/schedule.js.map +1 -1
- package/dist/cli/session.js +37 -12
- package/dist/cli/session.js.map +1 -1
- package/dist/cli/shared.d.ts +5 -3
- package/dist/cli/shared.js +45 -10
- package/dist/cli/shared.js.map +1 -1
- package/dist/cli-discord.e2e.test.js +13 -8
- package/dist/cli-discord.e2e.test.js.map +1 -1
- package/dist/cli-lock.e2e.test.js +87 -20
- package/dist/cli-lock.e2e.test.js.map +1 -1
- package/dist/cli-read.e2e.test.js +18 -9
- package/dist/cli-read.e2e.test.js.map +1 -1
- package/dist/cli-sessions.e2e.test.js +4 -3
- package/dist/cli-sessions.e2e.test.js.map +1 -1
- package/dist/cli.js +2 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/preference-commands.d.ts +4 -0
- package/dist/commands/preference-commands.js +38 -4
- package/dist/commands/preference-commands.js.map +1 -1
- package/dist/commands/session-commands.js +11 -8
- package/dist/commands/session-commands.js.map +1 -1
- package/dist/commands/thread-commands.js +94 -24
- package/dist/commands/thread-commands.js.map +1 -1
- package/dist/commands/worktree-commands.d.ts +5 -6
- package/dist/commands/worktree-commands.js +8 -7
- package/dist/commands/worktree-commands.js.map +1 -1
- package/dist/commands.e2e.test.js +25 -21
- package/dist/commands.e2e.test.js.map +1 -1
- package/dist/coordinator-agents.e2e.test.d.ts +1 -0
- package/dist/coordinator-agents.e2e.test.js +113 -0
- package/dist/coordinator-agents.e2e.test.js.map +1 -0
- package/dist/coordinator-idle.e2e.test.d.ts +1 -0
- package/dist/coordinator-idle.e2e.test.js +100 -0
- package/dist/coordinator-idle.e2e.test.js.map +1 -0
- package/dist/coordinator-queue.e2e.test.d.ts +1 -0
- package/dist/coordinator-queue.e2e.test.js +244 -0
- package/dist/coordinator-queue.e2e.test.js.map +1 -0
- package/dist/coordinator-warmup.e2e.test.d.ts +1 -0
- package/dist/coordinator-warmup.e2e.test.js +131 -0
- package/dist/coordinator-warmup.e2e.test.js.map +1 -0
- package/dist/coordinator.d.ts +6 -0
- package/dist/coordinator.e2e.test.d.ts +1 -0
- package/dist/coordinator.e2e.test.js +505 -0
- package/dist/coordinator.e2e.test.js.map +1 -0
- package/dist/coordinator.js +164 -0
- package/dist/coordinator.js.map +1 -0
- package/dist/db.d.ts +78 -3
- package/dist/db.test.js +1 -0
- package/dist/db.test.js.map +1 -1
- package/dist/diagram.d.ts +11 -0
- package/dist/diagram.js +232 -0
- package/dist/diagram.js.map +1 -0
- package/dist/diagram.test.d.ts +1 -0
- package/dist/diagram.test.js +52 -0
- package/dist/diagram.test.js.map +1 -0
- package/dist/duration.js +13 -5
- package/dist/duration.js.map +1 -1
- package/dist/effects.d.ts +6 -1
- package/dist/effects.js +97 -26
- package/dist/effects.js.map +1 -1
- package/dist/event-loop.d.ts +2 -3
- package/dist/event-loop.js +74 -44
- package/dist/event-loop.js.map +1 -1
- package/dist/format-parts.d.ts +21 -4
- package/dist/format-parts.js +40 -23
- package/dist/format-parts.js.map +1 -1
- package/dist/gateway-replay.e2e.test.js +4 -4
- package/dist/harness.e2e.test.js +2 -2
- package/dist/harness.e2e.test.js.map +1 -1
- package/dist/hello-thread.e2e.test.js +56 -5
- package/dist/hello-thread.e2e.test.js.map +1 -1
- package/dist/ingress.js +47 -12
- package/dist/ingress.js.map +1 -1
- package/dist/interaction-context.d.ts +4 -4
- package/dist/interaction-context.js +9 -7
- package/dist/interaction-context.js.map +1 -1
- package/dist/interrupt.e2e.test.js +8 -5
- package/dist/interrupt.e2e.test.js.map +1 -1
- package/dist/legacy.e2e.test.js +1 -1
- package/dist/lock-routes.d.ts +83 -31
- package/dist/lock-routes.js +68 -8
- package/dist/lock-routes.js.map +1 -1
- package/dist/lock-server.d.ts +3 -2
- package/dist/lock-server.js +23 -7
- package/dist/lock-server.js.map +1 -1
- package/dist/main.d.ts +6 -3
- package/dist/main.js +14 -4
- package/dist/main.js.map +1 -1
- package/dist/mainmast-idle.e2e.test.d.ts +1 -0
- package/dist/mainmast-idle.e2e.test.js +99 -0
- package/dist/mainmast-idle.e2e.test.js.map +1 -0
- package/dist/mainmast-queue.e2e.test.d.ts +1 -0
- package/dist/mainmast-queue.e2e.test.js +244 -0
- package/dist/mainmast-queue.e2e.test.js.map +1 -0
- package/dist/mainmast-warmup.e2e.test.d.ts +1 -0
- package/dist/mainmast-warmup.e2e.test.js +130 -0
- package/dist/mainmast-warmup.e2e.test.js.map +1 -0
- package/dist/mainmast.d.ts +6 -0
- package/dist/mainmast.e2e.test.d.ts +1 -0
- package/dist/mainmast.e2e.test.js +428 -0
- package/dist/mainmast.e2e.test.js.map +1 -0
- package/dist/mainmast.js +156 -0
- package/dist/mainmast.js.map +1 -0
- package/dist/markdown/markdown.test.js +14 -4
- package/dist/markdown/markdown.test.js.map +1 -1
- package/dist/markdown/render-markdown.js +9 -6
- package/dist/markdown/render-markdown.js.map +1 -1
- package/dist/onboarding-cli.e2e.test.js +7 -6
- package/dist/onboarding-cli.e2e.test.js.map +1 -1
- package/dist/onboarding.d.ts +3 -10
- package/dist/onboarding.e2e.test.js +8 -10
- package/dist/onboarding.e2e.test.js.map +1 -1
- package/dist/onboarding.js +14 -24
- package/dist/onboarding.js.map +1 -1
- package/dist/permissions.e2e.test.js +3 -3
- package/dist/plugin/coordinator.d.ts +4 -0
- package/dist/plugin/coordinator.js +389 -0
- package/dist/plugin/coordinator.js.map +1 -0
- package/dist/plugin/index.js +93 -61
- package/dist/plugin/index.js.map +1 -1
- package/dist/plugin/mainmast.d.ts +4 -0
- package/dist/plugin/mainmast.js +379 -0
- package/dist/plugin/mainmast.js.map +1 -0
- package/dist/plugin.e2e.test.js +1 -1
- package/dist/preference-commands.e2e.test.js +103 -24
- package/dist/preference-commands.e2e.test.js.map +1 -1
- package/dist/project.d.ts +1 -1
- package/dist/prompt.d.ts +22 -9
- package/dist/prompt.js +64 -48
- package/dist/prompt.js.map +1 -1
- package/dist/questions.e2e.test.js +13 -13
- package/dist/queue-sources.e2e.test.d.ts +1 -0
- package/dist/queue-sources.e2e.test.js +168 -0
- package/dist/queue-sources.e2e.test.js.map +1 -0
- package/dist/queue.d.ts +9 -1
- package/dist/queue.e2e.test.js +48 -30
- package/dist/queue.e2e.test.js.map +1 -1
- package/dist/queue.js +97 -24
- package/dist/queue.js.map +1 -1
- package/dist/queue.test.d.ts +1 -0
- package/dist/queue.test.js +57 -0
- package/dist/queue.test.js.map +1 -0
- package/dist/remote-send.e2e.test.js +6 -6
- package/dist/remote-send.js +2 -1
- package/dist/remote-send.js.map +1 -1
- package/dist/renderer.e2e.test.js +7 -7
- package/dist/restart.e2e.test.js +2 -2
- package/dist/routines.e2e.test.js +2 -2
- package/dist/scheduler.d.ts +3 -3
- package/dist/scheduler.e2e.test.js +43 -20
- package/dist/scheduler.e2e.test.js.map +1 -1
- package/dist/scheduler.js +4 -2
- package/dist/scheduler.js.map +1 -1
- package/dist/schema-sql.d.ts +1 -1
- package/dist/schema-sql.js +1 -1
- package/dist/schema-sql.js.map +1 -1
- package/dist/schema.d.ts +152 -6
- package/dist/schema.js +12 -0
- package/dist/schema.js.map +1 -1
- package/dist/session-commands.e2e.test.js +36 -11
- package/dist/session-commands.e2e.test.js.map +1 -1
- package/dist/session-events.d.ts +18 -6
- package/dist/session-events.js +175 -27
- package/dist/session-events.js.map +1 -1
- package/dist/session-ops.e2e.test.js +63 -12
- package/dist/session-ops.e2e.test.js.map +1 -1
- package/dist/sessions.d.ts +44 -21
- package/dist/sessions.js +177 -65
- package/dist/sessions.js.map +1 -1
- package/dist/shell.e2e.test.js +4 -4
- package/dist/slash-commands.js +6 -4
- package/dist/slash-commands.js.map +1 -1
- package/dist/slash-commands.test.js +2 -0
- package/dist/slash-commands.test.js.map +1 -1
- package/dist/sleep.e2e.test.js +29 -14
- package/dist/sleep.e2e.test.js.map +1 -1
- package/dist/sleeps.d.ts +2 -1
- package/dist/sleeps.js +21 -3
- package/dist/sleeps.js.map +1 -1
- package/dist/store.d.ts +1 -0
- package/dist/store.js +3 -2
- package/dist/store.js.map +1 -1
- package/dist/system-prompt.d.ts +5 -15
- package/dist/system-prompt.js +180 -131
- package/dist/system-prompt.js.map +1 -1
- package/dist/test/generate-log-plugin/index.d.ts +3 -0
- package/dist/test/generate-log-plugin/index.js +15 -0
- package/dist/test/generate-log-plugin/index.js.map +1 -0
- package/dist/test/harness.d.ts +20 -2
- package/dist/test/harness.js +51 -11
- package/dist/test/harness.js.map +1 -1
- package/dist/test/replay.js +11 -8
- package/dist/test/replay.js.map +1 -1
- package/dist/thread-reducer.d.ts +29 -6
- package/dist/thread-reducer.fixtures.test.js +58 -51
- package/dist/thread-reducer.fixtures.test.js.map +1 -1
- package/dist/thread-reducer.js +109 -50
- package/dist/thread-reducer.js.map +1 -1
- package/dist/thread-reducer.test.js +190 -48
- package/dist/thread-reducer.test.js.map +1 -1
- package/dist/tunnel.d.ts +9 -0
- package/dist/tunnel.js +117 -28
- package/dist/tunnel.js.map +1 -1
- package/dist/tunnel.test.js +81 -5
- package/dist/tunnel.test.js.map +1 -1
- package/dist/voice-attachments.e2e.test.js +108 -18
- package/dist/voice-attachments.e2e.test.js.map +1 -1
- package/dist/voice-call.e2e.test.js +9 -9
- package/dist/voice-call.js +6 -6
- package/dist/voice-call.js.map +1 -1
- package/dist/voice-openai.e2e.test.js +59 -23
- package/dist/voice-openai.e2e.test.js.map +1 -1
- package/dist/voice.d.ts +1 -1
- package/dist/voice.js +72 -24
- package/dist/voice.js.map +1 -1
- package/dist/working-directory.e2e.test.js +11 -11
- package/dist/working-directory.e2e.test.js.map +1 -1
- package/package.json +11 -5
- package/skills/kimaki-tunnel/SKILL.md +3 -2
- package/src/agent-ui.e2e.test.ts +27 -13
- package/src/agent-ui.ts +2 -1
- package/src/analytics.e2e.test.ts +1 -1
- package/src/autostart.ts +55 -10
- package/src/bot.ts +36 -19
- package/src/btw.e2e.test.ts +3 -3
- package/src/builtin-skills.test.ts +73 -1
- package/src/builtin-skills.ts +33 -0
- package/src/catalog-refresh.e2e.test.ts +2 -2
- package/src/cli/bot.ts +30 -19
- package/src/cli/discord.ts +30 -6
- package/src/cli/schedule.ts +23 -9
- package/src/cli/session.ts +35 -12
- package/src/cli/shared.ts +43 -8
- package/src/cli-discord.e2e.test.ts +13 -8
- package/src/cli-lock.e2e.test.ts +88 -20
- package/src/cli-read.e2e.test.ts +17 -8
- package/src/cli-sessions.e2e.test.ts +4 -3
- package/src/cli.ts +2 -0
- package/src/commands/preference-commands.ts +38 -4
- package/src/commands/session-commands.ts +12 -7
- package/src/commands/thread-commands.ts +92 -24
- package/src/commands/worktree-commands.ts +10 -9
- package/src/commands.e2e.test.ts +25 -21
- package/src/coordinator-agents.e2e.test.ts +145 -0
- package/src/coordinator-idle.e2e.test.ts +122 -0
- package/src/coordinator-queue.e2e.test.ts +279 -0
- package/src/coordinator-warmup.e2e.test.ts +158 -0
- package/src/coordinator.e2e.test.ts +545 -0
- package/src/coordinator.ts +168 -0
- package/src/db.test.ts +1 -0
- package/src/diagram.test.ts +56 -0
- package/src/diagram.ts +243 -0
- package/src/duration.ts +13 -5
- package/src/effects.ts +99 -27
- package/src/event-loop.ts +71 -45
- package/src/format-parts.ts +53 -22
- package/src/gateway-replay.e2e.test.ts +4 -4
- package/src/harness.e2e.test.ts +2 -2
- package/src/hello-thread.e2e.test.ts +59 -5
- package/src/ingress.ts +44 -11
- package/src/interaction-context.ts +12 -11
- package/src/interrupt.e2e.test.ts +8 -5
- package/src/legacy.e2e.test.ts +1 -1
- package/src/lock-routes.ts +62 -8
- package/src/lock-server.ts +23 -7
- package/src/main.ts +26 -10
- package/src/markdown/markdown.test.ts +15 -4
- package/src/markdown/render-markdown.ts +9 -6
- package/src/onboarding-cli.e2e.test.ts +7 -6
- package/src/onboarding.e2e.test.ts +8 -10
- package/src/onboarding.ts +13 -29
- package/src/permissions.e2e.test.ts +3 -3
- package/src/plugin/coordinator.ts +401 -0
- package/src/plugin/index.ts +86 -59
- package/src/plugin.e2e.test.ts +1 -1
- package/src/preference-commands.e2e.test.ts +103 -23
- package/src/prompt.ts +87 -43
- package/src/questions.e2e.test.ts +13 -13
- package/src/queue-sources.e2e.test.ts +197 -0
- package/src/queue.e2e.test.ts +48 -30
- package/src/queue.test.ts +59 -0
- package/src/queue.ts +104 -24
- package/src/remote-send.e2e.test.ts +6 -6
- package/src/remote-send.ts +2 -1
- package/src/renderer.e2e.test.ts +7 -7
- package/src/restart.e2e.test.ts +2 -2
- package/src/routines.e2e.test.ts +2 -2
- package/src/scheduler.e2e.test.ts +45 -19
- package/src/scheduler.ts +4 -2
- package/src/schema-sql.ts +1 -1
- package/src/schema.ts +13 -0
- package/src/session-commands.e2e.test.ts +38 -11
- package/src/session-events.ts +168 -25
- package/src/session-ops.e2e.test.ts +64 -11
- package/src/sessions.ts +217 -67
- package/src/shell.e2e.test.ts +4 -4
- package/src/slash-commands.test.ts +2 -0
- package/src/slash-commands.ts +6 -4
- package/src/sleep.e2e.test.ts +30 -13
- package/src/sleeps.ts +20 -3
- package/src/store.ts +5 -2
- package/src/system-prompt.ts +190 -134
- package/src/test/generate-log-plugin/index.ts +16 -0
- package/src/test/harness.ts +77 -17
- package/src/test/replay.ts +12 -7
- package/src/thread-reducer.fixtures.test.ts +58 -51
- package/src/thread-reducer.test.ts +199 -49
- package/src/thread-reducer.ts +135 -66
- package/src/tunnel.test.ts +81 -5
- package/src/tunnel.ts +124 -25
- package/src/voice-attachments.e2e.test.ts +110 -18
- package/src/voice-call.e2e.test.ts +9 -9
- package/src/voice-call.ts +6 -6
- package/src/voice-openai.e2e.test.ts +64 -24
- package/src/voice.ts +93 -26
- package/src/working-directory.e2e.test.ts +11 -11
- package/src/message-tool.e2e.test.ts +0 -45
|
@@ -9,7 +9,8 @@ test('text-only turn: banner, text, typing, footer with context percent', () =>
|
|
|
9
9
|
expect(effects).toMatchInlineSnapshot(`
|
|
10
10
|
[
|
|
11
11
|
{
|
|
12
|
-
"
|
|
12
|
+
"echo": true,
|
|
13
|
+
"text": "-# » **user:** Do these steps with tools, one by one: 1) run \`ls cli/src | head -5\` with bash, 2) write a file tmp-events/hello.txt containing "hello", 3) edit that file to replace hello with "hello world", 4) glob for **/*.txt under tmp-events, 5) read the file. Then reply with one short line.",
|
|
13
14
|
"type": "send",
|
|
14
15
|
},
|
|
15
16
|
{
|
|
@@ -22,6 +23,7 @@ test('text-only turn: banner, text, typing, footer with context percent', () =>
|
|
|
22
23
|
},
|
|
23
24
|
{
|
|
24
25
|
"blankLineBefore": false,
|
|
26
|
+
"replyTo": null,
|
|
25
27
|
"text": "Done. \`tmp-events/hello.txt\` contains \`hello world\`.",
|
|
26
28
|
"type": "markdown",
|
|
27
29
|
},
|
|
@@ -31,6 +33,7 @@ test('text-only turn: banner, text, typing, footer with context percent', () =>
|
|
|
31
33
|
},
|
|
32
34
|
{
|
|
33
35
|
"agent": "build",
|
|
36
|
+
"channelId": "channel",
|
|
34
37
|
"contextPercent": 6,
|
|
35
38
|
"directory": "/project",
|
|
36
39
|
"durationMs": 17597,
|
|
@@ -50,33 +53,62 @@ test('text-only turn: banner, text, typing, footer with context percent', () =>
|
|
|
50
53
|
`);
|
|
51
54
|
expect(view.turn).toBe(null);
|
|
52
55
|
});
|
|
53
|
-
test('
|
|
56
|
+
test('a turn that posts nothing visible ends without a footer', () => {
|
|
57
|
+
const events = loadFixture('tools.events.jsonl');
|
|
58
|
+
// Read-only tools are hidden at the default verbosity.
|
|
59
|
+
const hiddenTools = new Set(events.flatMap((event) => (event.type === 'session.tool.input.started' && ['read', 'glob'].includes(event.data.name) ? [event.data.id] : [])));
|
|
60
|
+
const quiet = events.filter((event) => {
|
|
61
|
+
if (event.type.startsWith('session.text.'))
|
|
62
|
+
return false;
|
|
63
|
+
if (!event.type.startsWith('session.tool.'))
|
|
64
|
+
return true;
|
|
65
|
+
const data = event.data;
|
|
66
|
+
return typeof data['id'] === 'string' && hiddenTools.has(data['id']);
|
|
67
|
+
});
|
|
68
|
+
const footers = (input) => replay({ events: input }).effects.filter((effect) => effect.type === 'footer').length;
|
|
69
|
+
expect(hiddenTools.size).toBe(2);
|
|
70
|
+
expect({ quiet: footers(quiet), normal: footers(events) }).toMatchInlineSnapshot(`
|
|
71
|
+
{
|
|
72
|
+
"normal": 1,
|
|
73
|
+
"quiet": 0,
|
|
74
|
+
}
|
|
75
|
+
`);
|
|
76
|
+
});
|
|
77
|
+
test('any turn that answers IDLE posts no text and no footer', () => {
|
|
54
78
|
const turn = loadFixture('tools.events.jsonl').filter((event) => !event.type.startsWith('session.tool.'));
|
|
55
|
-
const
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
61
|
-
const
|
|
62
|
-
const
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
const sent = replay({ prefs, events: [...turn.slice(0, textIndex), ...message, ...turn.slice(textIndex)] });
|
|
67
|
-
const silent = replay({ prefs, events: turn });
|
|
68
|
-
const lines = (effects) => effectLines(effects).filter((line) => !line.startsWith('»') && !line.startsWith('[typing'));
|
|
69
|
-
expect({ sent: lines(sent.effects), silent: lines(silent.effects) }).toMatchInlineSnapshot(`
|
|
79
|
+
const idle = turn.map((event) => (event.type === 'session.text.ended' ? { ...event, data: { ...event.data, text: 'IDLE' } } : event));
|
|
80
|
+
const visible = replay({ events: idle }).effects.filter((effect) => effect.type === 'markdown' || effect.type === 'footer');
|
|
81
|
+
expect(visible).toEqual([]);
|
|
82
|
+
});
|
|
83
|
+
test('a coordinator turn with tool lines but no text (or only IDLE) posts no footer; a thread turn does', () => {
|
|
84
|
+
const events = loadFixture('tools.events.jsonl');
|
|
85
|
+
const idle = events.map((event) => (event.type === 'session.text.ended' ? { ...event, data: { ...event.data, text: 'IDLE' } } : event));
|
|
86
|
+
const silent = events.filter((event) => !event.type.startsWith('session.text.'));
|
|
87
|
+
const sessionId = rootSessionId(events.filter((event) => !event.type.startsWith('kimaki.')));
|
|
88
|
+
const shown = (input, coordinator) => replay({ events: input, view: emptyView({ sessionId, channelId: 'channel', directory: '/project', isNew: true, coordinator }) }).effects.flatMap((effect) => effect.type === 'footer' ? ['footer'] : effect.type === 'send' && effect.text.includes('┣') ? ['tool'] : []);
|
|
89
|
+
expect({ coordinatorIdle: shown(idle, true), coordinatorNoText: shown(silent, true), threadIdle: shown(idle, false) }).toMatchInlineSnapshot(`
|
|
70
90
|
{
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
91
|
+
"coordinatorIdle": [
|
|
92
|
+
"tool",
|
|
93
|
+
"tool",
|
|
94
|
+
"tool",
|
|
95
|
+
"tool",
|
|
96
|
+
"tool",
|
|
75
97
|
],
|
|
76
|
-
"
|
|
77
|
-
"
|
|
78
|
-
"
|
|
79
|
-
"
|
|
98
|
+
"coordinatorNoText": [
|
|
99
|
+
"tool",
|
|
100
|
+
"tool",
|
|
101
|
+
"tool",
|
|
102
|
+
"tool",
|
|
103
|
+
"tool",
|
|
104
|
+
],
|
|
105
|
+
"threadIdle": [
|
|
106
|
+
"tool",
|
|
107
|
+
"tool",
|
|
108
|
+
"tool",
|
|
109
|
+
"tool",
|
|
110
|
+
"tool",
|
|
111
|
+
"footer",
|
|
80
112
|
],
|
|
81
113
|
}
|
|
82
114
|
`);
|
|
@@ -94,11 +126,26 @@ test('kimaki sleep in a turn makes its footer silent, the next turn notifies aga
|
|
|
94
126
|
]
|
|
95
127
|
`);
|
|
96
128
|
});
|
|
129
|
+
test('root model and agent switches after the banner show as subtext lines', () => {
|
|
130
|
+
const events = loadFixture('switch-model.events.jsonl');
|
|
131
|
+
const switches = events.filter((event) => event.type === 'session.model.selected' || event.type === 'session.agent.selected');
|
|
132
|
+
// Before the first step the banner shows the model and agent; a re-select of the same model shows nothing.
|
|
133
|
+
const sameModel = switches.flatMap((event) => (event.type === 'session.model.selected' ? [{ ...event, data: { ...event.data, previous: event.data.model } }] : []));
|
|
134
|
+
const created = events.findIndex((event) => event.type === 'session.created');
|
|
135
|
+
const lines = effectLines(replay({ events: [...events.slice(0, created + 1), ...switches, ...events.slice(created + 1), ...sameModel] }).effects);
|
|
136
|
+
expect(lines.filter((line) => /Switched|using/.test(line))).toMatchInlineSnapshot(`
|
|
137
|
+
[
|
|
138
|
+
"-# *using openai/gpt-6-luna low ⋅ build*",
|
|
139
|
+
"-# Switched model to GPT 6 Luna (medium)",
|
|
140
|
+
"-# Switched agent to Plan",
|
|
141
|
+
]
|
|
142
|
+
`);
|
|
143
|
+
});
|
|
97
144
|
test('execution failure shows the error and no footer, interrupt shows nothing', () => {
|
|
98
145
|
const events = loadFixture('abort.events.jsonl');
|
|
99
146
|
const sessionID = rootSessionId(events);
|
|
100
147
|
const started = events.find((event) => event.type === 'session.execution.started');
|
|
101
|
-
const view = emptyView({ sessionId: sessionID, channelId: 'channel', directory: '/project', isNew: false });
|
|
148
|
+
const view = emptyView({ sessionId: sessionID, channelId: 'channel', directory: '/project', isNew: false, coordinator: false });
|
|
102
149
|
const busy = reduce({ view, event: started, prefs: DEFAULT_PREFS }).view;
|
|
103
150
|
const failed = reduce({
|
|
104
151
|
view: busy,
|
|
@@ -132,7 +179,8 @@ test('execution failure shows the error and no footer, interrupt shows nothing',
|
|
|
132
179
|
expect(replay({ events, view }).effects).toMatchInlineSnapshot(`
|
|
133
180
|
[
|
|
134
181
|
{
|
|
135
|
-
"
|
|
182
|
+
"echo": true,
|
|
183
|
+
"text": "-# » **user:** Run \`sleep 30 && echo never\` with bash, then summarize.",
|
|
136
184
|
"type": "send",
|
|
137
185
|
},
|
|
138
186
|
{
|
|
@@ -153,7 +201,8 @@ test('execution failure shows the error and no footer, interrupt shows nothing',
|
|
|
153
201
|
"type": "viewed",
|
|
154
202
|
},
|
|
155
203
|
{
|
|
156
|
-
"
|
|
204
|
+
"echo": true,
|
|
205
|
+
"text": "-# » **user:** Say only: resumed after abort.",
|
|
157
206
|
"type": "send",
|
|
158
207
|
},
|
|
159
208
|
{
|
|
@@ -162,6 +211,7 @@ test('execution failure shows the error and no footer, interrupt shows nothing',
|
|
|
162
211
|
},
|
|
163
212
|
{
|
|
164
213
|
"blankLineBefore": false,
|
|
214
|
+
"replyTo": null,
|
|
165
215
|
"text": "resumed after abort",
|
|
166
216
|
"type": "markdown",
|
|
167
217
|
},
|
|
@@ -171,6 +221,7 @@ test('execution failure shows the error and no footer, interrupt shows nothing',
|
|
|
171
221
|
},
|
|
172
222
|
{
|
|
173
223
|
"agent": "build",
|
|
224
|
+
"channelId": "channel",
|
|
174
225
|
"contextPercent": 6,
|
|
175
226
|
"directory": "/project",
|
|
176
227
|
"durationMs": 1387,
|
|
@@ -204,7 +255,7 @@ test('only these event types produce effects for the root session', () => {
|
|
|
204
255
|
for (const file of files) {
|
|
205
256
|
const events = loadFixture(file);
|
|
206
257
|
const sessionId = rootSessionId(events);
|
|
207
|
-
let view = emptyView({ sessionId, channelId: 'channel', directory: '/project', isNew: true });
|
|
258
|
+
let view = emptyView({ sessionId, channelId: 'channel', directory: '/project', isNew: true, coordinator: false });
|
|
208
259
|
for (const event of events) {
|
|
209
260
|
const result = reduce({ view, event, prefs: DEFAULT_PREFS });
|
|
210
261
|
view = result.view;
|
|
@@ -213,11 +264,13 @@ test('only these event types produce effects for the root session', () => {
|
|
|
213
264
|
}
|
|
214
265
|
expect([...producing].sort()).toMatchInlineSnapshot(`
|
|
215
266
|
[
|
|
267
|
+
"session.agent.selected",
|
|
216
268
|
"session.execution.interrupted",
|
|
217
269
|
"session.execution.started",
|
|
218
270
|
"session.execution.succeeded",
|
|
219
271
|
"session.inbox.delivered",
|
|
220
272
|
"session.inbox.enqueued",
|
|
273
|
+
"session.model.selected",
|
|
221
274
|
"session.shell.ended",
|
|
222
275
|
"session.shell.started",
|
|
223
276
|
"session.step.started",
|
|
@@ -237,14 +290,12 @@ test('only these event types produce effects for the root session', () => {
|
|
|
237
290
|
"provider.updated",
|
|
238
291
|
"reference.updated",
|
|
239
292
|
"server.connected",
|
|
240
|
-
"session.agent.selected",
|
|
241
293
|
"session.compaction.delta",
|
|
242
294
|
"session.compaction.ended",
|
|
243
295
|
"session.compaction.started",
|
|
244
296
|
"session.created",
|
|
245
297
|
"session.forked",
|
|
246
298
|
"session.instructions.updated",
|
|
247
|
-
"session.model.selected",
|
|
248
299
|
"session.renamed",
|
|
249
300
|
"session.step.ended",
|
|
250
301
|
"session.step.failed",
|
|
@@ -269,7 +320,7 @@ test('only these event types produce effects for the root session', () => {
|
|
|
269
320
|
test('retry notices are throttled to one per 10s', () => {
|
|
270
321
|
const events = loadFixture('abort.events.jsonl');
|
|
271
322
|
const sessionID = rootSessionId(events);
|
|
272
|
-
const view = emptyView({ sessionId: sessionID, channelId: 'channel', directory: '/project', isNew: false });
|
|
323
|
+
const view = emptyView({ sessionId: sessionID, channelId: 'channel', directory: '/project', isNew: false, coordinator: false });
|
|
273
324
|
const retry = (created, attempt) => ({
|
|
274
325
|
id: `evt_retry_${attempt}`,
|
|
275
326
|
created,
|
|
@@ -286,8 +337,8 @@ test('retry notices are throttled to one per 10s', () => {
|
|
|
286
337
|
const { effects } = replay({ events: [retry(1_000, 1), retry(6_000, 2), retry(12_000, 3)], view });
|
|
287
338
|
expect(effectLines(effects)).toMatchInlineSnapshot(`
|
|
288
339
|
[
|
|
289
|
-
"-#
|
|
290
|
-
"-#
|
|
340
|
+
"-# retrying in 5s (attempt 1): rate limited",
|
|
341
|
+
"-# retrying in 5s (attempt 3): rate limited",
|
|
291
342
|
]
|
|
292
343
|
`);
|
|
293
344
|
});
|
|
@@ -300,36 +351,126 @@ test('cache miss notice when the cached prefix shrinks, e.g. after the cache TTL
|
|
|
300
351
|
if (last?.type !== 'session.step.ended')
|
|
301
352
|
return expect.fail('fixture has no root step.ended');
|
|
302
353
|
// Same turn, but the last request found nothing in cache 10 minutes later.
|
|
303
|
-
const
|
|
304
|
-
|
|
354
|
+
const withCache = (cache, input = last.data.tokens.input) => events.map((event, index) => index === lastIndex ? { ...last, created: last.created + 600_000, data: { ...last.data, tokens: { ...last.data.tokens, input, cache } } } : event);
|
|
355
|
+
const cacheLines = (stream) => effectLines(replay({ events: stream }).effects).filter((line) => line.includes('cache'));
|
|
356
|
+
// Everything was written again: a full loss.
|
|
357
|
+
expect(cacheLines(withCache({ read: 0, write: 25_000 }, 0))).toMatchInlineSnapshot(`
|
|
305
358
|
[
|
|
306
|
-
"\\n-#
|
|
359
|
+
"\\n-# prompt cache miss: 0 of 25k tokens cached, 10m 1s after the last request",
|
|
307
360
|
]
|
|
308
361
|
`);
|
|
362
|
+
// Less than half of the prompt was written: a partial miss shows nothing.
|
|
363
|
+
expect(cacheLines(withCache({ read: 0, write: 5_000 }, 20_000))).toEqual([]);
|
|
309
364
|
expect(effectLines(replay({ events }).effects).filter((line) => line.includes('cache'))).toEqual([]);
|
|
310
365
|
});
|
|
366
|
+
test('compaction posts the new context size from the next root step', () => {
|
|
367
|
+
const events = loadFixture('tools.events.jsonl');
|
|
368
|
+
const sessionID = rootSessionId(events);
|
|
369
|
+
const lastIndex = events.findLastIndex((event) => event.type === 'session.step.ended' && event.data.sessionID === sessionID);
|
|
370
|
+
const compacted = {
|
|
371
|
+
id: 'evt_compacted',
|
|
372
|
+
created: 0,
|
|
373
|
+
type: 'session.compaction.ended',
|
|
374
|
+
durable: { aggregateID: sessionID, seq: 0, version: 1 },
|
|
375
|
+
data: { sessionID, reason: 'auto', text: '## Objective', recent: '' },
|
|
376
|
+
};
|
|
377
|
+
const withCompaction = [...events.slice(0, lastIndex), compacted, ...events.slice(lastIndex)];
|
|
378
|
+
expect(effectLines(replay({ events: withCompaction }).effects).filter((line) => line.includes('compacted'))).toMatchInlineSnapshot(`
|
|
379
|
+
[
|
|
380
|
+
"\\n-# context compacted to 26k tokens (6%)",
|
|
381
|
+
]
|
|
382
|
+
`);
|
|
383
|
+
// `/compact` alone: the execution ends with no step after it.
|
|
384
|
+
const end = events.findLastIndex((event) => event.type === 'session.execution.succeeded');
|
|
385
|
+
const manual = [...events.slice(0, end), compacted, ...events.slice(end)];
|
|
386
|
+
expect(effectLines(replay({ events: manual }).effects).filter((line) => line.includes('compacted'))).toMatchInlineSnapshot(`
|
|
387
|
+
[
|
|
388
|
+
"\\n-# context compacted",
|
|
389
|
+
]
|
|
390
|
+
`);
|
|
391
|
+
});
|
|
311
392
|
test('prompts from other clients echo, except the expanded prompt of a command Kimaki ran', () => {
|
|
312
393
|
const events = loadFixture('queue-plain.events.jsonl');
|
|
313
|
-
|
|
314
|
-
const
|
|
394
|
+
// Queued ones show in their ack (`[show queue:...]`), a reply to it marks the run.
|
|
395
|
+
const echoes = (before) => effectLines(replay({ events: [...before, ...events] }).effects).filter((line) => line.includes('» ') || line.startsWith('[reply to'));
|
|
396
|
+
const command = { type: 'kimaki.command', text: '/review auth', username: 'tommy', messageId: null, echo: null };
|
|
315
397
|
expect(echoes([])).toMatchInlineSnapshot(`
|
|
316
398
|
[
|
|
317
|
-
"» **user:** Run \`sleep 6 && echo slow-done\` with bash, then say done.",
|
|
318
|
-
"» **user:** QUEUED-1: reply with the word apple.
|
|
319
|
-
|
|
399
|
+
"-# » **user:** Run \`sleep 6 && echo slow-done\` with bash, then say done.",
|
|
400
|
+
"[show queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# » **user:** QUEUED-1: reply with the word apple.
|
|
401
|
+
-# Queued at position 1. Remove it with /clear-queue position:1",
|
|
402
|
+
"[show queue:msg_0f20347e500196F4o0voD7LGMV] -# » **user:** QUEUED-2: reply with the word cherry.
|
|
403
|
+
-# Queued at position 2. Remove it with /clear-queue position:2",
|
|
404
|
+
"[edit queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# » **user:** QUEUED-1: reply with the word apple.",
|
|
405
|
+
"[reply to queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# Queued message sent",
|
|
406
|
+
"[edit queue:msg_0f20347e500196F4o0voD7LGMV] -# » **user:** QUEUED-2: reply with the word cherry.",
|
|
407
|
+
"[reply to queue:msg_0f20347e500196F4o0voD7LGMV] -# Queued message sent",
|
|
320
408
|
]
|
|
321
409
|
`);
|
|
322
|
-
// The first prompt is the command's template: hidden. The queued ones still
|
|
410
|
+
// The first prompt is the command's template: hidden. The queued ones still show.
|
|
323
411
|
expect(echoes([command])).toMatchInlineSnapshot(`
|
|
324
412
|
[
|
|
325
|
-
"» **user:** QUEUED-1: reply with the word apple.
|
|
326
|
-
|
|
413
|
+
"[show queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# » **user:** QUEUED-1: reply with the word apple.
|
|
414
|
+
-# Queued at position 1. Remove it with /clear-queue position:1",
|
|
415
|
+
"[show queue:msg_0f20347e500196F4o0voD7LGMV] -# » **user:** QUEUED-2: reply with the word cherry.
|
|
416
|
+
-# Queued at position 2. Remove it with /clear-queue position:2",
|
|
417
|
+
"[edit queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# » **user:** QUEUED-1: reply with the word apple.",
|
|
418
|
+
"[reply to queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# Queued message sent",
|
|
419
|
+
"[edit queue:msg_0f20347e500196F4o0voD7LGMV] -# » **user:** QUEUED-2: reply with the word cherry.",
|
|
420
|
+
"[reply to queue:msg_0f20347e500196F4o0voD7LGMV] -# Queued message sent",
|
|
327
421
|
]
|
|
328
422
|
`);
|
|
423
|
+
// A command sent with `kimaki send` has no Discord message: its echo stands in for the template.
|
|
424
|
+
expect(echoes([{ ...command, echo: '-# » **CLI:** /review auth' }])[0]).toMatchInlineSnapshot(`"-# » **CLI:** /review auth"`);
|
|
329
425
|
// A failed command leaves nothing pending.
|
|
330
426
|
expect(echoes([command, { type: 'kimaki.command-failed' }])).toEqual(echoes([]));
|
|
331
427
|
});
|
|
332
|
-
test('
|
|
428
|
+
test('coordinator: a prompt reply goes to its Discord message, a queued one gets "Queued message sent" even when it answers IDLE', () => {
|
|
429
|
+
// The fixture's prompts get Discord metadata, like prompt.ts writes it: messages 101, 102, 103.
|
|
430
|
+
const withDiscord = (threadId) => {
|
|
431
|
+
let next = 101;
|
|
432
|
+
return loadFixture('queue-plain.events.jsonl').map((event) => {
|
|
433
|
+
if (event.type !== 'session.inbox.enqueued' || event.data.item.type !== 'user')
|
|
434
|
+
return event;
|
|
435
|
+
const discord = { messageId: String(next++), threadId, username: 'tommy' };
|
|
436
|
+
const item = { ...event.data.item, payload: { ...event.data.item.payload, metadata: { discord } } };
|
|
437
|
+
return { ...event, data: { ...event.data, item } };
|
|
438
|
+
});
|
|
439
|
+
};
|
|
440
|
+
// replay() binds the view to channel `channel`: a prompt whose conversation is that channel is a coordinator prompt.
|
|
441
|
+
expect(effectLines(replay({ events: withDiscord('channel') }).effects)).toMatchInlineSnapshot(`
|
|
442
|
+
[
|
|
443
|
+
"[typing on]",
|
|
444
|
+
"-# *using openai/gpt-6-luna low ⋅ build*",
|
|
445
|
+
"-# ┣ shell _sleep 6 && echo slow-done_",
|
|
446
|
+
"[show queue:msg_0f20347e1001nsJ7W4hOvhBpQb reply to 102] -# Queued at position 1. Delete the original message to remove it, or use /clear-queue position:1",
|
|
447
|
+
"[show queue:msg_0f20347e500196F4o0voD7LGMV reply to 103] -# Queued at position 2. Delete the original message to remove it, or use /clear-queue position:2",
|
|
448
|
+
"[reply to 101] Done.",
|
|
449
|
+
"[silent] -# *main ⋅ 10s ⋅ 6% ⋅ gpt-6-luna*",
|
|
450
|
+
"[edit queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# Queued",
|
|
451
|
+
"[reply to 102] -# Queued message sent",
|
|
452
|
+
"apple",
|
|
453
|
+
"[silent] -# *main ⋅ 2s ⋅ 6% ⋅ gpt-6-luna*",
|
|
454
|
+
"[edit queue:msg_0f20347e500196F4o0voD7LGMV] -# Queued",
|
|
455
|
+
"[reply to 103] -# Queued message sent",
|
|
456
|
+
"cherry",
|
|
457
|
+
"[typing off]",
|
|
458
|
+
"-# *main ⋅ 2s ⋅ 6% ⋅ gpt-6-luna*",
|
|
459
|
+
]
|
|
460
|
+
`);
|
|
461
|
+
// A coordinator that starts a worker answers IDLE: the queued prompt still shows that it started.
|
|
462
|
+
const idle = withDiscord('channel').map((event) => (event.type === 'session.text.ended' && event.data.text.trim() === 'apple' ? { ...event, data: { ...event.data, text: 'IDLE' } } : event));
|
|
463
|
+
expect(effectLines(replay({ events: idle }).effects).filter((line) => line.includes('queue:msg_0f20347e1001') || line.startsWith('[reply to 102]'))).toMatchInlineSnapshot(`
|
|
464
|
+
[
|
|
465
|
+
"[show queue:msg_0f20347e1001nsJ7W4hOvhBpQb reply to 102] -# Queued at position 1. Delete the original message to remove it, or use /clear-queue position:1",
|
|
466
|
+
"[edit queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# Queued",
|
|
467
|
+
"[reply to 102] -# Queued message sent",
|
|
468
|
+
]
|
|
469
|
+
`);
|
|
470
|
+
const thread = replay({ events: withDiscord('thread') }).effects;
|
|
471
|
+
expect(thread.filter((effect) => effect.type === 'markdown').map((effect) => effect.replyTo)).toEqual([null, null, null]);
|
|
472
|
+
});
|
|
473
|
+
test('snapshot marks an item promoted while disconnected as started, without an echo', () => {
|
|
333
474
|
const events = loadFixture('queue-plain.events.jsonl');
|
|
334
475
|
const index = events.findIndex((event) => event.type === 'session.inbox.enqueued' && event.data.item.delivery === 'queue');
|
|
335
476
|
const enqueued = events[index];
|
|
@@ -352,7 +493,8 @@ test('snapshot closes the ack of an item promoted while disconnected, without an
|
|
|
352
493
|
const hydrated = reduce({ view, event: snapshot, prefs: DEFAULT_PREFS });
|
|
353
494
|
expect(effectLines(hydrated.effects)).toMatchInlineSnapshot(`
|
|
354
495
|
[
|
|
355
|
-
"[edit queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -#
|
|
496
|
+
"[edit queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# » **user:** QUEUED-1: reply with the word apple.",
|
|
497
|
+
"[reply to queue:msg_0f20347e1001nsJ7W4hOvhBpQb] -# Queued message sent",
|
|
356
498
|
]
|
|
357
499
|
`);
|
|
358
500
|
expect(hydrated.effects.map((effect) => effect.type)).toEqual(['edit']);
|
|
@@ -362,7 +504,7 @@ test('snapshot closes the ack of an item promoted while disconnected, without an
|
|
|
362
504
|
test('execute: final metadata shows inner calls whose progress was missed, then failures', () => {
|
|
363
505
|
const events = loadFixture('abort.events.jsonl');
|
|
364
506
|
const sessionID = rootSessionId(events);
|
|
365
|
-
const view = emptyView({ sessionId: sessionID, channelId: 'channel', directory: '/project', isNew: false });
|
|
507
|
+
const view = emptyView({ sessionId: sessionID, channelId: 'channel', directory: '/project', isNew: false, coordinator: false });
|
|
366
508
|
const base = { created: 1_000 };
|
|
367
509
|
const durable = (version) => ({ aggregateID: sessionID, seq: 1, version });
|
|
368
510
|
const call = { sessionID, assistantMessageID: 'msg_a', id: 'call_1' };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"thread-reducer.test.js","sourceRoot":"","sources":["../src/thread-reducer.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"thread-reducer.test.js","sourceRoot":"","sources":["../src/thread-reducer.test.ts"],"names":[],"mappings":"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"}
|
package/dist/tunnel.d.ts
CHANGED
|
@@ -1,8 +1,17 @@
|
|
|
1
|
+
import http from 'node:http';
|
|
1
2
|
export declare function detectPortFromText(text: string): number | null;
|
|
2
3
|
export declare function routeName({ name, tuistorySessionId }: {
|
|
3
4
|
name?: string;
|
|
4
5
|
tuistorySessionId?: string;
|
|
5
6
|
}): string | Error;
|
|
7
|
+
export declare function parseNetstatListeningPids({ stdout, port }: {
|
|
8
|
+
stdout: string;
|
|
9
|
+
port: number;
|
|
10
|
+
}): number[];
|
|
11
|
+
export declare function startHostProxy({ host, port }: {
|
|
12
|
+
host: string;
|
|
13
|
+
port: number;
|
|
14
|
+
}): Promise<http.Server | Error>;
|
|
6
15
|
export declare function runTunnel(options: {
|
|
7
16
|
port?: number;
|
|
8
17
|
command?: string[];
|