create-evda 0.1.2 → 0.1.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/README.md +6 -2
- package/create-evda.mjs +2 -2
- package/lib/setup.mjs +21 -3
- package/package.json +1 -1
- package/templates/AGENTS.md +4 -0
- package/templates/evda-digest.md +1 -0
package/README.md
CHANGED
|
@@ -14,7 +14,7 @@ npx create-evda my-evda
|
|
|
14
14
|
|
|
15
15
|
## Setup
|
|
16
16
|
|
|
17
|
-
On a terminal, `create-evda` asks one question at a time: what to call your agent (Iris unless you rename it), who you are, what you want this for, how it should talk to you, and which AI you will use. It shows where that AI's training setting is, links the provider's own page, and does not finish until you type yes. The answers go into "What this EVÐA is" at the top of `AGENTS.md`, in your words. It suggests dictation: Apple's built in dictation, or Wispr Flow with data collection turned off.
|
|
17
|
+
On a terminal, `create-evda` asks one question at a time: what to call your agent (Iris unless you rename it), who you are, what you want this for, how it should talk to you, and which AI you will use. It shows where that AI's training setting is, links the provider's own page, and does not finish until you type yes. The answers go into "What this EVÐA is" at the top of `AGENTS.md`, in your words. It suggests dictation: Apple's built in dictation, or Wispr Flow with data collection turned off. Last, it offers to bring in what an AI you already use knows about you; see below.
|
|
18
18
|
|
|
19
19
|
Unattended, nothing is asked:
|
|
20
20
|
|
|
@@ -27,7 +27,11 @@ npx create-evda my-evda --yes --agent-name Iris --owner "Dana" --purpose "why wo
|
|
|
27
27
|
|
|
28
28
|
## Any AI
|
|
29
29
|
|
|
30
|
-
`AGENTS.md` is the one source. Codex, Cursor, GitHub Copilot, Windsurf, Zed, opencode and the other tools on agents.md read it directly. For the two that do not, the scaffold writes a one line loader: `CLAUDE.md` for Claude Code and `GEMINI.md` for Gemini CLI, each `@AGENTS.md`. Aider takes `aider --read AGENTS.md`.
|
|
30
|
+
`AGENTS.md` is the one source. Codex, Cursor, GitHub Copilot, Windsurf, Zed, opencode and the other tools on agents.md read it directly. For the two that do not, the scaffold writes a one line loader: `CLAUDE.md` for Claude Code and `GEMINI.md` for Gemini CLI, each `@AGENTS.md`. Aider takes `aider --read AGENTS.md`. The Claude desktop app reads it too, once its Filesystem extension is installed and pointed at this folder (Settings, then Extensions, then Filesystem). ChatGPT and Claude in the browser or app, used through a Project, cannot read or write this folder: a Project's instructions field holds text for that conversation only, and pasting `AGENTS.md` into it does not run an EVDA, because nothing you write there reaches `record/`. Bring what a chat app like that already knows about you in once, as an import, instead: see "Bringing in what an AI already knows" below.
|
|
31
|
+
|
|
32
|
+
## Bringing in what an AI already knows
|
|
33
|
+
|
|
34
|
+
Setup ends by asking whether to bring in what an AI you already talk to knows about you. Say yes and it prints a prompt: paste that into ChatGPT, Claude, or whatever you use, and it writes out what it remembers or has guessed about you, in plain text. Bring the answer to your first session and your agent files it verbatim under `record/imports/YYYY-MM-DD-<source>.md`, with the source and date at the top. It is filed as what that AI said, never as your own words, and every line in it is a claim to check with you over time, not a fact.
|
|
31
35
|
|
|
32
36
|
## Circles and other people
|
|
33
37
|
|
package/create-evda.mjs
CHANGED
|
@@ -28,7 +28,7 @@ import { doctor } from "./lib/doctor.mjs";
|
|
|
28
28
|
import { readPointer, setPointer, pointerPath } from "./lib/locate.mjs";
|
|
29
29
|
import { FOLDER_MANIFEST } from "./lib/folders.mjs";
|
|
30
30
|
import { EvdaError } from "./lib/errors.mjs";
|
|
31
|
-
import { PLATFORMS, PLATFORM_KEYS, LOADERS,
|
|
31
|
+
import { PLATFORMS, PLATFORM_KEYS, LOADERS, DESKTOP_FILESYSTEM, DICTATION, DEFAULT_AGENT_NAME, platformKey, fillOwnerSection, aiLine, interview, trainingSection } from "./lib/setup.mjs";
|
|
32
32
|
|
|
33
33
|
const HERE = dirname(fileURLToPath(import.meta.url));
|
|
34
34
|
const TEMPLATES = join(HERE, "templates");
|
|
@@ -243,7 +243,7 @@ export async function main(argv, io = null) {
|
|
|
243
243
|
log(`Open it with ${agent}:`);
|
|
244
244
|
for (const k of chosen) for (const line of PLATFORMS[k].open) log(` ${line}`);
|
|
245
245
|
if (opts.platform && opts.platform !== "other") log(` ${PLATFORMS.other.open[0]}`);
|
|
246
|
-
for (const line of
|
|
246
|
+
for (const line of DESKTOP_FILESYSTEM) log(` ${line}`);
|
|
247
247
|
if (!opts.trainingOff) {
|
|
248
248
|
log("");
|
|
249
249
|
log(`Model training is not confirmed off yet, so ${agent} asks about it first. Where to turn it off:`);
|
package/lib/setup.mjs
CHANGED
|
@@ -69,11 +69,19 @@ export function trainingSection() {
|
|
|
69
69
|
}).join("\n");
|
|
70
70
|
}
|
|
71
71
|
|
|
72
|
-
// A chat app
|
|
73
|
-
|
|
74
|
-
|
|
72
|
+
// A chat app's project instructions field cannot read or write this folder: it holds text for
|
|
73
|
+
// that conversation only, and nothing persists to record/. Pasting AGENTS.md into a ChatGPT or
|
|
74
|
+
// Claude Project does not run an EVDA. The Claude desktop app is different once its Filesystem
|
|
75
|
+
// extension is pointed at this folder; it then reads AGENTS.md the way Claude Code does.
|
|
76
|
+
export const DESKTOP_FILESYSTEM = [
|
|
77
|
+
"Claude desktop app: Settings, then Extensions, install \"Filesystem\", add this folder, and it reads AGENTS.md too.",
|
|
75
78
|
];
|
|
76
79
|
|
|
80
|
+
// The prompt an owner pastes into a chat app (ChatGPT, Claude, or any AI they already talk to) to
|
|
81
|
+
// pull out what it knows or has guessed about them, so it can be brought into their EVDA once as
|
|
82
|
+
// an import. Plain text, nothing structured, because the answer is filed verbatim.
|
|
83
|
+
export const IMPORT_PROMPT = "Write out everything you remember or have inferred about me: facts, preferences, patterns, things I've told you directly, and things you've only guessed. Plain text, as much as you have, and do not summarize it down.";
|
|
84
|
+
|
|
77
85
|
// The loaders: one line that imports AGENTS.md, for the tools that do not read it on their own.
|
|
78
86
|
// Codex, Cursor, Copilot, Windsurf, Zed and the others on agents.md read AGENTS.md directly and
|
|
79
87
|
// need nothing.
|
|
@@ -200,5 +208,15 @@ export async function interview(opts, io) {
|
|
|
200
208
|
}
|
|
201
209
|
out("");
|
|
202
210
|
out(DICTATION);
|
|
211
|
+
out("");
|
|
212
|
+
const bring = (await ask("Bring in what your AI already knows about you? (yes/no) ")).toLowerCase();
|
|
213
|
+
if (bring === "yes" || bring === "y") {
|
|
214
|
+
out("");
|
|
215
|
+
out("Paste this into a new chat with ChatGPT, Claude, or whatever AI you already talk to:");
|
|
216
|
+
out("");
|
|
217
|
+
out(` ${IMPORT_PROMPT}`);
|
|
218
|
+
out("");
|
|
219
|
+
out(`Bring its answer to your first session with ${agent}. ${agent} files it as an import: what that AI said, not your own words, and a claim to check over time rather than a fact.`);
|
|
220
|
+
}
|
|
203
221
|
return a;
|
|
204
222
|
}
|
package/package.json
CHANGED
package/templates/AGENTS.md
CHANGED
|
@@ -221,6 +221,10 @@ help with that too. There is almost always a way to live well in the situation t
|
|
|
221
221
|
- **Their words stay their words.** Quote verbatim into `record/` for the day: every word, including filler like "ok so", hedges and typos intact.
|
|
222
222
|
Never present your own summary as something they said, and never treat something you wrote earlier
|
|
223
223
|
as evidence of what they think.
|
|
224
|
+
- **An import is what another AI said about them, not their own words.** When they paste in what
|
|
225
|
+
an AI they use elsewhere already knows or has guessed about them, file it verbatim under
|
|
226
|
+
`record/imports/YYYY-MM-DD-<source>.md`, source and date at the top. Never quote a line from it
|
|
227
|
+
back as something they said; treat each item as a claim to check with them over time, not a fact.
|
|
224
228
|
- **Report filings in the past tense, naming the path.** Never "I'll file that"; do it, then say where.
|
|
225
229
|
- **Keep what already exists current.** When something new surfaces about a person, project or place
|
|
226
230
|
that already has an entry, add a dated section to it in the same session. Never overwrite. Record
|
package/templates/evda-digest.md
CHANGED
|
@@ -49,6 +49,7 @@ Instruction-only digest of the generated block of AGENTS.md. Read AGENTS.md in f
|
|
|
49
49
|
## Keeping the record
|
|
50
50
|
- Act first, in the same turn
|
|
51
51
|
- Their words stay their words
|
|
52
|
+
- An import is what another AI said about them, not their own words
|
|
52
53
|
- Report filings in the past tense, naming the path
|
|
53
54
|
- Keep what already exists current
|
|
54
55
|
- Never cite a date, quote or event that is not in the record
|