Ship Assistent 0.14.0: chat sessions, ask-only hops, and context compression.

Per-chat Generate session with sparse deltas; drop Cards/Civitai/wanted hops; rolling history summary via the same Ollama model with a budget chip and /compress.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Leonid Pershin
2026-08-23 06:19:04 +03:00
co-authored by Cursor
parent d29436c944
commit 9ac24a828b
35 changed files with 5640 additions and 5652 deletions
+17 -9
View File
@@ -2,7 +2,6 @@ import { describe, it } from 'node:test';
import assert from 'node:assert/strict';
import {
userAsksLook,
userCommandsGenerate,
userAsksNoGenerate,
resolveTurnIntent,
packWantsVision,
@@ -14,17 +13,26 @@ describe('intent.js', () => {
assert.equal(userAsksLook('нарисуй лису'), false);
});
it('userCommandsGenerate respects veto', () => {
assert.equal(userCommandsGenerate('сгенерируй кадр'), true);
assert.equal(userCommandsGenerate('только запомни промпт'), false);
it('userAsksNoGenerate vetoes remember / no-gen', () => {
assert.equal(userAsksNoGenerate('только запомни промпт'), true);
assert.equal(userAsksNoGenerate('не генерируй'), true);
assert.equal(userAsksNoGenerate('нарисуй лису'), false);
});
it('resolveTurnIntent honors look without generate', () => {
const patch = { look_at: ['generate'] };
const intent = resolveTurnIntent(patch, 'что не так с кадром?', {}, 'ordinary');
assert.equal(intent.generate, false);
assert.equal(intent.look, true);
it('resolveTurnIntent uses model generate only + veto', () => {
const lookOnly = resolveTurnIntent({ look_at: ['generate'] }, 'что не так с кадром?', {});
assert.equal(lookOnly.generate, false);
assert.equal(lookOnly.look, true);
const gen = resolveTurnIntent({ prompt: 'fox', generate: true }, 'нарисуй лису', {});
assert.equal(gen.generate, true);
const vetoed = resolveTurnIntent({ prompt: 'fox', generate: true }, 'только запомни промпт', {});
assert.equal(vetoed.generate, false);
assert.equal(vetoed.vetoed, true);
const noHeuristic = resolveTurnIntent({ prompt: 'fox' }, 'нарисуй красивую лису в снегу', {});
assert.equal(noHeuristic.generate, false);
});
it('packWantsVision for critique pack', () => {