@prestyj/cli 5.5.0 → 5.6.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/end-notification.mp3 +0 -0
- package/assets/skills/evidence-led-ui/LICENSES.md +68 -0
- package/assets/skills/evidence-led-ui/SKILL.md +139 -0
- package/{LICENSE → assets/skills/evidence-led-ui/corpus/awesome-design-md/LICENSE} +1 -1
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/airbnb/DESIGN.md +545 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/airtable/DESIGN.md +554 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/apple/DESIGN.md +562 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/binance/DESIGN.md +634 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bmw/DESIGN.md +544 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bmw-m/DESIGN.md +503 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/bugatti/DESIGN.md +454 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cal/DESIGN.md +542 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/claude/DESIGN.md +589 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/clay/DESIGN.md +541 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/clickhouse/DESIGN.md +544 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cohere/DESIGN.md +451 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/coinbase/DESIGN.md +570 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/composio/DESIGN.md +506 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/cursor/DESIGN.md +537 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/dell-1996/DESIGN.md +632 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/elevenlabs/DESIGN.md +504 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/expo/DESIGN.md +526 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ferrari/DESIGN.md +531 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/figma/DESIGN.md +578 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/framer/DESIGN.md +544 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/hashicorp/DESIGN.md +575 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/hp/DESIGN.md +670 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ibm/DESIGN.md +550 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/intercom/DESIGN.md +546 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/kraken/DESIGN.md +125 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/lamborghini/DESIGN.md +288 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/linear.app/DESIGN.md +548 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/lovable/DESIGN.md +298 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mastercard/DESIGN.md +365 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/meta/DESIGN.md +683 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/minimax/DESIGN.md +746 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mintlify/DESIGN.md +852 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/miro/DESIGN.md +825 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mistral.ai/DESIGN.md +773 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/mongodb/DESIGN.md +767 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nike/DESIGN.md +575 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nintendo-2001/DESIGN.md +649 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/notion/DESIGN.md +821 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/nvidia/DESIGN.md +640 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/ollama/DESIGN.md +539 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/opencode.ai/DESIGN.md +521 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/pinterest/DESIGN.md +597 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/playstation/DESIGN.md +661 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/posthog/DESIGN.md +690 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/raycast/DESIGN.md +669 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/renault/DESIGN.md +589 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/replicate/DESIGN.md +616 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/resend/DESIGN.md +585 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/revolut/DESIGN.md +636 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/runwayml/DESIGN.md +244 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/sanity/DESIGN.md +357 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/sentry/DESIGN.md +551 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/shopify/DESIGN.md +516 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/slack/DESIGN.md +482 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/spacex/DESIGN.md +363 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/spotify/DESIGN.md +246 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/starbucks/DESIGN.md +580 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/stripe/DESIGN.md +487 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/supabase/DESIGN.md +462 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/superhuman/DESIGN.md +448 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/tesla/DESIGN.md +286 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/theverge/DESIGN.md +339 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/together.ai/DESIGN.md +633 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/uber/DESIGN.md +636 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/vercel/DESIGN.md +736 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/vodafone/DESIGN.md +538 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/voltagent/DESIGN.md +521 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/warp/DESIGN.md +526 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/webflow/DESIGN.md +588 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/wired/DESIGN.md +497 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/wise/DESIGN.md +544 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/x.ai/DESIGN.md +465 -0
- package/assets/skills/evidence-led-ui/corpus/awesome-design-md/design-md/zapier/DESIGN.md +537 -0
- package/assets/skills/evidence-led-ui/data/corpus-manifest.json +768 -0
- package/assets/skills/evidence-led-ui/data/observations.json +47053 -0
- package/assets/skills/evidence-led-ui/references/anti-defaults.md +203 -0
- package/assets/skills/evidence-led-ui/references/archetypes.md +97 -0
- package/assets/skills/evidence-led-ui/references/craft-rulings.md +167 -0
- package/assets/skills/evidence-led-ui/references/methodology.md +72 -0
- package/assets/skills/evidence-led-ui/references/observed-patterns.md +68 -0
- package/assets/skills/evidence-led-ui/references/production-contract.md +120 -0
- package/assets/skills/evidence-led-ui/references/provenance.md +117 -0
- package/assets/skills/evidence-led-ui/references/quality-rubric.md +126 -0
- package/dist/app-sidecar.js +32 -4
- package/dist/app-sidecar.js.map +1 -1
- package/dist/chat-agents/general.test.js +3 -0
- package/dist/chat-agents/general.test.js.map +1 -1
- package/dist/chat-agents/jiwa.d.ts +53 -0
- package/dist/chat-agents/jiwa.d.ts.map +1 -0
- package/dist/chat-agents/jiwa.js +352 -0
- package/dist/chat-agents/jiwa.js.map +1 -0
- package/dist/chat-agents/jiwa.test.d.ts +2 -0
- package/dist/chat-agents/jiwa.test.d.ts.map +1 -0
- package/dist/chat-agents/jiwa.test.js +66 -0
- package/dist/chat-agents/jiwa.test.js.map +1 -0
- package/dist/chat-agents/shared.d.ts.map +1 -1
- package/dist/chat-agents/shared.js +5 -1
- package/dist/chat-agents/shared.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -3
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +10 -16
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/goal-worker.test.js +3 -2
- package/dist/core/goal-worker.test.js.map +1 -1
- package/dist/core/loop-breaker.d.ts +23 -16
- package/dist/core/loop-breaker.d.ts.map +1 -1
- package/dist/core/loop-breaker.js +52 -11
- package/dist/core/loop-breaker.js.map +1 -1
- package/dist/core/loop-breaker.test.js +37 -16
- package/dist/core/loop-breaker.test.js.map +1 -1
- package/dist/core/nolan-prompt.d.ts +3 -3
- package/dist/core/nolan-prompt.d.ts.map +1 -1
- package/dist/core/nolan-prompt.js +10 -10
- package/dist/core/nolan-prompt.js.map +1 -1
- package/dist/core/nolan-prompt.test.js +17 -0
- package/dist/core/nolan-prompt.test.js.map +1 -1
- package/dist/core/skills-routing.test.d.ts +2 -0
- package/dist/core/skills-routing.test.d.ts.map +1 -0
- package/dist/core/skills-routing.test.js +70 -0
- package/dist/core/skills-routing.test.js.map +1 -0
- package/dist/core/skills.d.ts +2 -0
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +32 -9
- package/dist/core/skills.js.map +1 -1
- package/dist/system-prompt.js +2 -2
- package/dist/system-prompt.js.map +1 -1
- package/dist/system-prompt.test.js +7 -5
- package/dist/system-prompt.test.js.map +1 -1
- package/dist/tools/skill.d.ts.map +1 -1
- package/dist/tools/skill.js +8 -3
- package/dist/tools/skill.js.map +1 -1
- package/dist/ui/components/SkillsOverlay.d.ts.map +1 -1
- package/dist/ui/components/SkillsOverlay.js +8 -3
- package/dist/ui/components/SkillsOverlay.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.d.ts.map +1 -1
- package/dist/ui/hooks/useAgentLoop.js +7 -18
- package/dist/ui/hooks/useAgentLoop.js.map +1 -1
- package/dist/ui/hooks/useAgentLoop.test.js +27 -0
- package/dist/ui/hooks/useAgentLoop.test.js.map +1 -1
- package/package.json +7 -6
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { AgentTool } from "@prestyj/agent";
|
|
2
|
+
export declare const JIWA_SOFT_LIMIT = 60;
|
|
3
|
+
export declare const JIWA_HARD_LIMIT = 90;
|
|
4
|
+
export declare const JIWA_TEXT_LIMIT = 600;
|
|
5
|
+
export declare const JIWA_CATEGORIES: readonly ["identity", "voice", "interaction", "boundaries", "workflow", "other"];
|
|
6
|
+
export type JiwaCategory = (typeof JIWA_CATEGORIES)[number];
|
|
7
|
+
export interface JiwaEntry {
|
|
8
|
+
id: string;
|
|
9
|
+
text: string;
|
|
10
|
+
category: JiwaCategory;
|
|
11
|
+
importance: number;
|
|
12
|
+
createdAt: string;
|
|
13
|
+
updatedAt: string;
|
|
14
|
+
}
|
|
15
|
+
export interface JiwaSnapshot {
|
|
16
|
+
jiwa: JiwaEntry[];
|
|
17
|
+
softLimit: number;
|
|
18
|
+
hardLimit: number;
|
|
19
|
+
}
|
|
20
|
+
export interface JiwaMutationResult {
|
|
21
|
+
entry?: JiwaEntry;
|
|
22
|
+
jiwa: JiwaEntry[];
|
|
23
|
+
duplicateOf?: JiwaEntry;
|
|
24
|
+
deleted?: boolean;
|
|
25
|
+
forgotten?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface JiwaStoreOptions {
|
|
28
|
+
filePath?: string;
|
|
29
|
+
onChange?: (snapshot: JiwaSnapshot) => void | Promise<void>;
|
|
30
|
+
now?: () => Date;
|
|
31
|
+
}
|
|
32
|
+
export declare class JiwaStore {
|
|
33
|
+
readonly filePath: string;
|
|
34
|
+
private readonly onChange?;
|
|
35
|
+
private readonly now;
|
|
36
|
+
constructor(options?: JiwaStoreOptions);
|
|
37
|
+
list(): Promise<JiwaEntry[]>;
|
|
38
|
+
snapshot(): Promise<JiwaSnapshot>;
|
|
39
|
+
set(content: string, category?: JiwaCategory, importance?: number): Promise<JiwaMutationResult>;
|
|
40
|
+
update(id: string, content: string, category?: JiwaCategory, importance?: number, forgetIds?: string[]): Promise<JiwaMutationResult>;
|
|
41
|
+
forget(id: string): Promise<JiwaMutationResult>;
|
|
42
|
+
renderForPrompt(): string;
|
|
43
|
+
private mutate;
|
|
44
|
+
private normalizeText;
|
|
45
|
+
private normalizeImportance;
|
|
46
|
+
private toSnapshot;
|
|
47
|
+
private parse;
|
|
48
|
+
private readFile;
|
|
49
|
+
private readFileSync;
|
|
50
|
+
private writeFile;
|
|
51
|
+
}
|
|
52
|
+
export declare function buildJiwaTools(store: JiwaStore): AgentTool[];
|
|
53
|
+
//# sourceMappingURL=jiwa.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jiwa.d.ts","sourceRoot":"","sources":["../../src/chat-agents/jiwa.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,eAAe,KAAK,CAAC;AAClC,eAAO,MAAM,eAAe,MAAM,CAAC;AAInC,eAAO,MAAM,eAAe,kFAOlB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAE5D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD,MAAM,WAAW,kBAAkB;IACjC,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,EAAE,SAAS,EAAE,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,QAAQ,EAAE,YAAY,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAClB;AA0FD,qBAAa,SAAS;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAa;gBAErB,OAAO,GAAE,gBAAqB;IAMpC,IAAI,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;IAI5B,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC;IAIjC,GAAG,CACP,OAAO,EAAE,MAAM,EACf,QAAQ,GAAE,YAAsB,EAChC,UAAU,SAAI,GACb,OAAO,CAAC,kBAAkB,CAAC;IAwBxB,MAAM,CACV,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,YAAY,EACvB,UAAU,CAAC,EAAE,MAAM,EACnB,SAAS,GAAE,MAAM,EAAO,GACvB,OAAO,CAAC,kBAAkB,CAAC;IA2BxB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQrD,eAAe,IAAI,MAAM;YAyBX,MAAM;IAkBpB,OAAO,CAAC,aAAa;IASrB,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,KAAK;YAiBC,QAAQ;IActB,OAAO,CAAC,YAAY;YAYN,SAAS;CAuBxB;AAoCD,wBAAgB,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,EAAE,CAiD5D"}
|
|
@@ -0,0 +1,352 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import fsSync from "node:fs";
|
|
3
|
+
import fs from "node:fs/promises";
|
|
4
|
+
import os from "node:os";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { z } from "zod";
|
|
7
|
+
import { withFileLock } from "@prestyj/core";
|
|
8
|
+
export const JIWA_SOFT_LIMIT = 60;
|
|
9
|
+
export const JIWA_HARD_LIMIT = 90;
|
|
10
|
+
export const JIWA_TEXT_LIMIT = 600;
|
|
11
|
+
const JIWA_FILE_VERSION = 1;
|
|
12
|
+
const DUPLICATE_THRESHOLD = 0.8;
|
|
13
|
+
export const JIWA_CATEGORIES = [
|
|
14
|
+
"identity",
|
|
15
|
+
"voice",
|
|
16
|
+
"interaction",
|
|
17
|
+
"boundaries",
|
|
18
|
+
"workflow",
|
|
19
|
+
"other",
|
|
20
|
+
];
|
|
21
|
+
const categorySet = new Set(JIWA_CATEGORIES);
|
|
22
|
+
const duplicateStopWords = new Set(["a", "an", "and", "by", "for", "has", "is", "the", "to"]);
|
|
23
|
+
function validDate(value, fallback) {
|
|
24
|
+
return typeof value === "string" && !Number.isNaN(Date.parse(value)) ? value : fallback;
|
|
25
|
+
}
|
|
26
|
+
function coerceEntry(value, now) {
|
|
27
|
+
if (!value || typeof value !== "object")
|
|
28
|
+
return null;
|
|
29
|
+
const candidate = value;
|
|
30
|
+
const text = typeof candidate.text === "string" ? candidate.text.trim().slice(0, JIWA_TEXT_LIMIT) : "";
|
|
31
|
+
if (!text)
|
|
32
|
+
return null;
|
|
33
|
+
const createdAt = validDate(candidate.createdAt, now);
|
|
34
|
+
return {
|
|
35
|
+
id: typeof candidate.id === "string" && candidate.id ? candidate.id : crypto.randomUUID(),
|
|
36
|
+
text,
|
|
37
|
+
category: typeof candidate.category === "string" && categorySet.has(candidate.category)
|
|
38
|
+
? candidate.category
|
|
39
|
+
: "other",
|
|
40
|
+
importance: typeof candidate.importance === "number" && Number.isFinite(candidate.importance)
|
|
41
|
+
? Math.max(1, Math.min(5, Math.round(candidate.importance)))
|
|
42
|
+
: 3,
|
|
43
|
+
createdAt,
|
|
44
|
+
updatedAt: validDate(candidate.updatedAt, createdAt),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
function tokenSet(text) {
|
|
48
|
+
return new Set((text.toLowerCase().match(/[\p{L}\p{N}]+/gu) ?? []).filter((token) => !duplicateStopWords.has(token)));
|
|
49
|
+
}
|
|
50
|
+
function similarity(left, right) {
|
|
51
|
+
const a = tokenSet(left);
|
|
52
|
+
const b = tokenSet(right);
|
|
53
|
+
if (a.size === 0 && b.size === 0)
|
|
54
|
+
return 1;
|
|
55
|
+
let intersection = 0;
|
|
56
|
+
for (const token of a)
|
|
57
|
+
if (b.has(token))
|
|
58
|
+
intersection += 1;
|
|
59
|
+
const uniqueTokens = a.size + b.size - intersection * 2;
|
|
60
|
+
return intersection / (intersection + uniqueTokens * 3);
|
|
61
|
+
}
|
|
62
|
+
function findDuplicate(entries, text, excludeId) {
|
|
63
|
+
return entries.find((entry) => entry.id !== excludeId && similarity(entry.text, text) >= DUPLICATE_THRESHOLD);
|
|
64
|
+
}
|
|
65
|
+
function findExactDuplicate(entries, text, excludeId) {
|
|
66
|
+
return entries.find((entry) => entry.id !== excludeId && similarity(entry.text, text) === 1);
|
|
67
|
+
}
|
|
68
|
+
function enforceHardLimit(entries) {
|
|
69
|
+
if (entries.length <= JIWA_HARD_LIMIT)
|
|
70
|
+
return entries;
|
|
71
|
+
const removable = entries
|
|
72
|
+
.filter((entry) => entry.category !== "identity")
|
|
73
|
+
.sort((left, right) => left.importance - right.importance ||
|
|
74
|
+
Date.parse(left.updatedAt) - Date.parse(right.updatedAt));
|
|
75
|
+
const removeCount = Math.min(entries.length - JIWA_HARD_LIMIT, removable.length);
|
|
76
|
+
const removedIds = new Set(removable.slice(0, removeCount).map((entry) => entry.id));
|
|
77
|
+
return entries.filter((entry) => !removedIds.has(entry.id));
|
|
78
|
+
}
|
|
79
|
+
function sortForDisplay(entries) {
|
|
80
|
+
return [...entries].sort((left, right) => right.importance - left.importance ||
|
|
81
|
+
Date.parse(right.updatedAt) - Date.parse(left.updatedAt));
|
|
82
|
+
}
|
|
83
|
+
export class JiwaStore {
|
|
84
|
+
filePath;
|
|
85
|
+
onChange;
|
|
86
|
+
now;
|
|
87
|
+
constructor(options = {}) {
|
|
88
|
+
this.filePath = options.filePath ?? path.join(os.homedir(), ".ezcoder", "chat-jiwa.json");
|
|
89
|
+
this.onChange = options.onChange;
|
|
90
|
+
this.now = options.now ?? (() => new Date());
|
|
91
|
+
}
|
|
92
|
+
async list() {
|
|
93
|
+
return sortForDisplay((await this.readFile()).jiwa);
|
|
94
|
+
}
|
|
95
|
+
async snapshot() {
|
|
96
|
+
return this.toSnapshot(await this.list());
|
|
97
|
+
}
|
|
98
|
+
async set(content, category = "other", importance = 3) {
|
|
99
|
+
return this.mutate((entries) => {
|
|
100
|
+
const text = this.normalizeText(content);
|
|
101
|
+
const duplicateOf = findDuplicate(entries, text);
|
|
102
|
+
if (duplicateOf)
|
|
103
|
+
return { jiwa: entries, duplicateOf };
|
|
104
|
+
const timestamp = this.now().toISOString();
|
|
105
|
+
const entry = {
|
|
106
|
+
id: crypto.randomUUID(),
|
|
107
|
+
text,
|
|
108
|
+
category,
|
|
109
|
+
importance: this.normalizeImportance(importance),
|
|
110
|
+
createdAt: timestamp,
|
|
111
|
+
updatedAt: timestamp,
|
|
112
|
+
};
|
|
113
|
+
const next = enforceHardLimit([...entries, entry]);
|
|
114
|
+
if (next.length > JIWA_HARD_LIMIT || !next.some((item) => item.id === entry.id)) {
|
|
115
|
+
throw new Error("Jiwa limit is full of protected identity instructions; forget one before adding another.");
|
|
116
|
+
}
|
|
117
|
+
return { jiwa: next, entry };
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
async update(id, content, category, importance, forgetIds = []) {
|
|
121
|
+
return this.mutate((entries) => {
|
|
122
|
+
const index = entries.findIndex((entry) => entry.id === id);
|
|
123
|
+
if (index < 0)
|
|
124
|
+
throw new Error(`Jiwa entry not found: ${id}`);
|
|
125
|
+
const text = this.normalizeText(content);
|
|
126
|
+
const forgetSet = new Set(forgetIds.filter((forgetId) => forgetId !== id));
|
|
127
|
+
const remaining = entries.filter((entry) => !forgetSet.has(entry.id));
|
|
128
|
+
const duplicateOf = findExactDuplicate(remaining, text, id);
|
|
129
|
+
if (duplicateOf)
|
|
130
|
+
return { jiwa: entries, duplicateOf };
|
|
131
|
+
const current = entries[index];
|
|
132
|
+
const entry = {
|
|
133
|
+
...current,
|
|
134
|
+
text,
|
|
135
|
+
category: category ?? current.category,
|
|
136
|
+
importance: importance === undefined ? current.importance : this.normalizeImportance(importance),
|
|
137
|
+
updatedAt: this.now().toISOString(),
|
|
138
|
+
};
|
|
139
|
+
const next = remaining.map((item) => (item.id === id ? entry : item));
|
|
140
|
+
return {
|
|
141
|
+
jiwa: next,
|
|
142
|
+
entry,
|
|
143
|
+
forgotten: entries.length - next.length,
|
|
144
|
+
};
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
async forget(id) {
|
|
148
|
+
return this.mutate((entries) => {
|
|
149
|
+
const exists = entries.some((entry) => entry.id === id);
|
|
150
|
+
if (!exists)
|
|
151
|
+
return { jiwa: entries, deleted: false };
|
|
152
|
+
return { jiwa: entries.filter((entry) => entry.id !== id), deleted: true };
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
renderForPrompt() {
|
|
156
|
+
const entries = sortForDisplay(this.readFileSync().jiwa);
|
|
157
|
+
if (entries.length === 0) {
|
|
158
|
+
return "# Jiwa\nNo persistent behavior instructions are stored yet. Use set_jiwa only for durable user preferences about how chat agents should act.";
|
|
159
|
+
}
|
|
160
|
+
const lines = [
|
|
161
|
+
"# Jiwa",
|
|
162
|
+
"These user-established instructions define how chat agents should act across sessions. Follow them as active user preferences unless a newer user request or higher-priority instruction conflicts.",
|
|
163
|
+
];
|
|
164
|
+
for (const category of JIWA_CATEGORIES) {
|
|
165
|
+
const grouped = entries.filter((entry) => entry.category === category);
|
|
166
|
+
if (grouped.length === 0)
|
|
167
|
+
continue;
|
|
168
|
+
lines.push(`\n## ${category}`);
|
|
169
|
+
for (const entry of grouped) {
|
|
170
|
+
lines.push(`- [${entry.id}] (importance ${entry.importance}) ${entry.text}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (entries.length >= JIWA_SOFT_LIMIT) {
|
|
174
|
+
lines.push(`\nJiwa has reached ${entries.length}/${JIWA_HARD_LIMIT}. Consolidate related instructions with update_jiwa and forget stale or redundant entries with forget_jiwa.`);
|
|
175
|
+
}
|
|
176
|
+
return lines.join("\n");
|
|
177
|
+
}
|
|
178
|
+
async mutate(apply) {
|
|
179
|
+
await fs.mkdir(path.dirname(this.filePath), { recursive: true });
|
|
180
|
+
const { result, changed } = await withFileLock(this.filePath, async () => {
|
|
181
|
+
const current = await this.readFile();
|
|
182
|
+
const mutation = apply(current.jiwa);
|
|
183
|
+
const changed = mutation.jiwa !== current.jiwa;
|
|
184
|
+
if (changed)
|
|
185
|
+
await this.writeFile(mutation.jiwa);
|
|
186
|
+
return {
|
|
187
|
+
result: { ...mutation, jiwa: sortForDisplay(mutation.jiwa) },
|
|
188
|
+
changed,
|
|
189
|
+
};
|
|
190
|
+
});
|
|
191
|
+
if (changed)
|
|
192
|
+
await this.onChange?.(this.toSnapshot(result.jiwa));
|
|
193
|
+
return result;
|
|
194
|
+
}
|
|
195
|
+
normalizeText(content) {
|
|
196
|
+
const text = content.trim();
|
|
197
|
+
if (!text)
|
|
198
|
+
throw new Error("Jiwa instruction cannot be empty.");
|
|
199
|
+
if (text.length > JIWA_TEXT_LIMIT) {
|
|
200
|
+
throw new Error(`Jiwa instruction must be ${JIWA_TEXT_LIMIT} characters or fewer.`);
|
|
201
|
+
}
|
|
202
|
+
return text;
|
|
203
|
+
}
|
|
204
|
+
normalizeImportance(importance) {
|
|
205
|
+
if (!Number.isFinite(importance))
|
|
206
|
+
return 3;
|
|
207
|
+
return Math.max(1, Math.min(5, Math.round(importance)));
|
|
208
|
+
}
|
|
209
|
+
toSnapshot(jiwa) {
|
|
210
|
+
return { jiwa, softLimit: JIWA_SOFT_LIMIT, hardLimit: JIWA_HARD_LIMIT };
|
|
211
|
+
}
|
|
212
|
+
parse(raw) {
|
|
213
|
+
const value = JSON.parse(raw);
|
|
214
|
+
const now = this.now().toISOString();
|
|
215
|
+
const candidates = value && typeof value === "object" && Array.isArray(value.jiwa)
|
|
216
|
+
? value.jiwa
|
|
217
|
+
: [];
|
|
218
|
+
return {
|
|
219
|
+
version: JIWA_FILE_VERSION,
|
|
220
|
+
jiwa: enforceHardLimit(candidates
|
|
221
|
+
.map((candidate) => coerceEntry(candidate, now))
|
|
222
|
+
.filter((item) => item !== null)),
|
|
223
|
+
};
|
|
224
|
+
}
|
|
225
|
+
async readFile() {
|
|
226
|
+
try {
|
|
227
|
+
return this.parse(await fs.readFile(this.filePath, "utf8"));
|
|
228
|
+
}
|
|
229
|
+
catch (error) {
|
|
230
|
+
if (error.code === "ENOENT")
|
|
231
|
+
return { version: JIWA_FILE_VERSION, jiwa: [] };
|
|
232
|
+
try {
|
|
233
|
+
return this.parse(await fs.readFile(`${this.filePath}.bak`, "utf8"));
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return { version: JIWA_FILE_VERSION, jiwa: [] };
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
readFileSync() {
|
|
241
|
+
try {
|
|
242
|
+
return this.parse(requireFileSync(this.filePath));
|
|
243
|
+
}
|
|
244
|
+
catch {
|
|
245
|
+
try {
|
|
246
|
+
return this.parse(requireFileSync(`${this.filePath}.bak`));
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
return { version: JIWA_FILE_VERSION, jiwa: [] };
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
async writeFile(jiwa) {
|
|
254
|
+
await fs.mkdir(path.dirname(this.filePath), { recursive: true });
|
|
255
|
+
const tempPath = `${this.filePath}.${process.pid}.${crypto.randomUUID()}.tmp`;
|
|
256
|
+
try {
|
|
257
|
+
const existing = await fs.readFile(this.filePath, "utf8").catch(() => null);
|
|
258
|
+
if (existing !== null) {
|
|
259
|
+
try {
|
|
260
|
+
this.parse(existing);
|
|
261
|
+
await fs.writeFile(`${this.filePath}.bak`, existing, "utf8");
|
|
262
|
+
}
|
|
263
|
+
catch {
|
|
264
|
+
// Keep the last known-good backup when the primary is malformed.
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
await fs.writeFile(tempPath, `${JSON.stringify({ version: JIWA_FILE_VERSION, jiwa }, null, 2)}\n`, "utf8");
|
|
268
|
+
await fs.rename(tempPath, this.filePath);
|
|
269
|
+
}
|
|
270
|
+
finally {
|
|
271
|
+
await fs.unlink(tempPath).catch(() => { });
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
function requireFileSync(filePath) {
|
|
276
|
+
return fsSync.readFileSync(filePath, "utf8");
|
|
277
|
+
}
|
|
278
|
+
const setJiwaParameters = z.object({
|
|
279
|
+
content: z
|
|
280
|
+
.string()
|
|
281
|
+
.min(1)
|
|
282
|
+
.max(JIWA_TEXT_LIMIT)
|
|
283
|
+
.describe("One concise, self-contained instruction for how chat agents should act"),
|
|
284
|
+
category: z.enum(JIWA_CATEGORIES).optional().describe("Kind of behavior instruction"),
|
|
285
|
+
importance: z.number().int().min(1).max(5).optional().describe("Ongoing importance from 1 to 5"),
|
|
286
|
+
});
|
|
287
|
+
const updateJiwaParameters = z.object({
|
|
288
|
+
id: z.string().min(1).describe("Jiwa entry ID shown in the injected Jiwa block"),
|
|
289
|
+
content: z.string().min(1).max(JIWA_TEXT_LIMIT).describe("Replacement behavior instruction"),
|
|
290
|
+
category: z.enum(JIWA_CATEGORIES).optional(),
|
|
291
|
+
importance: z.number().int().min(1).max(5).optional(),
|
|
292
|
+
forget_ids: z
|
|
293
|
+
.array(z.string().min(1))
|
|
294
|
+
.max(JIWA_HARD_LIMIT)
|
|
295
|
+
.optional()
|
|
296
|
+
.describe("Redundant Jiwa entry IDs to delete atomically after merging them into this update"),
|
|
297
|
+
});
|
|
298
|
+
const forgetJiwaParameters = z.object({
|
|
299
|
+
id: z.string().min(1).describe("Jiwa entry ID shown in the injected Jiwa block"),
|
|
300
|
+
});
|
|
301
|
+
function jiwaCount(count, verb) {
|
|
302
|
+
return `${count} Jiwa ${count === 1 ? "entry" : "entries"} ${verb}`;
|
|
303
|
+
}
|
|
304
|
+
export function buildJiwaTools(store) {
|
|
305
|
+
return [
|
|
306
|
+
{
|
|
307
|
+
name: "set_jiwa",
|
|
308
|
+
description: "Save one durable user instruction about how chat agents should act, speak, identify themselves, work, or what they should avoid.",
|
|
309
|
+
parameters: setJiwaParameters,
|
|
310
|
+
executionMode: "sequential",
|
|
311
|
+
async execute(args) {
|
|
312
|
+
const { content, category, importance } = setJiwaParameters.parse(args);
|
|
313
|
+
const result = await store.set(content, category, importance);
|
|
314
|
+
if (result.duplicateOf) {
|
|
315
|
+
return `Near-duplicate Jiwa entry already exists as ${result.duplicateOf.id}. Use update_jiwa if that instruction changed.`;
|
|
316
|
+
}
|
|
317
|
+
return `Set Jiwa entry ${result.entry.id}. ${jiwaCount(result.jiwa.length, "stored")}.`;
|
|
318
|
+
},
|
|
319
|
+
},
|
|
320
|
+
{
|
|
321
|
+
name: "update_jiwa",
|
|
322
|
+
description: "Replace or correct an existing Jiwa instruction. To consolidate, merge related instructions into content and pass their redundant IDs in forget_ids.",
|
|
323
|
+
parameters: updateJiwaParameters,
|
|
324
|
+
executionMode: "sequential",
|
|
325
|
+
async execute(args) {
|
|
326
|
+
const { id, content, category, importance, forget_ids } = updateJiwaParameters.parse(args);
|
|
327
|
+
const result = await store.update(id, content, category, importance, forget_ids);
|
|
328
|
+
if (result.duplicateOf) {
|
|
329
|
+
return `That would duplicate Jiwa entry ${result.duplicateOf.id}. Update or forget the redundant entry instead.`;
|
|
330
|
+
}
|
|
331
|
+
const cleanup = result.forgotten
|
|
332
|
+
? ` Consolidated ${result.forgotten} redundant ${result.forgotten === 1 ? "entry" : "entries"}.`
|
|
333
|
+
: "";
|
|
334
|
+
return `Updated Jiwa entry ${id}.${cleanup} ${jiwaCount(result.jiwa.length, "stored")}.`;
|
|
335
|
+
},
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
name: "forget_jiwa",
|
|
339
|
+
description: "Delete one stale, wrong, redundant, or explicitly unwanted Jiwa instruction.",
|
|
340
|
+
parameters: forgetJiwaParameters,
|
|
341
|
+
executionMode: "sequential",
|
|
342
|
+
async execute(args) {
|
|
343
|
+
const { id } = forgetJiwaParameters.parse(args);
|
|
344
|
+
const result = await store.forget(id);
|
|
345
|
+
return result.deleted
|
|
346
|
+
? `Forgot Jiwa entry ${id}. ${jiwaCount(result.jiwa.length, "remain")}.`
|
|
347
|
+
: `Jiwa entry ${id} was not found. ${jiwaCount(result.jiwa.length, "remain")}.`;
|
|
348
|
+
},
|
|
349
|
+
},
|
|
350
|
+
];
|
|
351
|
+
}
|
|
352
|
+
//# sourceMappingURL=jiwa.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jiwa.js","sourceRoot":"","sources":["../../src/chat-agents/jiwa.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jiwa.test.d.ts","sourceRoot":"","sources":["../../src/chat-agents/jiwa.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import fs from "node:fs/promises";
|
|
2
|
+
import os from "node:os";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { afterEach, beforeEach, describe, expect, it } from "vitest";
|
|
5
|
+
import { buildJiwaTools, JiwaStore } from "./jiwa.js";
|
|
6
|
+
let tempDir;
|
|
7
|
+
let filePath;
|
|
8
|
+
beforeEach(async () => {
|
|
9
|
+
tempDir = await fs.mkdtemp(path.join(os.tmpdir(), "gg-jiwa-test-"));
|
|
10
|
+
filePath = path.join(tempDir, "nested", "chat-jiwa.json");
|
|
11
|
+
});
|
|
12
|
+
afterEach(async () => {
|
|
13
|
+
await fs.rm(tempDir, { recursive: true, force: true });
|
|
14
|
+
});
|
|
15
|
+
function context() {
|
|
16
|
+
return { signal: new AbortController().signal, toolCallId: "test-call" };
|
|
17
|
+
}
|
|
18
|
+
describe("JiwaStore", () => {
|
|
19
|
+
it("persists behavior instructions separately across store instances", async () => {
|
|
20
|
+
const first = new JiwaStore({ filePath });
|
|
21
|
+
const added = await first.set("Call yourself Blargo in chat.", "identity", 5);
|
|
22
|
+
const id = added.entry.id;
|
|
23
|
+
const second = new JiwaStore({ filePath });
|
|
24
|
+
expect(await second.list()).toEqual([
|
|
25
|
+
expect.objectContaining({ id, category: "identity", importance: 5 }),
|
|
26
|
+
]);
|
|
27
|
+
await second.update(id, "Your name is Blargo.", "identity", 5);
|
|
28
|
+
expect((await first.list())[0]?.text).toBe("Your name is Blargo.");
|
|
29
|
+
expect((await first.forget(id)).deleted).toBe(true);
|
|
30
|
+
expect(await second.list()).toEqual([]);
|
|
31
|
+
});
|
|
32
|
+
it("injects Jiwa as active behavior while preserving instruction priority", async () => {
|
|
33
|
+
const store = new JiwaStore({ filePath });
|
|
34
|
+
await store.set("Use concise, scannable lines.", "voice", 4);
|
|
35
|
+
await store.set("Do not end replies with generic offers to help.", "boundaries", 5);
|
|
36
|
+
const prompt = store.renderForPrompt();
|
|
37
|
+
expect(prompt).toContain("# Jiwa");
|
|
38
|
+
expect(prompt).toContain("## voice");
|
|
39
|
+
expect(prompt).toContain("## boundaries");
|
|
40
|
+
expect(prompt).toContain("higher-priority instruction conflicts");
|
|
41
|
+
expect(prompt).toMatch(/\[[0-9a-f-]+\] \(importance 4\) Use concise, scannable lines\./);
|
|
42
|
+
});
|
|
43
|
+
it("rejects near-duplicate behavior instructions", async () => {
|
|
44
|
+
const store = new JiwaStore({ filePath });
|
|
45
|
+
const original = await store.set("Always use short direct replies", "voice");
|
|
46
|
+
const duplicate = await store.set("Always use direct short replies", "voice");
|
|
47
|
+
expect(duplicate.duplicateOf?.id).toBe(original.entry?.id);
|
|
48
|
+
expect(await store.list()).toHaveLength(1);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("Jiwa tools", () => {
|
|
52
|
+
it("are sequential and mutate only the Jiwa store", async () => {
|
|
53
|
+
const store = new JiwaStore({ filePath });
|
|
54
|
+
const tools = buildJiwaTools(store);
|
|
55
|
+
expect(tools.map((tool) => [tool.name, tool.executionMode])).toEqual([
|
|
56
|
+
["set_jiwa", "sequential"],
|
|
57
|
+
["update_jiwa", "sequential"],
|
|
58
|
+
["forget_jiwa", "sequential"],
|
|
59
|
+
]);
|
|
60
|
+
expect(await tools[0].execute({ content: "Call yourself Blargo.", category: "identity", importance: 5 }, context())).toMatch(/^Set Jiwa entry /);
|
|
61
|
+
const id = (await store.list())[0].id;
|
|
62
|
+
expect(await tools[1].execute({ id, content: "Your name is Blargo." }, context())).toBe(`Updated Jiwa entry ${id}. 1 Jiwa entry stored.`);
|
|
63
|
+
expect(await tools[2].execute({ id }, context())).toBe(`Forgot Jiwa entry ${id}. 0 Jiwa entries remain.`);
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=jiwa.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jiwa.test.js","sourceRoot":"","sources":["../../src/chat-agents/jiwa.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAErE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEtD,IAAI,OAAe,CAAC;AACpB,IAAI,QAAgB,CAAC;AAErB,UAAU,CAAC,KAAK,IAAI,EAAE;IACpB,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,eAAe,CAAC,CAAC,CAAC;IACpE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,SAAS,CAAC,KAAK,IAAI,EAAE;IACnB,MAAM,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,SAAS,OAAO;IACd,OAAO,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AAC3E,CAAC;AAED,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;IACzB,EAAE,CAAC,kEAAkE,EAAE,KAAK,IAAI,EAAE;QAChF,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,+BAA+B,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC9E,MAAM,EAAE,GAAG,KAAK,CAAC,KAAM,CAAC,EAAE,CAAC;QAE3B,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC;YAClC,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;SACrE,CAAC,CAAC;QAEH,MAAM,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,sBAAsB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/D,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QACnE,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpD,MAAM,CAAC,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,KAAK,IAAI,EAAE;QACrF,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1C,MAAM,KAAK,CAAC,GAAG,CAAC,+BAA+B,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;QAC7D,MAAM,KAAK,CAAC,GAAG,CAAC,iDAAiD,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC;QAEpF,MAAM,MAAM,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;QACvC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC;IAC3F,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,KAAK,IAAI,EAAE;QAC5D,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;QAC7E,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,iCAAiC,EAAE,OAAO,CAAC,CAAC;QAE9E,MAAM,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC3D,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAC7C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,+CAA+C,EAAE,KAAK,IAAI,EAAE;QAC7D,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACpC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,CAAC,UAAU,EAAE,YAAY,CAAC;YAC1B,CAAC,aAAa,EAAE,YAAY,CAAC;YAC7B,CAAC,aAAa,EAAE,YAAY,CAAC;SAC9B,CAAC,CAAC;QAEH,MAAM,CACJ,MAAM,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CACrB,EAAE,OAAO,EAAE,uBAAuB,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC,EAAE,EACzE,OAAO,EAAE,CACV,CACF,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC9B,MAAM,EAAE,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE,CAAC;QAEvC,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACtF,sBAAsB,EAAE,wBAAwB,CACjD,CAAC;QACF,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAE,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CACrD,qBAAqB,EAAE,0BAA0B,CAClD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/chat-agents/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,mBAAmB,EACjB,cAAc,GACd,sBAAsB,GACtB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GACtB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GACrB,aAAa,GACb,YAAY,CACf,GAAG;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAE3F;
|
|
1
|
+
{"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../src/chat-agents/shared.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG,IAAI,CACjC,mBAAmB,EACjB,cAAc,GACd,sBAAsB,GACtB,gBAAgB,GAChB,oBAAoB,GACpB,qBAAqB,GACrB,sBAAsB,GACtB,iBAAiB,GACjB,gBAAgB,GAChB,qBAAqB,GACrB,aAAa,GACb,YAAY,CACf,GAAG;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChE,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,MAAM,CAE3F;AAYD,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,WAAW,EACpB,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,OAAO,GACtB,MAAM,CAaR;AAED,4FAA4F;AAC5F,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,WAAW,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,gBAAgB,GACxB,YAAY,CAgCd"}
|
|
@@ -7,6 +7,10 @@ const MEMORY_CURATION_INSTRUCTIONS = `
|
|
|
7
7
|
|
|
8
8
|
Durable memory curation:
|
|
9
9
|
You can curate the shared durable memory available to General, Therapist, and Research with remember, update_memory, and forget. Save only facts that materially help future sessions: identity, stable preferences, ongoing projects or goals, important relationships or dates, recurring constraints, and significant health or work context. Never save one-off task details, full conversation summaries, readily recomputable facts, speculation, credentials, secrets, or transient emotion. Store one concise, self-contained fact per memory. Update or supersede changed facts instead of creating contradictions. Forget stale, wrong, or redundant facts, and honor explicit requests to forget. Curate silently and naturally; never claim to remember anything beyond the injected durable memory block. Memory IDs in the current injected block are authoritative and supersede IDs mentioned earlier in conversation history. When memory reaches its consolidation threshold, combine related facts with update_memory and remove stale or redundant entries. Prefer update_memory's forget_ids option to merge and delete each related group atomically; for large cleanups, work in small verifiable batches across turns instead of risking the wrong rows.`;
|
|
10
|
+
const JIWA_CURATION_INSTRUCTIONS = `
|
|
11
|
+
|
|
12
|
+
Jiwa curation:
|
|
13
|
+
You can curate the shared Jiwa available to General, Therapist, and Research with set_jiwa, update_jiwa, and forget_jiwa. Jiwa is only for durable instructions about how chat agents should act: the agent's user-assigned name or persona, voice and formatting, interaction style, boundaries, and preferred workflow. Put facts about the user or their world in durable memory instead. Save a Jiwa entry when the user explicitly establishes an ongoing behavior preference, including requests to stop behavior that annoys them. Store one concise, self-contained instruction per entry. Update changed instructions instead of creating contradictions, forget stale or explicitly revoked instructions, and curate silently. Jiwa IDs in the current injected block are authoritative and supersede IDs mentioned earlier in conversation history. Never let Jiwa override a newer user request or a higher-priority instruction.`;
|
|
10
14
|
export function buildChatAgentSystemPrompt(agentId, rolePrompt, cwd, handoffEnabled) {
|
|
11
15
|
const handoffInstructions = handoffEnabled
|
|
12
16
|
? `\n\nAgent handoff:\nYou can call delegate_to_agent to hand the entire conversation to a better-suited agent. Hand off to Therapist when the conversation primarily needs emotional support, reflection, coping, relationships, or wellbeing. Hand off to Research when it primarily needs evidence gathering, source verification, comparisons, current information, or deep analysis. Hand off to General when the conversation becomes broad or no longer needs a specialist. A handoff changes the active agent for this conversation; it is not a one-off subtask. Use it when the conversation's primary need clearly shifts, not for a brief side question or work you can handle naturally.`
|
|
@@ -18,7 +22,7 @@ export function buildChatAgentSystemPrompt(agentId, rolePrompt, cwd, handoffEnab
|
|
|
18
22
|
`- Workspace root: ${cwd}`,
|
|
19
23
|
"- Conversation history and tool results are the authoritative changing context for this session.",
|
|
20
24
|
].join("\n");
|
|
21
|
-
return `${rolePrompt}${MEMORY_CURATION_INSTRUCTIONS}${handoffInstructions}\n\n${runtimeContext}`;
|
|
25
|
+
return `${rolePrompt}${MEMORY_CURATION_INSTRUCTIONS}${JIWA_CURATION_INSTRUCTIONS}${handoffInstructions}\n\n${runtimeContext}`;
|
|
22
26
|
}
|
|
23
27
|
/** Create a chat agent on the shared caching/compaction spine without EZ Coder behavior. */
|
|
24
28
|
export function createChatAgentSession(agentId, systemPrompt, options) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/chat-agents/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAA4B,MAAM,0BAA0B,CAAC;AAqBlF,MAAM,UAAU,oBAAoB,CAAC,gBAAwB,EAAE,OAAoB;IACjF,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,4BAA4B,GAAG;;;itCAG4qC,CAAC;AAEltC,MAAM,UAAU,0BAA0B,CACxC,OAAoB,EACpB,UAAkB,EAClB,GAAW,EACX,cAAuB;IAEvB,MAAM,mBAAmB,GAAG,cAAc;QACxC,CAAC,CAAC,oqBAAoqB;QACtqB,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAAG;QACrB,kBAAkB;QAClB,mBAAmB,OAAO,EAAE;QAC5B,mBAAmB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QAC1D,qBAAqB,GAAG,EAAE;QAC1B,kGAAkG;KACnG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,GAAG,UAAU,GAAG,4BAA4B,GAAG,mBAAmB,OAAO,cAAc,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../src/chat-agents/shared.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAA4B,MAAM,0BAA0B,CAAC;AAqBlF,MAAM,UAAU,oBAAoB,CAAC,gBAAwB,EAAE,OAAoB;IACjF,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC;AAED,MAAM,4BAA4B,GAAG;;;itCAG4qC,CAAC;AAEltC,MAAM,0BAA0B,GAAG;;;84BAG22B,CAAC;AAE/4B,MAAM,UAAU,0BAA0B,CACxC,OAAoB,EACpB,UAAkB,EAClB,GAAW,EACX,cAAuB;IAEvB,MAAM,mBAAmB,GAAG,cAAc;QACxC,CAAC,CAAC,oqBAAoqB;QACtqB,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,cAAc,GAAG;QACrB,kBAAkB;QAClB,mBAAmB,OAAO,EAAE;QAC5B,mBAAmB,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE;QAC1D,qBAAqB,GAAG,EAAE;QAC1B,kGAAkG;KACnG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,OAAO,GAAG,UAAU,GAAG,4BAA4B,GAAG,0BAA0B,GAAG,mBAAmB,OAAO,cAAc,EAAE,CAAC;AAChI,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,sBAAsB,CACpC,OAAoB,EACpB,YAAoB,EACpB,OAAyB;IAEzB,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,CAAC;IAClF,MAAM,cAAc,GAAG,oBAAoB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAClE,MAAM,gBAAgB,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAClG,MAAM,gBAAgB,GACpB,gBAAgB,EAAE,UAAU,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI;QACnE,CAAC,CAAC,gBAAgB;QAClB,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,cAAc,GAAG,cAAc,CAAC,eAAe,EAAE,IAAI,CACzD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,mBAAmB,CAC5C,CAAC;IAEF,OAAO,IAAI,YAAY,CAAC;QACtB,GAAG,cAAc;QACjB,SAAS,EAAE,gBAAgB;QAC3B,6EAA6E;QAC7E,oEAAoE;QACpE,YAAY,EAAE,0BAA0B,CACtC,OAAO,EACP,YAAY,EACZ,cAAc,CAAC,GAAG,EAClB,cAAc,KAAK,IAAI,CACxB;QACD,oBAAoB,EAAE,UAAU,OAAO,EAAE;QACzC,cAAc;QACd,kBAAkB,EAAE,KAAK;QACzB,mBAAmB,EAAE,KAAK;QAC1B,oBAAoB,EAAE,KAAK;QAC3B,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,KAAK;KAC3B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -151,9 +151,8 @@ export declare class AgentSession {
|
|
|
151
151
|
private hookStats;
|
|
152
152
|
private hookText;
|
|
153
153
|
private hookConsecutiveFailures;
|
|
154
|
-
private
|
|
155
|
-
private
|
|
156
|
-
private hookSignatureCounts;
|
|
154
|
+
private hookRepeatedNoProgressCalls;
|
|
155
|
+
private hookProgressTracker;
|
|
157
156
|
private hookFileEditCounts;
|
|
158
157
|
private hookToolCalls;
|
|
159
158
|
private idealReviewInjected;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"agent-session.d.ts","sourceRoot":"","sources":["../../src/core/agent-session.ts"],"names":[],"mappings":"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"}
|