Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d6debad86 |
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "@ztimson/ai-utils",
|
"name": "@ztimson/ai-utils",
|
||||||
"version": "1.7.0",
|
"version": "1.7.1",
|
||||||
"description": "AI Utility library",
|
"description": "AI Utility library",
|
||||||
"author": "Zak Timson",
|
"author": "Zak Timson",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
|||||||
+7
-7
@@ -340,22 +340,22 @@ Think of this like an Obsidian vault with a clear division of responsibility:
|
|||||||
- A chronological, skimmable log of what actually happened: real discussions, decisions made, progress on projects, problems worked through
|
- A chronological, skimmable log of what actually happened: real discussions, decisions made, progress on projects, problems worked through
|
||||||
- This is NOT a transcript, and it is NOT a step-by-step record, its a compressed log of notable events & developments
|
- This is NOT a transcript, and it is NOT a step-by-step record, its a compressed log of notable events & developments
|
||||||
- One line per development is usually enough: what was worked on and the outcome, not the blow-by-blow of how
|
- One line per development is usually enough: what was worked on and the outcome, not the blow-by-blow of how
|
||||||
- Skip small talk and trivial exchanges entirely. Skip anything that's purely a todo item (goes in Todo Tasks) or a durable fact about a subject (goes in Entity Dossiers)
|
- Skip small talk and trivial exchanges entirely. Skip anything that's a todo item (goes in Todo Tasks) or a durable fact about a subject (goes in Entity Dossiers)
|
||||||
|
|
||||||
2. Todo Tasks
|
2. Todo Tasks
|
||||||
- Extract concrete tasks the user says need to be done, should be done, or were completed
|
- Extract concrete tasks the user says need to be done, should be done, or were completed
|
||||||
- Return the task text and whether it is still todo or is done
|
- Return the task text and whether it is still todo or is done
|
||||||
- A completed task should be marked done, not recreated as a new todo
|
- A completed task should be marked done, not recreated as a new todo
|
||||||
- Only extract actionable tasks, not general goals or observations
|
- Only extract actionable tasks, not general goals or observations, if none - omit returning a tasks array
|
||||||
- Assign each task a subject:
|
- Assign each task a subject:
|
||||||
- If the task belongs to a persistent entity (a project, a class, etc.), use that entity's exact node name, or a new entity path if it doesn't exist yet
|
- If the task belongs to a persistent entity (a project, a class, etc.), use that entity's exact node name, or a new entity path if it doesn't exist yet
|
||||||
- If it's a personal/life task with no entity of its own (reach out to someone, reply to an email, pay a bill, etc.), leave subject as an empty string — it belongs in the journal, not a new document
|
- If it's a personal/life task with no entity of its own (reach out to someone, reply to an email, pay a bill, etc.), leave subject as an empty string — it belongs in the journal, not a new document
|
||||||
|
|
||||||
3. Entity Dossiers
|
3. Entity Dossiers
|
||||||
- Detailed dossiers with all information regarding a subject
|
- Detailed dossiers with all factual information regarding a subject
|
||||||
- Record the final/end state, not intermediate changes
|
- Record the final/end state, not intermediate changes
|
||||||
- Ignore assistant claims, guesses, greetings, or temporary details
|
- Ignore assistant claims, guesses, greetings, or temporary details
|
||||||
- NEVER create a document for something that's only meaningful as a point in time — a single conversation, a one-off decision, a debugging session, a date. That's a journal entry, not an entity
|
- NEVER create a dossier for something I wouldnt find in a wiki site: temporary information, debugging, guesses, conversations (this is all journal entry stuff!)
|
||||||
- identify its HOME ENTITY:
|
- identify its HOME ENTITY:
|
||||||
- The HOME ENTITY name should always be a [abstract|pro]noun
|
- The HOME ENTITY name should always be a [abstract|pro]noun
|
||||||
- The grammatical subject/owner of the fact is the strongest clue
|
- The grammatical subject/owner of the fact is the strongest clue
|
||||||
@@ -379,9 +379,9 @@ Available nodes:
|
|||||||
${this.listNodes(store.list).map(n => `- ${n.name}: ${n.description}`).join('\n') || 'None yet.'}
|
${this.listNodes(store.list).map(n => `- ${n.name}: ${n.description}`).join('\n') || 'None yet.'}
|
||||||
${ghosts.length ? `${ghosts.map(g => `- ${g}: (Ghost)`).join('\n')}` : ''}`,
|
${ghosts.length ? `${ghosts.map(g => `- ${g}: (Ghost)`).join('\n')}` : ''}`,
|
||||||
schema: {
|
schema: {
|
||||||
journal: {type: 'string', description: 'Short day-to-day recap; empty if nothing happened.', required: false},
|
journal: {type: 'string', description: 'Short bullet point recap, omit if nothing notable happened'},
|
||||||
tasks: {
|
tasks: {
|
||||||
type: 'array', description: 'Concrete tasks mentioned or completed in the conversation.', required: false, items: {
|
type: 'array', description: 'Concrete tasks mentioned or completed in the conversation, omit if none', items: {
|
||||||
type: 'object', items: {
|
type: 'object', items: {
|
||||||
subject: {type: 'string', description: 'Exact node name / new persistent entity path this task belongs to, or an empty string if this is a personal task with no entity of its own (those go in the journal)', required: true},
|
subject: {type: 'string', description: 'Exact node name / new persistent entity path this task belongs to, or an empty string if this is a personal task with no entity of its own (those go in the journal)', required: true},
|
||||||
task: {type: 'string', description: 'Concise actionable task', required: true},
|
task: {type: 'string', description: 'Concise actionable task', required: true},
|
||||||
@@ -390,7 +390,7 @@ ${ghosts.length ? `${ghosts.map(g => `- ${g}: (Ghost)`).join('\n')}` : ''}`,
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
buckets: {
|
buckets: {
|
||||||
type: 'array', description: 'Groups of facts to remember; empty array if nothing worth storing.', items: {
|
type: 'array', description: 'Groups of facts to remember; omit if none', items: {
|
||||||
type: 'object', items: {
|
type: 'object', items: {
|
||||||
subject: {type: 'string', description: 'Exact node name or new persistent entity path', required: true},
|
subject: {type: 'string', description: 'Exact node name or new persistent entity path', required: true},
|
||||||
facts: {type: 'array', description: 'Facts to store here', items: {type: 'string'}},
|
facts: {type: 'array', description: 'Facts to store here', items: {type: 'string'}},
|
||||||
|
|||||||
Reference in New Issue
Block a user