@soleri/core 9.0.2 → 9.0.3
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/engine/core-ops.d.ts.map +1 -1
- package/dist/engine/core-ops.js +26 -10
- package/dist/engine/core-ops.js.map +1 -1
- package/dist/persona/loader.d.ts +4 -5
- package/dist/persona/loader.d.ts.map +1 -1
- package/dist/persona/loader.js +27 -14
- package/dist/persona/loader.js.map +1 -1
- package/dist/persona/prompt-generator.d.ts.map +1 -1
- package/dist/persona/prompt-generator.js +7 -0
- package/dist/persona/prompt-generator.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/core-ops.ts +28 -10
- package/src/persona/loader.ts +28 -14
- package/src/persona/prompt-generator.ts +8 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-ops.d.ts","sourceRoot":"","sources":["../../src/engine/core-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,mBAAmB,GAC5B,YAAY,EAAE,
|
|
1
|
+
{"version":3,"file":"core-ops.d.ts","sourceRoot":"","sources":["../../src/engine/core-ops.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,mBAAmB,GAC5B,YAAY,EAAE,CAwKhB"}
|
package/dist/engine/core-ops.js
CHANGED
|
@@ -83,16 +83,24 @@ export function createCoreOps(runtime, identity) {
|
|
|
83
83
|
const s = runtime.vault.stats();
|
|
84
84
|
const persona = runtime.persona;
|
|
85
85
|
const personaInstructions = runtime.personaInstructions;
|
|
86
|
-
|
|
86
|
+
const hasPersona = persona.template !== 'none';
|
|
87
|
+
const response = {
|
|
87
88
|
activated: true,
|
|
88
89
|
agent: {
|
|
89
90
|
id: identity.id,
|
|
90
|
-
name: persona.name,
|
|
91
|
+
name: hasPersona ? persona.name : identity.name,
|
|
91
92
|
role: identity.role,
|
|
92
93
|
description: identity.description,
|
|
93
94
|
format: 'filetree',
|
|
94
95
|
},
|
|
95
|
-
|
|
96
|
+
vault: {
|
|
97
|
+
connected: true,
|
|
98
|
+
entries: s.totalEntries,
|
|
99
|
+
domains: Object.keys(s.byDomain),
|
|
100
|
+
},
|
|
101
|
+
};
|
|
102
|
+
if (hasPersona) {
|
|
103
|
+
response.persona = {
|
|
96
104
|
template: persona.template,
|
|
97
105
|
name: persona.name,
|
|
98
106
|
culture: persona.culture,
|
|
@@ -101,13 +109,21 @@ export function createCoreOps(runtime, identity) {
|
|
|
101
109
|
quirks: persona.quirks,
|
|
102
110
|
greeting: personaInstructions.greeting,
|
|
103
111
|
instructions: personaInstructions.instructions,
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
112
|
+
};
|
|
113
|
+
}
|
|
114
|
+
else {
|
|
115
|
+
response.personaSetup = {
|
|
116
|
+
needed: true,
|
|
117
|
+
message: 'No persona configured yet. Would you like to set one up?',
|
|
118
|
+
options: [
|
|
119
|
+
{ id: 'italian-craftsperson', label: 'Italian Craftsperson (default)', hint: 'Warm, opinionated about quality, sprinkles Italian expressions — perfetto!' },
|
|
120
|
+
{ id: 'custom', label: 'Describe your own', hint: 'Tell me who you want your agent to be' },
|
|
121
|
+
{ id: 'skip', label: 'Skip for now', hint: 'Use the agent without a persona' },
|
|
122
|
+
],
|
|
123
|
+
hint: 'Run: op:set_persona params:{ template: "italian-craftsperson" } or op:set_persona params:{ description: "A calm zen master who values harmony" }',
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
return response;
|
|
111
127
|
},
|
|
112
128
|
},
|
|
113
129
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core-ops.js","sourceRoot":"","sources":["../../src/engine/core-ops.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"core-ops.js","sourceRoot":"","sources":["../../src/engine/core-ops.ts"],"names":[],"mappings":"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"}
|
package/dist/persona/loader.d.ts
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { PersonaConfig } from './types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Load persona from agent config
|
|
3
|
+
* Load persona from agent config.
|
|
4
4
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* 3. No persona block at all → create default with agent name
|
|
5
|
+
* - Full persona: block in agent.yaml → use as-is
|
|
6
|
+
* - Template reference → expand from built-in templates
|
|
7
|
+
* - No persona block → blank persona (user prompted on activate)
|
|
9
8
|
*/
|
|
10
9
|
export declare function loadPersona(agentName: string, rawPersona?: Partial<PersonaConfig>): PersonaConfig;
|
|
11
10
|
//# sourceMappingURL=loader.d.ts.map
|
|
@@ -1 +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;
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/persona/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmBhD;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,GAAG,aAAa,CA0BjG"}
|
package/dist/persona/loader.js
CHANGED
|
@@ -1,33 +1,46 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { PERSONA_TEMPLATES } from './defaults.js';
|
|
2
|
+
/** A blank persona — agent works without character until user configures one */
|
|
3
|
+
const BLANK_PERSONA = {
|
|
4
|
+
template: 'none',
|
|
5
|
+
inspiration: '',
|
|
6
|
+
culture: '',
|
|
7
|
+
metaphors: [],
|
|
8
|
+
voice: '',
|
|
9
|
+
traits: [],
|
|
10
|
+
quirks: [],
|
|
11
|
+
opinions: [],
|
|
12
|
+
languageRule: '',
|
|
13
|
+
nameRule: '',
|
|
14
|
+
greetings: [],
|
|
15
|
+
signoffs: [],
|
|
16
|
+
};
|
|
2
17
|
/**
|
|
3
|
-
* Load persona from agent config
|
|
18
|
+
* Load persona from agent config.
|
|
4
19
|
*
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* 3. No persona block at all → create default with agent name
|
|
20
|
+
* - Full persona: block in agent.yaml → use as-is
|
|
21
|
+
* - Template reference → expand from built-in templates
|
|
22
|
+
* - No persona block → blank persona (user prompted on activate)
|
|
9
23
|
*/
|
|
10
24
|
export function loadPersona(agentName, rawPersona) {
|
|
11
|
-
// No persona config at all →
|
|
25
|
+
// No persona config at all → blank (user will be prompted)
|
|
12
26
|
if (!rawPersona) {
|
|
13
|
-
return
|
|
27
|
+
return { ...BLANK_PERSONA, name: agentName };
|
|
14
28
|
}
|
|
15
|
-
// Has a template reference → expand from built-in
|
|
16
|
-
const templateId = rawPersona.template ?? '
|
|
29
|
+
// Has a template reference → expand from built-in
|
|
30
|
+
const templateId = rawPersona.template ?? 'none';
|
|
17
31
|
const template = PERSONA_TEMPLATES[templateId];
|
|
18
32
|
if (template) {
|
|
19
33
|
return {
|
|
20
34
|
...template,
|
|
21
35
|
name: rawPersona.name ?? agentName,
|
|
22
36
|
...stripUndefined(rawPersona),
|
|
23
|
-
// Preserve history if present
|
|
24
37
|
history: rawPersona.history ?? [],
|
|
25
38
|
};
|
|
26
39
|
}
|
|
27
|
-
// Custom template or full config — fill in
|
|
28
|
-
const defaults = createDefaultPersona(rawPersona.name ?? agentName);
|
|
40
|
+
// Custom template or full config — fill in gaps from blank
|
|
29
41
|
return {
|
|
30
|
-
...
|
|
42
|
+
...BLANK_PERSONA,
|
|
43
|
+
name: rawPersona.name ?? agentName,
|
|
31
44
|
...stripUndefined(rawPersona),
|
|
32
45
|
history: rawPersona.history ?? [],
|
|
33
46
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/persona/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/persona/loader.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAElD,gFAAgF;AAChF,MAAM,aAAa,GAA4C;IAC7D,QAAQ,EAAE,MAAM;IAChB,WAAW,EAAE,EAAE;IACf,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,EAAE;IACZ,YAAY,EAAE,EAAE;IAChB,QAAQ,EAAE,EAAE;IACZ,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;CACb,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,WAAW,CAAC,SAAiB,EAAE,UAAmC;IAChF,2DAA2D;IAC3D,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,OAAO,EAAE,GAAG,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC/C,CAAC;IAED,kDAAkD;IAClD,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,IAAI,MAAM,CAAC;IACjD,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,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;SAClC,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,OAAO;QACL,GAAG,aAAa;QAChB,IAAI,EAAE,UAAU,CAAC,IAAI,IAAI,SAAS;QAClC,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"}
|
|
@@ -1 +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,
|
|
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,CAoG7F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAG/D"}
|
|
@@ -5,6 +5,13 @@
|
|
|
5
5
|
* instructions that the LLM follows to maintain character.
|
|
6
6
|
*/
|
|
7
7
|
export function generatePersonaInstructions(persona) {
|
|
8
|
+
// Blank persona — no instructions, generic greeting
|
|
9
|
+
if (persona.template === 'none') {
|
|
10
|
+
return {
|
|
11
|
+
instructions: `You are ${persona.name} — a helpful assistant. No persona configured yet.`,
|
|
12
|
+
greeting: `Hello! I'm ${persona.name}. What are we working on?`,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
8
15
|
const lines = [];
|
|
9
16
|
lines.push(`# Persona: ${persona.name}`);
|
|
10
17
|
lines.push('');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt-generator.js","sourceRoot":"","sources":["../../src/persona/prompt-generator.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"prompt-generator.js","sourceRoot":"","sources":["../../src/persona/prompt-generator.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/engine/core-ops.ts
CHANGED
|
@@ -103,16 +103,26 @@ export function createCoreOps(
|
|
|
103
103
|
const s = runtime.vault.stats();
|
|
104
104
|
const persona = runtime.persona;
|
|
105
105
|
const personaInstructions = runtime.personaInstructions;
|
|
106
|
-
|
|
106
|
+
const hasPersona = persona.template !== 'none';
|
|
107
|
+
|
|
108
|
+
const response: Record<string, unknown> = {
|
|
107
109
|
activated: true,
|
|
108
110
|
agent: {
|
|
109
111
|
id: identity.id,
|
|
110
|
-
name: persona.name,
|
|
112
|
+
name: hasPersona ? persona.name : identity.name,
|
|
111
113
|
role: identity.role,
|
|
112
114
|
description: identity.description,
|
|
113
115
|
format: 'filetree',
|
|
114
116
|
},
|
|
115
|
-
|
|
117
|
+
vault: {
|
|
118
|
+
connected: true,
|
|
119
|
+
entries: s.totalEntries,
|
|
120
|
+
domains: Object.keys(s.byDomain),
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
|
|
124
|
+
if (hasPersona) {
|
|
125
|
+
response.persona = {
|
|
116
126
|
template: persona.template,
|
|
117
127
|
name: persona.name,
|
|
118
128
|
culture: persona.culture,
|
|
@@ -121,13 +131,21 @@ export function createCoreOps(
|
|
|
121
131
|
quirks: persona.quirks,
|
|
122
132
|
greeting: personaInstructions.greeting,
|
|
123
133
|
instructions: personaInstructions.instructions,
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
134
|
+
};
|
|
135
|
+
} else {
|
|
136
|
+
response.personaSetup = {
|
|
137
|
+
needed: true,
|
|
138
|
+
message: 'No persona configured yet. Would you like to set one up?',
|
|
139
|
+
options: [
|
|
140
|
+
{ id: 'italian-craftsperson', label: 'Italian Craftsperson (default)', hint: 'Warm, opinionated about quality, sprinkles Italian expressions — perfetto!' },
|
|
141
|
+
{ id: 'custom', label: 'Describe your own', hint: 'Tell me who you want your agent to be' },
|
|
142
|
+
{ id: 'skip', label: 'Skip for now', hint: 'Use the agent without a persona' },
|
|
143
|
+
],
|
|
144
|
+
hint: 'Run: op:set_persona params:{ template: "italian-craftsperson" } or op:set_persona params:{ description: "A calm zen master who values harmony" }',
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return response;
|
|
131
149
|
},
|
|
132
150
|
},
|
|
133
151
|
{
|
package/src/persona/loader.ts
CHANGED
|
@@ -1,22 +1,37 @@
|
|
|
1
1
|
import type { PersonaConfig } from './types.js';
|
|
2
|
-
import {
|
|
2
|
+
import { PERSONA_TEMPLATES } from './defaults.js';
|
|
3
|
+
|
|
4
|
+
/** A blank persona — agent works without character until user configures one */
|
|
5
|
+
const BLANK_PERSONA: Omit<PersonaConfig, 'name' | 'history'> = {
|
|
6
|
+
template: 'none',
|
|
7
|
+
inspiration: '',
|
|
8
|
+
culture: '',
|
|
9
|
+
metaphors: [],
|
|
10
|
+
voice: '',
|
|
11
|
+
traits: [],
|
|
12
|
+
quirks: [],
|
|
13
|
+
opinions: [],
|
|
14
|
+
languageRule: '',
|
|
15
|
+
nameRule: '',
|
|
16
|
+
greetings: [],
|
|
17
|
+
signoffs: [],
|
|
18
|
+
};
|
|
3
19
|
|
|
4
20
|
/**
|
|
5
|
-
* Load persona from agent config
|
|
21
|
+
* Load persona from agent config.
|
|
6
22
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* 3. No persona block at all → create default with agent name
|
|
23
|
+
* - Full persona: block in agent.yaml → use as-is
|
|
24
|
+
* - Template reference → expand from built-in templates
|
|
25
|
+
* - No persona block → blank persona (user prompted on activate)
|
|
11
26
|
*/
|
|
12
27
|
export function loadPersona(agentName: string, rawPersona?: Partial<PersonaConfig>): PersonaConfig {
|
|
13
|
-
// No persona config at all →
|
|
28
|
+
// No persona config at all → blank (user will be prompted)
|
|
14
29
|
if (!rawPersona) {
|
|
15
|
-
return
|
|
30
|
+
return { ...BLANK_PERSONA, name: agentName };
|
|
16
31
|
}
|
|
17
32
|
|
|
18
|
-
// Has a template reference → expand from built-in
|
|
19
|
-
const templateId = rawPersona.template ?? '
|
|
33
|
+
// Has a template reference → expand from built-in
|
|
34
|
+
const templateId = rawPersona.template ?? 'none';
|
|
20
35
|
const template = PERSONA_TEMPLATES[templateId];
|
|
21
36
|
|
|
22
37
|
if (template) {
|
|
@@ -24,15 +39,14 @@ export function loadPersona(agentName: string, rawPersona?: Partial<PersonaConfi
|
|
|
24
39
|
...template,
|
|
25
40
|
name: rawPersona.name ?? agentName,
|
|
26
41
|
...stripUndefined(rawPersona),
|
|
27
|
-
// Preserve history if present
|
|
28
42
|
history: rawPersona.history ?? [],
|
|
29
43
|
};
|
|
30
44
|
}
|
|
31
45
|
|
|
32
|
-
// Custom template or full config — fill in
|
|
33
|
-
const defaults = createDefaultPersona(rawPersona.name ?? agentName);
|
|
46
|
+
// Custom template or full config — fill in gaps from blank
|
|
34
47
|
return {
|
|
35
|
-
...
|
|
48
|
+
...BLANK_PERSONA,
|
|
49
|
+
name: rawPersona.name ?? agentName,
|
|
36
50
|
...stripUndefined(rawPersona),
|
|
37
51
|
history: rawPersona.history ?? [],
|
|
38
52
|
};
|
|
@@ -7,6 +7,14 @@ import type { PersonaConfig, PersonaSystemInstructions } from './types.js';
|
|
|
7
7
|
* instructions that the LLM follows to maintain character.
|
|
8
8
|
*/
|
|
9
9
|
export function generatePersonaInstructions(persona: PersonaConfig): PersonaSystemInstructions {
|
|
10
|
+
// Blank persona — no instructions, generic greeting
|
|
11
|
+
if (persona.template === 'none') {
|
|
12
|
+
return {
|
|
13
|
+
instructions: `You are ${persona.name} — a helpful assistant. No persona configured yet.`,
|
|
14
|
+
greeting: `Hello! I'm ${persona.name}. What are we working on?`,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
|
|
10
18
|
const lines: string[] = [];
|
|
11
19
|
|
|
12
20
|
lines.push(`# Persona: ${persona.name}`);
|