@soleri/core 8.1.0 → 9.0.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/brain/brain.d.ts +1 -8
- package/dist/brain/brain.d.ts.map +1 -1
- package/dist/brain/brain.js +5 -134
- package/dist/brain/brain.js.map +1 -1
- package/dist/cognee/client.d.ts +5 -0
- package/dist/cognee/client.d.ts.map +1 -1
- package/dist/cognee/client.js +83 -16
- package/dist/cognee/client.js.map +1 -1
- package/dist/cognee/sync-manager.d.ts +67 -8
- package/dist/cognee/sync-manager.d.ts.map +1 -1
- package/dist/cognee/sync-manager.js +129 -32
- package/dist/cognee/sync-manager.js.map +1 -1
- package/dist/cognee/types.d.ts +16 -0
- package/dist/cognee/types.d.ts.map +1 -1
- package/dist/context/context-engine.d.ts +2 -5
- package/dist/context/context-engine.d.ts.map +1 -1
- package/dist/context/context-engine.js +4 -31
- package/dist/context/context-engine.js.map +1 -1
- package/dist/curator/curator.d.ts +2 -5
- package/dist/curator/curator.d.ts.map +1 -1
- package/dist/curator/curator.js +4 -23
- package/dist/curator/curator.js.map +1 -1
- package/dist/engine/bin/soleri-engine.js +6 -5
- package/dist/engine/bin/soleri-engine.js.map +1 -1
- package/dist/engine/core-ops.d.ts.map +1 -1
- package/dist/engine/core-ops.js +11 -6
- package/dist/engine/core-ops.js.map +1 -1
- package/dist/engine/module-manifest.d.ts +1 -1
- package/dist/engine/module-manifest.d.ts.map +1 -1
- package/dist/engine/module-manifest.js +1 -7
- package/dist/engine/module-manifest.js.map +1 -1
- package/dist/engine/register-engine.d.ts.map +1 -1
- package/dist/engine/register-engine.js +0 -7
- package/dist/engine/register-engine.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -4
- package/dist/index.js.map +1 -1
- package/dist/intelligence/types.d.ts +7 -0
- package/dist/intelligence/types.d.ts.map +1 -1
- package/dist/persona/defaults.d.ts +16 -0
- package/dist/persona/defaults.d.ts.map +1 -0
- package/dist/persona/defaults.js +78 -0
- package/dist/persona/defaults.js.map +1 -0
- package/dist/persona/index.d.ts +5 -0
- package/dist/persona/index.d.ts.map +1 -0
- package/dist/persona/index.js +4 -0
- package/dist/persona/index.js.map +1 -0
- package/dist/persona/loader.d.ts +11 -0
- package/dist/persona/loader.d.ts.map +1 -0
- package/dist/persona/loader.js +45 -0
- package/dist/persona/loader.js.map +1 -0
- package/dist/persona/prompt-generator.d.ts +13 -0
- package/dist/persona/prompt-generator.d.ts.map +1 -0
- package/dist/persona/prompt-generator.js +89 -0
- package/dist/persona/prompt-generator.js.map +1 -0
- package/dist/persona/types.d.ts +56 -0
- package/dist/persona/types.d.ts.map +1 -0
- package/dist/persona/types.js +9 -0
- package/dist/persona/types.js.map +1 -0
- package/dist/plugins/types.d.ts +13 -13
- package/dist/runtime/admin-extra-ops.d.ts.map +1 -1
- package/dist/runtime/admin-extra-ops.js +5 -27
- package/dist/runtime/admin-extra-ops.js.map +1 -1
- package/dist/runtime/admin-ops.d.ts.map +1 -1
- package/dist/runtime/admin-ops.js +5 -37
- package/dist/runtime/admin-ops.js.map +1 -1
- package/dist/runtime/capture-ops.d.ts.map +1 -1
- package/dist/runtime/capture-ops.js +32 -16
- package/dist/runtime/capture-ops.js.map +1 -1
- package/dist/runtime/cognee-sync-ops.d.ts +2 -2
- package/dist/runtime/cognee-sync-ops.d.ts.map +1 -1
- package/dist/runtime/cognee-sync-ops.js +45 -7
- package/dist/runtime/cognee-sync-ops.js.map +1 -1
- package/dist/runtime/facades/index.d.ts +1 -1
- package/dist/runtime/facades/index.d.ts.map +1 -1
- package/dist/runtime/facades/index.js +1 -10
- package/dist/runtime/facades/index.js.map +1 -1
- package/dist/runtime/runtime.d.ts.map +1 -1
- package/dist/runtime/runtime.js +14 -53
- package/dist/runtime/runtime.js.map +1 -1
- package/dist/runtime/types.d.ts +6 -8
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/runtime/vault-linking-ops.d.ts.map +1 -1
- package/dist/runtime/vault-linking-ops.js +40 -0
- package/dist/runtime/vault-linking-ops.js.map +1 -1
- package/dist/runtime/vault-sharing-ops.d.ts.map +1 -1
- package/dist/runtime/vault-sharing-ops.js +53 -3
- package/dist/runtime/vault-sharing-ops.js.map +1 -1
- package/dist/vault/linking.d.ts +37 -0
- package/dist/vault/linking.d.ts.map +1 -1
- package/dist/vault/linking.js +73 -0
- package/dist/vault/linking.js.map +1 -1
- package/dist/vault/vault.d.ts +0 -2
- package/dist/vault/vault.d.ts.map +1 -1
- package/dist/vault/vault.js +0 -13
- package/dist/vault/vault.js.map +1 -1
- package/package.json +1 -1
- package/src/__tests__/admin-extra-ops.test.ts +0 -3
- package/src/__tests__/admin-ops.test.ts +1 -5
- package/src/__tests__/brain.test.ts +1 -225
- package/src/__tests__/context-engine.test.ts +1 -6
- package/src/__tests__/core-ops.test.ts +1 -8
- package/src/__tests__/curator-extra-ops.test.ts +0 -2
- package/src/__tests__/curator-pipeline-e2e.test.ts +3 -28
- package/src/__tests__/feature-flags.test.ts +0 -1
- package/src/__tests__/health-registry.test.ts +18 -18
- package/src/__tests__/replayable-stream.test.ts +3 -3
- package/src/brain/brain.ts +4 -157
- package/src/context/context-engine.ts +3 -31
- package/src/curator/curator.ts +5 -28
- package/src/engine/bin/soleri-engine.ts +6 -5
- package/src/engine/core-ops.ts +11 -6
- package/src/engine/module-manifest.ts +1 -7
- package/src/engine/register-engine.ts +0 -7
- package/src/index.ts +20 -16
- package/src/intelligence/types.ts +8 -0
- package/src/persona/defaults.ts +96 -0
- package/src/persona/index.ts +9 -0
- package/src/persona/loader.ts +50 -0
- package/src/persona/prompt-generator.ts +109 -0
- package/src/persona/types.ts +72 -0
- package/src/runtime/admin-extra-ops.ts +5 -28
- package/src/runtime/admin-ops.ts +5 -38
- package/src/runtime/capture-ops.ts +33 -14
- package/src/runtime/facades/index.ts +1 -11
- package/src/runtime/runtime.ts +14 -54
- package/src/runtime/types.ts +6 -8
- package/src/runtime/vault-linking-ops.ts +41 -0
- package/src/runtime/vault-sharing-ops.ts +63 -4
- package/src/vault/linking.ts +94 -0
- package/src/vault/vault.ts +0 -14
- package/src/__tests__/cognee-client-gaps.test.ts +0 -474
- package/src/__tests__/cognee-client.test.ts +0 -524
- package/src/__tests__/cognee-hybrid-search.test.ts +0 -492
- package/src/__tests__/cognee-integration.test.ts +0 -80
- package/src/__tests__/cognee-sync-manager-deep.test.ts +0 -654
- package/src/__tests__/cognee-sync-manager.test.ts +0 -104
- package/src/cognee/client.ts +0 -370
- package/src/cognee/sync-manager.ts +0 -389
- package/src/cognee/types.ts +0 -62
- package/src/runtime/cognee-sync-ops.ts +0 -63
- package/src/runtime/facades/cognee-facade.ts +0 -164
|
@@ -16,9 +16,16 @@ export interface IntelligenceEntry {
|
|
|
16
16
|
validFrom?: number;
|
|
17
17
|
validUntil?: number;
|
|
18
18
|
}
|
|
19
|
+
export interface IntelligenceBundleLink {
|
|
20
|
+
sourceId: string;
|
|
21
|
+
targetId: string;
|
|
22
|
+
linkType: 'supports' | 'contradicts' | 'extends' | 'sequences';
|
|
23
|
+
note?: string;
|
|
24
|
+
}
|
|
19
25
|
export interface IntelligenceBundle {
|
|
20
26
|
domain: string;
|
|
21
27
|
version: string;
|
|
22
28
|
entries: IntelligenceEntry[];
|
|
29
|
+
links?: IntelligenceBundleLink[];
|
|
23
30
|
}
|
|
24
31
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intelligence/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intelligence/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,SAAS,GAAG,cAAc,GAAG,MAAM,GAAG,UAAU,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,YAAY,CAAC;IAChD,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,CAAC,EAAE,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;IACpC,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,UAAU,GAAG,aAAa,GAAG,SAAS,GAAG,WAAW,CAAC;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,KAAK,CAAC,EAAE,sBAAsB,EAAE,CAAC;CAClC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { PersonaConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* The Italian Craftsperson — Soleri's default persona.
|
|
4
|
+
*
|
|
5
|
+
* Named after Paolo Soleri, the Italian-American architect who coined "arcology."
|
|
6
|
+
* This is a universal personality about craft and quality, not domain-specific.
|
|
7
|
+
* The agent adapts these metaphors to whatever the user works on.
|
|
8
|
+
*/
|
|
9
|
+
export declare const ITALIAN_CRAFTSPERSON: Omit<PersonaConfig, 'name' | 'history'>;
|
|
10
|
+
/** Template registry — extensible for future built-in personas */
|
|
11
|
+
export declare const PERSONA_TEMPLATES: Record<string, Omit<PersonaConfig, 'name' | 'history'>>;
|
|
12
|
+
/**
|
|
13
|
+
* Create a full PersonaConfig from a name, using the default template.
|
|
14
|
+
*/
|
|
15
|
+
export declare function createDefaultPersona(name: string): PersonaConfig;
|
|
16
|
+
//# sourceMappingURL=defaults.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/persona/defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;GAMG;AACH,eAAO,MAAM,oBAAoB,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAuExE,CAAC;AAEF,kEAAkE;AAClE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC,CAErF,CAAC;AAEF;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,CAKhE"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Italian Craftsperson — Soleri's default persona.
|
|
3
|
+
*
|
|
4
|
+
* Named after Paolo Soleri, the Italian-American architect who coined "arcology."
|
|
5
|
+
* This is a universal personality about craft and quality, not domain-specific.
|
|
6
|
+
* The agent adapts these metaphors to whatever the user works on.
|
|
7
|
+
*/
|
|
8
|
+
export const ITALIAN_CRAFTSPERSON = {
|
|
9
|
+
template: 'italian-craftsperson',
|
|
10
|
+
inspiration: 'Paolo Soleri — Italian-American architect and visionary. The craft tradition of Italian artisans: mastery through practice, beauty through simplicity.',
|
|
11
|
+
culture: 'Italian',
|
|
12
|
+
metaphors: [
|
|
13
|
+
'craftsmanship',
|
|
14
|
+
'foundations',
|
|
15
|
+
'blueprints',
|
|
16
|
+
'workshop',
|
|
17
|
+
'polishing',
|
|
18
|
+
'forging',
|
|
19
|
+
'materials',
|
|
20
|
+
'apprenticeship',
|
|
21
|
+
],
|
|
22
|
+
voice: 'A warm Italian mentor — direct and opinionated about quality, generous with knowledge, sprinkles Italian expressions naturally. Never condescending, always encouraging mastery.',
|
|
23
|
+
traits: [
|
|
24
|
+
'cares deeply about doing things well',
|
|
25
|
+
'pragmatic over theoretical',
|
|
26
|
+
'dry humor — never cruel, often self-deprecating',
|
|
27
|
+
'celebrates when things click together',
|
|
28
|
+
'impatient with sloppiness, endlessly patient with learning',
|
|
29
|
+
'believes simplicity is the highest form of mastery',
|
|
30
|
+
'opinionated but open to being convinced',
|
|
31
|
+
],
|
|
32
|
+
quirks: [
|
|
33
|
+
'Italian expressions woven naturally: perfetto, piano piano, bravo/brava, mamma mia, allora, dai',
|
|
34
|
+
'Craft metaphors that adapt to the domain at hand — code is built like furniture, APIs are designed like piazzas',
|
|
35
|
+
'Says "perfetto!" when patterns are clean, "mamma mia" when seeing a mess',
|
|
36
|
+
'Occasionally references Italian craft tradition — "as my nonno would say..."',
|
|
37
|
+
'Treats every task like it deserves care, whether architecture or a config file',
|
|
38
|
+
'Uses "we" not "I" — it is a collaboration, always',
|
|
39
|
+
],
|
|
40
|
+
opinions: [
|
|
41
|
+
'Do it once, do it right — rework is the enemy of craft',
|
|
42
|
+
'Simplicity is not laziness — it is the deepest understanding',
|
|
43
|
+
'Learn by doing, capture what you learn, teach what you capture',
|
|
44
|
+
'A good foundation makes everything above it simple',
|
|
45
|
+
'The best code reads like it was obvious — that takes the most skill',
|
|
46
|
+
'Complexity is a sign something was not understood deeply enough',
|
|
47
|
+
],
|
|
48
|
+
languageRule: "Speak the user's language with Italian cultural warmth. Sprinkle Italian expressions naturally — they should feel like character, not decoration. If the user speaks English, use Italian freely. If the user speaks another language, adapt Italian expressions to feel natural in that language.",
|
|
49
|
+
nameRule: 'The name is a label, the character is the soul. When the name changes, adapt pronouns and references naturally but keep all traits, quirks, voice, and opinions intact. The Italian Craftsperson personality persists regardless of what name the user chooses.',
|
|
50
|
+
greetings: [
|
|
51
|
+
'Ciao! Ready to build something beautiful today?',
|
|
52
|
+
'Allora, what are we crafting today?',
|
|
53
|
+
'Buongiorno! The workshop is open — what shall we work on?',
|
|
54
|
+
"Ah, welcome back! Let's pick up where we left off, piano piano.",
|
|
55
|
+
'Ciao, amico! What needs our attention today?',
|
|
56
|
+
],
|
|
57
|
+
signoffs: [
|
|
58
|
+
'Perfetto. Until next time!',
|
|
59
|
+
'Bene, bene. Go build something beautiful.',
|
|
60
|
+
"Piano piano, we'll get there. See you soon!",
|
|
61
|
+
'The craft continues tomorrow. Ciao!',
|
|
62
|
+
'Good work today. As we say — chi va piano, va sano e va lontano.',
|
|
63
|
+
],
|
|
64
|
+
};
|
|
65
|
+
/** Template registry — extensible for future built-in personas */
|
|
66
|
+
export const PERSONA_TEMPLATES = {
|
|
67
|
+
'italian-craftsperson': ITALIAN_CRAFTSPERSON,
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Create a full PersonaConfig from a name, using the default template.
|
|
71
|
+
*/
|
|
72
|
+
export function createDefaultPersona(name) {
|
|
73
|
+
return {
|
|
74
|
+
name,
|
|
75
|
+
...ITALIAN_CRAFTSPERSON,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=defaults.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defaults.js","sourceRoot":"","sources":["../../src/persona/defaults.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAA4C;IAC3E,QAAQ,EAAE,sBAAsB;IAEhC,WAAW,EACT,wJAAwJ;IAE1J,OAAO,EAAE,SAAS;IAElB,SAAS,EAAE;QACT,eAAe;QACf,aAAa;QACb,YAAY;QACZ,UAAU;QACV,WAAW;QACX,SAAS;QACT,WAAW;QACX,gBAAgB;KACjB;IAED,KAAK,EACH,kLAAkL;IAEpL,MAAM,EAAE;QACN,sCAAsC;QACtC,4BAA4B;QAC5B,iDAAiD;QACjD,uCAAuC;QACvC,4DAA4D;QAC5D,oDAAoD;QACpD,yCAAyC;KAC1C;IAED,MAAM,EAAE;QACN,iGAAiG;QACjG,iHAAiH;QACjH,0EAA0E;QAC1E,8EAA8E;QAC9E,gFAAgF;QAChF,mDAAmD;KACpD;IAED,QAAQ,EAAE;QACR,wDAAwD;QACxD,8DAA8D;QAC9D,gEAAgE;QAChE,oDAAoD;QACpD,qEAAqE;QACrE,iEAAiE;KAClE;IAED,YAAY,EACV,oSAAoS;IAEtS,QAAQ,EACN,iQAAiQ;IAEnQ,SAAS,EAAE;QACT,iDAAiD;QACjD,qCAAqC;QACrC,2DAA2D;QAC3D,iEAAiE;QACjE,8CAA8C;KAC/C;IAED,QAAQ,EAAE;QACR,4BAA4B;QAC5B,2CAA2C;QAC3C,6CAA6C;QAC7C,qCAAqC;QACrC,kEAAkE;KACnE;CACF,CAAC;AAEF,kEAAkE;AAClE,MAAM,CAAC,MAAM,iBAAiB,GAA4D;IACxF,sBAAsB,EAAE,oBAAoB;CAC7C,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO;QACL,IAAI;QACJ,GAAG,oBAAoB;KACxB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export type { PersonaConfig, ArchivedPersona, PersonaCreateInput, PersonaSystemInstructions, } from './types.js';
|
|
2
|
+
export { ITALIAN_CRAFTSPERSON, PERSONA_TEMPLATES, createDefaultPersona } from './defaults.js';
|
|
3
|
+
export { loadPersona } from './loader.js';
|
|
4
|
+
export { generatePersonaInstructions, getRandomSignoff } from './prompt-generator.js';
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/persona/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/persona/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,2BAA2B,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PersonaConfig } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load persona from agent config, falling back to default Italian Craftsperson.
|
|
4
|
+
*
|
|
5
|
+
* Handles three cases:
|
|
6
|
+
* 1. Full persona: block in agent.yaml → use as-is
|
|
7
|
+
* 2. Template reference only → expand from built-in templates
|
|
8
|
+
* 3. No persona block at all → create default with agent name
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadPersona(agentName: string, rawPersona?: Partial<PersonaConfig>): PersonaConfig;
|
|
11
|
+
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/persona/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CA2BjG"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { createDefaultPersona, PERSONA_TEMPLATES } from './defaults.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load persona from agent config, falling back to default Italian Craftsperson.
|
|
4
|
+
*
|
|
5
|
+
* Handles three cases:
|
|
6
|
+
* 1. Full persona: block in agent.yaml → use as-is
|
|
7
|
+
* 2. Template reference only → expand from built-in templates
|
|
8
|
+
* 3. No persona block at all → create default with agent name
|
|
9
|
+
*/
|
|
10
|
+
export function loadPersona(agentName, rawPersona) {
|
|
11
|
+
// No persona config at all → full default
|
|
12
|
+
if (!rawPersona) {
|
|
13
|
+
return createDefaultPersona(agentName);
|
|
14
|
+
}
|
|
15
|
+
// Has a template reference → expand from built-in, merge overrides
|
|
16
|
+
const templateId = rawPersona.template ?? 'italian-craftsperson';
|
|
17
|
+
const template = PERSONA_TEMPLATES[templateId];
|
|
18
|
+
if (template) {
|
|
19
|
+
return {
|
|
20
|
+
...template,
|
|
21
|
+
name: rawPersona.name ?? agentName,
|
|
22
|
+
...stripUndefined(rawPersona),
|
|
23
|
+
// Preserve history if present
|
|
24
|
+
history: rawPersona.history ?? [],
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
// Custom template or full config — fill in any gaps from default
|
|
28
|
+
const defaults = createDefaultPersona(rawPersona.name ?? agentName);
|
|
29
|
+
return {
|
|
30
|
+
...defaults,
|
|
31
|
+
...stripUndefined(rawPersona),
|
|
32
|
+
history: rawPersona.history ?? [],
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/** Remove undefined keys so spread doesn't overwrite template values */
|
|
36
|
+
function stripUndefined(obj) {
|
|
37
|
+
const result = {};
|
|
38
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
39
|
+
if (value !== undefined) {
|
|
40
|
+
result[key] = value;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return result;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/persona/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAExE;;;;;;;GAOG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,UAAmC;IAChF,0CAA0C;IAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,oBAAoB,CAAC,SAAS,CAAC,CAAC;IACzC,CAAC;IAED,mEAAmE;IACnE,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,IAAI,sBAAsB,CAAC;IACjE,MAAM,QAAQ,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAE/C,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO;YACL,GAAG,QAAQ;YACX,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,SAAS;YAClC,GAAG,cAAc,CAAC,UAAU,CAAC;YAC7B,8BAA8B;YAC9B,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;SAClC,CAAC;IACJ,CAAC;IAED,iEAAiE;IACjE,MAAM,QAAQ,GAAG,oBAAoB,CAAC,UAAU,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;IACpE,OAAO;QACL,GAAG,QAAQ;QACX,GAAG,cAAc,CAAC,UAAU,CAAC;QAC7B,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;KAClC,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,SAAS,cAAc,CAAoC,GAAM;IAC/D,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;QAC/C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,MAAoB,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { PersonaConfig, PersonaSystemInstructions } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Generate system prompt instructions from a persona config.
|
|
4
|
+
*
|
|
5
|
+
* This transforms the structured persona YAML into natural language
|
|
6
|
+
* instructions that the LLM follows to maintain character.
|
|
7
|
+
*/
|
|
8
|
+
export declare function generatePersonaInstructions(persona: PersonaConfig): PersonaSystemInstructions;
|
|
9
|
+
/**
|
|
10
|
+
* Pick a random signoff from the persona.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getRandomSignoff(persona: PersonaConfig): string;
|
|
13
|
+
//# sourceMappingURL=prompt-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-generator.d.ts","sourceRoot":"","sources":["../../src/persona/prompt-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE3E;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,aAAa,GAAG,yBAAyB,CA4F7F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAG/D"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generate system prompt instructions from a persona config.
|
|
3
|
+
*
|
|
4
|
+
* This transforms the structured persona YAML into natural language
|
|
5
|
+
* instructions that the LLM follows to maintain character.
|
|
6
|
+
*/
|
|
7
|
+
export function generatePersonaInstructions(persona) {
|
|
8
|
+
const lines = [];
|
|
9
|
+
lines.push(`# Persona: ${persona.name}`);
|
|
10
|
+
lines.push('');
|
|
11
|
+
// Identity
|
|
12
|
+
lines.push(`You are **${persona.name}** — a knowledgeable assistant with personality and character.`);
|
|
13
|
+
if (persona.inspiration) {
|
|
14
|
+
lines.push(`Your character is inspired by: ${persona.inspiration}`);
|
|
15
|
+
}
|
|
16
|
+
lines.push('');
|
|
17
|
+
// Voice
|
|
18
|
+
lines.push('## Voice');
|
|
19
|
+
lines.push(persona.voice);
|
|
20
|
+
lines.push('');
|
|
21
|
+
// Traits
|
|
22
|
+
if (persona.traits.length > 0) {
|
|
23
|
+
lines.push('## Personality Traits');
|
|
24
|
+
for (const trait of persona.traits) {
|
|
25
|
+
lines.push(`- ${trait}`);
|
|
26
|
+
}
|
|
27
|
+
lines.push('');
|
|
28
|
+
}
|
|
29
|
+
// Quirks
|
|
30
|
+
if (persona.quirks.length > 0) {
|
|
31
|
+
lines.push('## Character Quirks');
|
|
32
|
+
lines.push('These are specific behaviors that make you memorable:');
|
|
33
|
+
for (const quirk of persona.quirks) {
|
|
34
|
+
lines.push(`- ${quirk}`);
|
|
35
|
+
}
|
|
36
|
+
lines.push('');
|
|
37
|
+
}
|
|
38
|
+
// Cultural texture
|
|
39
|
+
if (persona.culture) {
|
|
40
|
+
lines.push('## Cultural Texture');
|
|
41
|
+
lines.push(`Your cultural background is ${persona.culture}. ${persona.languageRule}`);
|
|
42
|
+
lines.push('');
|
|
43
|
+
}
|
|
44
|
+
// Metaphors
|
|
45
|
+
if (persona.metaphors.length > 0) {
|
|
46
|
+
lines.push('## Metaphor Domain');
|
|
47
|
+
lines.push(`When explaining concepts, naturally draw from these domains: ${persona.metaphors.join(', ')}. ` +
|
|
48
|
+
'Adapt your metaphors to whatever the user is working on — the domain colors your language, it does not limit your knowledge.');
|
|
49
|
+
lines.push('');
|
|
50
|
+
}
|
|
51
|
+
// Opinions
|
|
52
|
+
if (persona.opinions.length > 0) {
|
|
53
|
+
lines.push('## Opinions');
|
|
54
|
+
lines.push('You hold these beliefs about craft and quality:');
|
|
55
|
+
for (const opinion of persona.opinions) {
|
|
56
|
+
lines.push(`- "${opinion}"`);
|
|
57
|
+
}
|
|
58
|
+
lines.push('');
|
|
59
|
+
}
|
|
60
|
+
// Name adaptation rule
|
|
61
|
+
if (persona.nameRule) {
|
|
62
|
+
lines.push('## Identity Persistence');
|
|
63
|
+
lines.push(persona.nameRule);
|
|
64
|
+
lines.push('');
|
|
65
|
+
}
|
|
66
|
+
// Core instruction
|
|
67
|
+
lines.push('## Important');
|
|
68
|
+
lines.push('Stay in character naturally — your personality should feel organic, not performed. ' +
|
|
69
|
+
'You are a universal assistant that can help with ANY task. Your persona defines HOW you communicate, not WHAT you can do. ' +
|
|
70
|
+
'Your knowledge comes from your vault, brain, and what the user teaches you. ' +
|
|
71
|
+
'Be helpful first, characterful second — never let persona get in the way of being useful.');
|
|
72
|
+
// Pick a random greeting
|
|
73
|
+
const greeting = persona.greetings.length > 0
|
|
74
|
+
? persona.greetings[Math.floor(Math.random() * persona.greetings.length)]
|
|
75
|
+
: `Hello! I'm ${persona.name}. What are we working on?`;
|
|
76
|
+
return {
|
|
77
|
+
instructions: lines.join('\n'),
|
|
78
|
+
greeting,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Pick a random signoff from the persona.
|
|
83
|
+
*/
|
|
84
|
+
export function getRandomSignoff(persona) {
|
|
85
|
+
if (persona.signoffs.length === 0)
|
|
86
|
+
return 'Until next time!';
|
|
87
|
+
return persona.signoffs[Math.floor(Math.random() * persona.signoffs.length)];
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=prompt-generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-generator.js","sourceRoot":"","sources":["../../src/persona/prompt-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composable persona system for Soleri agents.
|
|
3
|
+
*
|
|
4
|
+
* A persona defines HOW the agent communicates, not WHAT it knows.
|
|
5
|
+
* Knowledge comes from vault + brain + user teaching.
|
|
6
|
+
* Persona gives the agent character, voice, and memorable interactions.
|
|
7
|
+
*/
|
|
8
|
+
export type PersonaConfig = {
|
|
9
|
+
/** Agent display name — adapts pronouns/gender naturally */
|
|
10
|
+
name: string;
|
|
11
|
+
/** Template ID — 'italian-craftsperson' (default) or 'custom' */
|
|
12
|
+
template: string;
|
|
13
|
+
/** Character inspiration — anchors the voice and worldview */
|
|
14
|
+
inspiration: string;
|
|
15
|
+
/** Cultural flavor — sprinkle expressions from this culture */
|
|
16
|
+
culture: string;
|
|
17
|
+
/** Domains for metaphors — how the agent colors technical language */
|
|
18
|
+
metaphors: string[];
|
|
19
|
+
/** One-line voice description — how the agent sounds */
|
|
20
|
+
voice: string;
|
|
21
|
+
/** Personality traits — adjectives and behavioral tendencies */
|
|
22
|
+
traits: string[];
|
|
23
|
+
/** Specific repeatable behaviors that become the agent's signature */
|
|
24
|
+
quirks: string[];
|
|
25
|
+
/** Strong opinions about craft and quality */
|
|
26
|
+
opinions: string[];
|
|
27
|
+
/** How the agent adapts its language to the user */
|
|
28
|
+
languageRule: string;
|
|
29
|
+
/** How the agent handles name/gender changes */
|
|
30
|
+
nameRule: string;
|
|
31
|
+
/** Random greeting pool */
|
|
32
|
+
greetings: string[];
|
|
33
|
+
/** Random signoff pool */
|
|
34
|
+
signoffs: string[];
|
|
35
|
+
/** Archived previous personas (when user changes persona) */
|
|
36
|
+
history?: ArchivedPersona[];
|
|
37
|
+
};
|
|
38
|
+
export type ArchivedPersona = {
|
|
39
|
+
/** When this persona was archived */
|
|
40
|
+
archivedAt: string;
|
|
41
|
+
/** The full persona config at time of archival */
|
|
42
|
+
config: Omit<PersonaConfig, 'history'>;
|
|
43
|
+
};
|
|
44
|
+
/** Minimal input for creating a persona from user description */
|
|
45
|
+
export type PersonaCreateInput = {
|
|
46
|
+
name: string;
|
|
47
|
+
description?: string;
|
|
48
|
+
};
|
|
49
|
+
/** What the prompt generator outputs */
|
|
50
|
+
export type PersonaSystemInstructions = {
|
|
51
|
+
/** Full system prompt section for persona */
|
|
52
|
+
instructions: string;
|
|
53
|
+
/** Random greeting for this session */
|
|
54
|
+
greeting: string;
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/persona/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,aAAa,GAAG;IAC1B,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IAEb,iEAAiE;IACjE,QAAQ,EAAE,MAAM,CAAC;IAEjB,8DAA8D;IAC9D,WAAW,EAAE,MAAM,CAAC;IAEpB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;IAEhB,sEAAsE;IACtE,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,wDAAwD;IACxD,KAAK,EAAE,MAAM,CAAC;IAEd,gEAAgE;IAChE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;IAEjB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAC;IAErB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,CAAC;IAEjB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,EAAE,CAAC;IAEpB,0BAA0B;IAC1B,QAAQ,EAAE,MAAM,EAAE,CAAC;IAEnB,6DAA6D;IAC7D,OAAO,CAAC,EAAE,eAAe,EAAE,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;CACxC,CAAC;AAEF,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,wCAAwC;AACxC,MAAM,MAAM,yBAAyB,GAAG;IACtC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Composable persona system for Soleri agents.
|
|
3
|
+
*
|
|
4
|
+
* A persona defines HOW the agent communicates, not WHAT it knows.
|
|
5
|
+
* Knowledge comes from vault + brain + user teaching.
|
|
6
|
+
* Persona gives the agent character, voice, and memorable interactions.
|
|
7
|
+
*/
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/persona/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
|
package/dist/plugins/types.d.ts
CHANGED
|
@@ -64,26 +64,26 @@ export declare const pluginManifestSchema: z.ZodObject<{
|
|
|
64
64
|
tags: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodString, "many">>>;
|
|
65
65
|
}, "strip", z.ZodTypeAny, {
|
|
66
66
|
type: string;
|
|
67
|
-
|
|
67
|
+
id: string;
|
|
68
68
|
title: string;
|
|
69
|
+
tags: string[];
|
|
69
70
|
description: string;
|
|
70
|
-
id: string;
|
|
71
71
|
domain?: string | undefined;
|
|
72
|
-
severity?: "
|
|
72
|
+
severity?: "suggestion" | "warning" | "critical" | undefined;
|
|
73
73
|
}, {
|
|
74
74
|
type: string;
|
|
75
|
+
id: string;
|
|
75
76
|
title: string;
|
|
76
77
|
description: string;
|
|
77
|
-
id: string;
|
|
78
78
|
domain?: string | undefined;
|
|
79
|
-
severity?: "
|
|
79
|
+
severity?: "suggestion" | "warning" | "critical" | undefined;
|
|
80
80
|
tags?: string[] | undefined;
|
|
81
81
|
}>, "many">>>;
|
|
82
82
|
}, "strip", z.ZodTypeAny, {
|
|
83
|
-
|
|
83
|
+
version: string;
|
|
84
84
|
id: string;
|
|
85
|
+
description: string;
|
|
85
86
|
name: string;
|
|
86
|
-
version: string;
|
|
87
87
|
dependencies: string[];
|
|
88
88
|
facades: {
|
|
89
89
|
description: string;
|
|
@@ -96,18 +96,18 @@ export declare const pluginManifestSchema: z.ZodObject<{
|
|
|
96
96
|
}[];
|
|
97
97
|
intelligence: {
|
|
98
98
|
type: string;
|
|
99
|
-
|
|
99
|
+
id: string;
|
|
100
100
|
title: string;
|
|
101
|
+
tags: string[];
|
|
101
102
|
description: string;
|
|
102
|
-
id: string;
|
|
103
103
|
domain?: string | undefined;
|
|
104
|
-
severity?: "
|
|
104
|
+
severity?: "suggestion" | "warning" | "critical" | undefined;
|
|
105
105
|
}[];
|
|
106
106
|
domain?: string | undefined;
|
|
107
107
|
}, {
|
|
108
|
+
version: string;
|
|
108
109
|
id: string;
|
|
109
110
|
name: string;
|
|
110
|
-
version: string;
|
|
111
111
|
domain?: string | undefined;
|
|
112
112
|
description?: string | undefined;
|
|
113
113
|
dependencies?: string[] | undefined;
|
|
@@ -122,11 +122,11 @@ export declare const pluginManifestSchema: z.ZodObject<{
|
|
|
122
122
|
}[] | undefined;
|
|
123
123
|
intelligence?: {
|
|
124
124
|
type: string;
|
|
125
|
+
id: string;
|
|
125
126
|
title: string;
|
|
126
127
|
description: string;
|
|
127
|
-
id: string;
|
|
128
128
|
domain?: string | undefined;
|
|
129
|
-
severity?: "
|
|
129
|
+
severity?: "suggestion" | "warning" | "critical" | undefined;
|
|
130
130
|
tags?: string[] | undefined;
|
|
131
131
|
}[] | undefined;
|
|
132
132
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"admin-extra-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/admin-extra-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsB/C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"admin-extra-ops.d.ts","sourceRoot":"","sources":["../../src/runtime/admin-extra-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAsB/C;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,YAAY,GAAG,YAAY,EAAE,CA+yBzE"}
|
|
@@ -12,7 +12,7 @@ import { readFileSync, existsSync } from 'node:fs';
|
|
|
12
12
|
* Create 24 extended admin operations for production observability.
|
|
13
13
|
*/
|
|
14
14
|
export function createAdminExtraOps(runtime) {
|
|
15
|
-
const { vault, brain,
|
|
15
|
+
const { vault, brain, telemetry } = runtime;
|
|
16
16
|
// In-memory permission level — default 'moderate'
|
|
17
17
|
let permissionLevel = 'moderate';
|
|
18
18
|
return [
|
|
@@ -199,7 +199,6 @@ export function createAdminExtraOps(runtime) {
|
|
|
199
199
|
description: 'Status of all runtime modules — check each is initialized.',
|
|
200
200
|
auth: 'read',
|
|
201
201
|
handler: async () => {
|
|
202
|
-
const cogneeStatus = cognee?.getStatus() ?? null;
|
|
203
202
|
const llmAvailable = runtime.llmClient.isAvailable();
|
|
204
203
|
const loopStatus = runtime.loop.getStatus();
|
|
205
204
|
return {
|
|
@@ -208,7 +207,6 @@ export function createAdminExtraOps(runtime) {
|
|
|
208
207
|
planner: true,
|
|
209
208
|
curator: runtime.curator.getStatus().initialized,
|
|
210
209
|
governance: true,
|
|
211
|
-
cognee: { available: cogneeStatus?.available ?? false },
|
|
212
210
|
loop: { active: loopStatus !== null },
|
|
213
211
|
llm: {
|
|
214
212
|
openai: llmAvailable.openai,
|
|
@@ -236,7 +234,7 @@ export function createAdminExtraOps(runtime) {
|
|
|
236
234
|
// ─── Garbage Collection ─────────────────────────────────────────
|
|
237
235
|
{
|
|
238
236
|
name: 'admin_gc',
|
|
239
|
-
description: 'Trigger garbage collection on in-memory caches — brain,
|
|
237
|
+
description: 'Trigger garbage collection on in-memory caches — brain, telemetry.',
|
|
240
238
|
auth: 'write',
|
|
241
239
|
handler: async () => {
|
|
242
240
|
const cleared = [];
|
|
@@ -247,15 +245,6 @@ export function createAdminExtraOps(runtime) {
|
|
|
247
245
|
catch {
|
|
248
246
|
// Brain rebuild failed — graceful degradation
|
|
249
247
|
}
|
|
250
|
-
if (cognee) {
|
|
251
|
-
try {
|
|
252
|
-
cognee.resetPendingCognify();
|
|
253
|
-
cleared.push('cognee');
|
|
254
|
-
}
|
|
255
|
-
catch {
|
|
256
|
-
// Cognee reset failed — graceful degradation
|
|
257
|
-
}
|
|
258
|
-
}
|
|
259
248
|
try {
|
|
260
249
|
telemetry.reset();
|
|
261
250
|
cleared.push('telemetry');
|
|
@@ -285,7 +274,6 @@ export function createAdminExtraOps(runtime) {
|
|
|
285
274
|
'planner',
|
|
286
275
|
'curator',
|
|
287
276
|
'governance',
|
|
288
|
-
'cognee',
|
|
289
277
|
'loop',
|
|
290
278
|
'identityManager',
|
|
291
279
|
'intentRouter',
|
|
@@ -618,7 +606,7 @@ export function createAdminExtraOps(runtime) {
|
|
|
618
606
|
description: 'Get health status of a specific subsystem.',
|
|
619
607
|
auth: 'read',
|
|
620
608
|
schema: z.object({
|
|
621
|
-
subsystem: z.string().describe('Subsystem name (e.g. "vault", "
|
|
609
|
+
subsystem: z.string().describe('Subsystem name (e.g. "vault", "brain", "llm")'),
|
|
622
610
|
}),
|
|
623
611
|
handler: async (params) => {
|
|
624
612
|
const sub = runtime.health.get(params.subsystem);
|
|
@@ -646,7 +634,7 @@ export function createAdminExtraOps(runtime) {
|
|
|
646
634
|
description: 'Get the current value of a specific feature flag.',
|
|
647
635
|
auth: 'read',
|
|
648
636
|
schema: z.object({
|
|
649
|
-
flag: z.string().describe('Flag name (e.g. "auth-enforcement", "
|
|
637
|
+
flag: z.string().describe('Flag name (e.g. "auth-enforcement", "vault-sync")'),
|
|
650
638
|
}),
|
|
651
639
|
handler: async (params) => {
|
|
652
640
|
const flag = params.flag;
|
|
@@ -706,7 +694,7 @@ export function createAdminExtraOps(runtime) {
|
|
|
706
694
|
// ─── Setup Wizard (#182) ─────────────────────────────────────────
|
|
707
695
|
{
|
|
708
696
|
name: 'admin_setup_check',
|
|
709
|
-
description: 'Check agent setup status — vault health, brain vocabulary,
|
|
697
|
+
description: 'Check agent setup status — vault health, brain vocabulary, LLM keys, templates.',
|
|
710
698
|
auth: 'read',
|
|
711
699
|
handler: async () => {
|
|
712
700
|
const checks = {};
|
|
@@ -732,16 +720,6 @@ export function createAdminExtraOps(runtime) {
|
|
|
732
720
|
catch {
|
|
733
721
|
checks.brain = { ok: false, detail: 'Brain not initialized' };
|
|
734
722
|
}
|
|
735
|
-
// Cognee
|
|
736
|
-
const cogneeStatus = cognee?.getStatus() ?? null;
|
|
737
|
-
checks.cognee = {
|
|
738
|
-
ok: cogneeStatus?.available ?? false,
|
|
739
|
-
detail: cognee
|
|
740
|
-
? cogneeStatus?.available
|
|
741
|
-
? 'Connected'
|
|
742
|
-
: 'Not available (optional)'
|
|
743
|
-
: 'Disabled',
|
|
744
|
-
};
|
|
745
723
|
// LLM keys
|
|
746
724
|
const llmAvail = runtime.llmClient.isAvailable();
|
|
747
725
|
checks.llm = {
|