@aitne-sh/aitne 0.1.9 → 0.1.10
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 +36 -6
- package/agent-assets/docs/concepts/agent-day.md +2 -2
- package/agent-assets/docs/concepts/costs-and-quotas.md +4 -3
- package/agent-assets/docs/concepts/delegated-mode.md +5 -5
- package/agent-assets/docs/concepts/memory-model.md +6 -3
- package/agent-assets/docs/concepts/safety-model.md +19 -16
- package/agent-assets/docs/concepts/skills.md +2 -2
- package/agent-assets/docs/features/integrations/browser-history.md +9 -8
- package/agent-assets/docs/features/integrations/calendar.md +4 -4
- package/agent-assets/docs/features/integrations/mail.md +3 -2
- package/agent-assets/docs/features/lifestyle/git.md +3 -3
- package/agent-assets/docs/features/lifestyle/reading.md +15 -8
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +4 -3
- package/agent-assets/docs/features/memory-files/agent-journal.md +30 -12
- package/agent-assets/docs/features/memory-files/agent-lessons.md +177 -0
- package/agent-assets/docs/features/memory-files/projects.md +6 -4
- package/agent-assets/docs/features/memory-files/roadmap.md +17 -14
- package/agent-assets/docs/features/messaging/overview.md +5 -5
- package/agent-assets/docs/features/messaging/telegram.md +10 -9
- package/agent-assets/docs/features/operations/activity-and-conversations.md +5 -4
- package/agent-assets/docs/features/operations/approvals.md +6 -5
- package/agent-assets/docs/features/operations/managed-chromium.md +3 -2
- package/agent-assets/docs/features/operations/quiet-hours.md +4 -3
- package/agent-assets/docs/features/routines/custom-routines.md +11 -7
- package/agent-assets/docs/features/routines/evening-review.md +10 -2
- package/agent-assets/docs/features/routines/morning-routine.md +4 -3
- package/agent-assets/docs/features/routines/weekly-review.md +6 -0
- package/agent-assets/docs/features/wiki/commands.md +4 -4
- package/agent-assets/docs/features/wiki/cost-and-approval.md +4 -3
- package/agent-assets/docs/features/wiki/dashboard.md +7 -6
- package/agent-assets/docs/features/wiki/overview.md +3 -3
- package/agent-assets/docs/features/wiki/search.md +5 -5
- package/agent-assets/docs/features/wiki/workspaces.md +2 -2
- package/agent-assets/docs/getting-started/02-first-steps.md +5 -3
- package/agent-assets/docs/getting-started/04-first-day.md +2 -2
- package/agent-assets/docs/glossary.md +4 -4
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +2 -2
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +4 -2
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +5 -4
- package/agent-assets/docs/guides/install-and-run.md +2 -2
- package/agent-assets/docs/guides/maintain-wiki-health.md +2 -2
- package/agent-assets/docs/guides/pause-the-agent.md +9 -5
- package/agent-assets/docs/guides/setup-wizard.md +8 -5
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +6 -6
- package/agent-assets/docs/reference/api.md +15 -5
- package/agent-assets/docs/reference/cli-commands.md +3 -3
- package/agent-assets/docs/reference/config.md +21 -4
- package/agent-assets/docs/reference/disallowed-tools.md +6 -4
- package/agent-assets/docs/reference/knowledge-layout.md +11 -2
- package/agent-assets/docs/reference/process-keys.md +2 -2
- package/agent-assets/docs/reference/skills.md +5 -4
- package/agent-assets/docs/troubleshooting/auth-failed.md +9 -8
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +16 -9
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +2 -2
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +7 -6
- package/agent-assets/skills/agent-actions/SKILL.md +23 -39
- package/agent-assets/skills/agent-create/SKILL.md +15 -6
- package/agent-assets/skills/attach/SKILL.md +8 -27
- package/agent-assets/skills/browser-history/SKILL.md +29 -16
- package/agent-assets/skills/browser-history-respond/SKILL.md +6 -1
- package/agent-assets/skills/browser-task/SKILL.md +22 -27
- package/agent-assets/skills/context/SKILL.md +23 -32
- package/agent-assets/skills/context/curation.json +12 -12
- package/agent-assets/skills/context/references/api.md +17 -17
- package/agent-assets/skills/context/references/required-frontmatter.md +10 -9
- package/agent-assets/skills/context/references/snapshot-files.md +12 -11
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +5 -5
- package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
- package/agent-assets/skills/docs-search/SKILL.md +19 -31
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +8 -95
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +8 -94
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +8 -94
- package/agent-assets/skills/external-services/SKILL.native.claude.md +2 -2
- package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
- package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +3 -2
- package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
- package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +13 -25
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +3 -2
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +3 -2
- package/agent-assets/skills/mail/SKILL.md +10 -18
- package/agent-assets/skills/mail/SKILL.native.claude.md +8 -7
- package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
- package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
- package/agent-assets/skills/mail/references/api.md +6 -1
- package/agent-assets/skills/mail/references/examples.md +2 -1
- package/agent-assets/skills/managed-tasks/SKILL.md +44 -77
- package/agent-assets/skills/managed-tasks/references/errors.md +25 -14
- package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +6 -4
- package/agent-assets/skills/management-policy/SKILL.md +10 -11
- package/agent-assets/skills/management-policy/references/policy-workflow.md +4 -5
- package/agent-assets/skills/notify/SKILL.md +11 -13
- package/agent-assets/skills/notify/references/priority.md +28 -25
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +1 -1
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +1 -1
- package/agent-assets/skills/notion/SKILL.md +17 -17
- package/agent-assets/skills/notion/SKILL.native.claude.md +1 -1
- package/agent-assets/skills/notion/SKILL.native.codex.md +1 -1
- package/agent-assets/skills/notion/SKILL.native.gemini.md +1 -1
- package/agent-assets/skills/observations/SKILL.md +5 -20
- package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
- package/agent-assets/skills/project-doc/SKILL.md +9 -6
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +2 -2
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
- package/agent-assets/skills/reading/SKILL.md +8 -42
- package/agent-assets/skills/reading/references/reading-taste.md +5 -5
- package/agent-assets/skills/roadmap/SKILL.md +3 -19
- package/agent-assets/skills/roadmap/references/api.md +16 -6
- package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
- package/agent-assets/skills/roadmap/references/migration.md +8 -6
- package/agent-assets/skills/roadmap/references/retention.md +18 -0
- package/agent-assets/skills/schedule/SKILL.md +9 -26
- package/agent-assets/skills/schedule/references/importance.md +23 -0
- package/agent-assets/skills/schedule/references/recurrence-rule.md +6 -4
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +34 -37
- package/agent-assets/skills/today/SKILL.md +20 -79
- package/agent-assets/skills/today/references/today-skeleton.md +66 -0
- package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
- package/agent-assets/skills/today/seeds/section-shape.seed.json +6 -6
- package/agent-assets/skills/user-interview/SKILL.md +15 -90
- package/agent-assets/skills/user-interview/references/op-briefing.md +1 -1
- package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
- package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +1 -1
- package/agent-assets/skills/user-profile/SKILL.md +16 -26
- package/agent-assets/skills/user-profile/curation.json +3 -3
- package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
- package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +5 -4
- package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
- package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
- package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
- package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
- package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
- package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
- package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
- package/agent-assets/task-flows/message.received.dm.md +4 -0
- package/agent-assets/task-flows/message.received.dm_first.md +4 -0
- package/agent-assets/task-flows/routine.evening_review.md +80 -0
- package/agent-assets/task-flows/routine.monthly_review.md +72 -0
- package/agent-assets/task-flows/routine.weekly_review.md +21 -0
- package/agent-assets/task-flows/wiki.trace.md +1 -1
- package/bin/aitne.mjs +45 -11
- package/package.json +4 -4
- package/scripts/commands/doctor.mjs +11 -2
- package/scripts/lib/process-identity.d.mts +46 -0
- package/scripts/lib/process-identity.mjs +193 -0
- package/scripts/lib/read-api-token.mjs +1 -1
- package/scripts/start.mjs +14 -4
package/README.md
CHANGED
|
@@ -30,7 +30,7 @@ Aitne is a daemon on your laptop, connected to your calendar, mail (Gmail / Outl
|
|
|
30
30
|
|
|
31
31
|
- **04:00 — Morning routine.** Aitne reads everything that landed overnight (mail, GitHub activity, calendar changes, vault updates) and writes `today.md` — sample below.
|
|
32
32
|
- **Morning — Brief.** The plan lands in your DMs as a short summary.
|
|
33
|
-
- **Through the day — Nudges.** Meeting reminders
|
|
33
|
+
- **Through the day — Nudges.** Meeting reminders, hourly background checks for the things you care about (eval results, PR review requests, new mail). DMs only when there's something worth your attention.
|
|
34
34
|
- **Evening — Review.** Aitne writes a daily journal: what got done, what slipped, one observation about the week.
|
|
35
35
|
|
|
36
36
|
You steer it through natural-language DMs ("skip morning routine on Sundays", "ping me when the overnight job finishes") and bang commands (`!cost`, `!ask`, `!ingest`).
|
|
@@ -226,10 +226,10 @@ The router fails over to a configured fallback automatically on `BackendQuotaErr
|
|
|
226
226
|
|---|---|
|
|
227
227
|
| **Messaging** | Slack (Socket Mode), Telegram, Discord, WhatsApp (Baileys), Web dashboard |
|
|
228
228
|
| **Mail** | Gmail, Outlook, Yahoo, iCloud — unified API, classifier, local FTS5 search, IMAP IDLE |
|
|
229
|
-
| **Calendar** | Google Calendar, Outlook Calendar, iCloud (CalDAV)
|
|
229
|
+
| **Calendar** | Google Calendar, Outlook Calendar, iCloud (CalDAV) — free/busy slot-finding across accounts |
|
|
230
230
|
| **Knowledge** | Obsidian (CLI + vault watch), Notion (REST), custom MCP servers |
|
|
231
231
|
| **Code** | Local Git, GitHub (Octokit + webhooks) |
|
|
232
|
-
| **Lifestyle** | Auto-extracted receipts · travel bookings · Kindle highlights · voice transcription (Whisper, opt-in) |
|
|
232
|
+
| **Lifestyle** | Auto-extracted receipts · travel bookings · Kindle highlights · browser-history research clusters · voice transcription (Whisper, opt-in) |
|
|
233
233
|
|
|
234
234
|
Each integration runs in one of four modes:
|
|
235
235
|
|
|
@@ -250,7 +250,7 @@ Every mode change goes through a live capability probe and a per-key flip lock.
|
|
|
250
250
|
<summary><b>Time, calendar, travel</b></summary>
|
|
251
251
|
|
|
252
252
|
- Auto-generate `today.md` every morning with your real schedule
|
|
253
|
-
- 15-min approach reminders for every event
|
|
253
|
+
- 15-min approach reminders for every event
|
|
254
254
|
- Find a 30-min slot across multiple calendars — Aitne checks freebusy and replies with options
|
|
255
255
|
- Auto-extract flight, hotel, train confirmations from email into a structured travel timeline
|
|
256
256
|
</details>
|
|
@@ -265,6 +265,24 @@ Every mode change goes through a live capability probe and a per-key flip lock.
|
|
|
265
265
|
- IMAP IDLE for near-real-time delivery; PDF/image attachments are extracted and indexed
|
|
266
266
|
</details>
|
|
267
267
|
|
|
268
|
+
<details open>
|
|
269
|
+
<summary><b>Agents you can define and schedule</b></summary>
|
|
270
|
+
|
|
271
|
+
- Every routine is a first-class **Agent** — an identity with a YAML config + Markdown brief, editable at `:8322/agents`
|
|
272
|
+
- The built-in routines (morning routine, evening review, hourly check, …) ship as **System** agents — can't be deleted, but can be stopped with a warning
|
|
273
|
+
- Define your own recurring **work** agents (daily / weekly / monthly) — from the dashboard form or just by DMing the agent ("summarize my open PRs every Monday at 9")
|
|
274
|
+
- Pin a backend, model, and tier per agent; see per-agent cost, success rate, and run history; fire any agent on demand
|
|
275
|
+
- One-shot wake-ups ("remind me at 3pm"), pre-composed scheduled DMs, and recurring briefings — all quiet-hours-aware
|
|
276
|
+
</details>
|
|
277
|
+
|
|
278
|
+
<details>
|
|
279
|
+
<summary><b>Browser automation (managed Chromium)</b></summary>
|
|
280
|
+
|
|
281
|
+
- DM an open-ended browser task ("check my order status", "fill out this form") — a scoped sub-agent drives a managed Chromium session turn-by-turn, asking you to clarify mid-task and DMing back results + screenshots
|
|
282
|
+
- Egress guards stay on: RFC1918 / loopback / cloud-metadata IP blocking, a form-submit payment-path blocker, and single-owner scoping
|
|
283
|
+
- Purchase confirmation (the B-4 flow — DM-delivered single-use token + screenshot-first consent) is **experimental and default-off**; it requires explicit per-site dashboard opt-in
|
|
284
|
+
</details>
|
|
285
|
+
|
|
268
286
|
<details>
|
|
269
287
|
<summary><b>Knowledge: Obsidian, Notion, your own wiki</b></summary>
|
|
270
288
|
|
|
@@ -295,6 +313,7 @@ Every mode change goes through a live capability probe and a per-key flip lock.
|
|
|
295
313
|
- "I prefer concise replies — no preamble" — updates the agent's `character` field
|
|
296
314
|
- "Email me a summary every Friday at 5pm" — creates a recurring schedule
|
|
297
315
|
- "Switch to Codex for code reviews" — flips the per-process backend mapping
|
|
316
|
+
- Bang commands for instant control: `!stop` / `!start` (pause/resume autonomous work), `!close` (reset the DM session), `!cost`, `!report`, `!help` — and define your own `!commands` at `:8322/settings/commands`
|
|
298
317
|
- Every change is journaled to `agent_actions` — audit anything via `aitne audit`
|
|
299
318
|
</details>
|
|
300
319
|
|
|
@@ -358,7 +377,7 @@ Plus: localhost-only API, webhook HMAC verification, no automated financial tran
|
|
|
358
377
|
| `maxConcurrentSessions` (autonomous) | 3 | Hard semaphore |
|
|
359
378
|
| `maxReactiveSessions` (DMs) | 2 | Hard semaphore |
|
|
360
379
|
| `executeTimeoutMinutes` | 60 | Per-execute watchdog |
|
|
361
|
-
| `autonomousDailyCostCapUsd` | `null` | Priority-based skipping: `hourly_check` at 100%, `evening_review` at 150%, `morning_routine` at 200%. Reactive DMs are not gated. |
|
|
380
|
+
| `autonomousDailyCostCapUsd` | `null` | Priority-based skipping: `hourly_check` at 100%, `roadmap_refresh` at 120%, `evening_review` at 150%, `morning_routine` at 200%. Reactive DMs are not gated. |
|
|
362
381
|
| `autonomousMonthlyCostCapUsd` | `null` | Alert + warn surface |
|
|
363
382
|
| Per-ProcessKey `maxBudgetUsd` | per-row | Hard cap per execute |
|
|
364
383
|
|
|
@@ -368,6 +387,17 @@ Typical day for an active user: **~$0.50** (morning routine + briefing + 2× hou
|
|
|
368
387
|
|
|
369
388
|
## Operating Aitne
|
|
370
389
|
|
|
390
|
+
### Dashboard
|
|
391
|
+
|
|
392
|
+
The dashboard at `:8322` is a full local app, not just a settings panel:
|
|
393
|
+
|
|
394
|
+
- **`/chat`** — talk to any backend/model right in the browser, with per-session overrides
|
|
395
|
+
- **`/agents`** — define, schedule, and inspect your agents (above)
|
|
396
|
+
- **`/schedule`** + **`/activity`** — upcoming runs and the full conversation/action history
|
|
397
|
+
- **`/analytics`** + **`/health`** — cost/usage trends and integration-mode health
|
|
398
|
+
- **`/connections/*`** — wire up calendar, mail, repositories, messaging, MCP, routines
|
|
399
|
+
- **`/settings/*`** — `models`, `backends`, `schedule`, `routines`, `processes`, `messaging`, `commands` (custom bang commands), `management`, and the experimental browser-history surfaces
|
|
400
|
+
|
|
371
401
|
### Lifecycle
|
|
372
402
|
|
|
373
403
|
| Command | What it does |
|
|
@@ -395,7 +425,7 @@ Typical day for an active user: **~$0.50** (morning routine + briefing + 2× hou
|
|
|
395
425
|
|
|
396
426
|
### Configuration
|
|
397
427
|
|
|
398
|
-
`.env` is **bootstrap-only** (`PA_DATA_DIR`, `PA_API_PORT`, `PA_DASHBOARD_PORT`, `PA_LOG_LEVEL`). Everything else — ~
|
|
428
|
+
`.env` is **bootstrap-only** (`PA_DATA_DIR`, `PA_API_PORT`, `PA_DASHBOARD_PORT`, `PA_LOG_LEVEL`). Everything else — ~130 runtime keys covering schedule, notifications, models, character, mail, voice, delegated mode — is editable from the dashboard at `:8322`, or via natural-language DMs to the agent.
|
|
399
429
|
|
|
400
430
|
---
|
|
401
431
|
|
|
@@ -26,7 +26,7 @@ ask_examples:
|
|
|
26
26
|
- What is dayBoundaryHour?
|
|
27
27
|
locale: en-US
|
|
28
28
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-06-07
|
|
30
30
|
keywords:
|
|
31
31
|
- day boundary
|
|
32
32
|
- 04:00
|
|
@@ -71,7 +71,7 @@ clean boundary before they start.
|
|
|
71
71
|
|
|
72
72
|
- **Agent day**: the 24-hour window starting at the configured day-boundary hour and ending at the same hour the next calendar day.
|
|
73
73
|
- **Day boundary**: the hour-of-day that starts the agent day. Configured via the `dayBoundaryHour` setting (default `4`, valid range `0`–`9`). Values above 9 are rejected — the boundary is intended for the small hours, not mid-day.
|
|
74
|
-
- **Day-stamped file**: any file whose name
|
|
74
|
+
- **Day-stamped file**: any file whose name carries a date (e.g. `journal/daily/2026-04-25.md` with a `YYYY-MM-DD` stamp, `journal/weekly/2026-W17.md` with an ISO `YYYY-Www` week slug). The stamp uses the agent-day boundary, not the calendar day.
|
|
75
75
|
|
|
76
76
|
## Concrete Examples
|
|
77
77
|
|
|
@@ -31,7 +31,7 @@ ask_examples:
|
|
|
31
31
|
- How does Gemini's per-day quota work?
|
|
32
32
|
locale: en-US
|
|
33
33
|
created: 2026-04-25
|
|
34
|
-
updated: 2026-
|
|
34
|
+
updated: 2026-06-07
|
|
35
35
|
keywords:
|
|
36
36
|
- cost
|
|
37
37
|
- budget
|
|
@@ -196,8 +196,9 @@ register an API key on `/settings/models`.
|
|
|
196
196
|
|
|
197
197
|
In the dashboard:
|
|
198
198
|
|
|
199
|
-
- **Analytics** (`/analytics`) rolls
|
|
200
|
-
|
|
199
|
+
- **Analytics** (`/analytics`) rolls cost by backend, by ProcessKey
|
|
200
|
+
(event type), by model, and over daily / weekly / monthly periods,
|
|
201
|
+
plus a today total. When a backend is running on the
|
|
201
202
|
subscription fallback, remaining-window math is shown there too.
|
|
202
203
|
- **Sidebar footer** shows the day's running total.
|
|
203
204
|
- **Activity** event details include the per-execute cost.
|
|
@@ -36,7 +36,7 @@ ask_examples:
|
|
|
36
36
|
- Why don't I see a SKILL.md for Gmail in my Codex session?
|
|
37
37
|
locale: en-US
|
|
38
38
|
created: 2026-04-26
|
|
39
|
-
updated: 2026-
|
|
39
|
+
updated: 2026-06-07
|
|
40
40
|
keywords:
|
|
41
41
|
- delegated mode
|
|
42
42
|
- direct mode
|
|
@@ -100,8 +100,8 @@ backend is the same as the integration's `delegatedBackend`:
|
|
|
100
100
|
for the task-mode body shape.
|
|
101
101
|
|
|
102
102
|
`native` has no sub-cases. The integration's `nativeBackend` must equal
|
|
103
|
-
the main DM backend — `
|
|
104
|
-
`native` rows to `disabled`. From the agent's call-site view, `native`
|
|
103
|
+
the main DM backend — `cascadeNativeBindingsOnMainSwitch` cascades
|
|
104
|
+
unmatched `native` rows to `disabled`. From the agent's call-site view, `native`
|
|
105
105
|
is indistinguishable from `delegated` same-backend (both are in-session
|
|
106
106
|
MCP); the difference is who polls (no one, for `native`).
|
|
107
107
|
|
|
@@ -152,8 +152,8 @@ that case the daemon spawns the other backend per call.
|
|
|
152
152
|
- **`nativeBackend`** — when native, which backend's connector is
|
|
153
153
|
expected. Must equal the main DM backend; changing the main backend
|
|
154
154
|
cascades unmatched `native` rows to `disabled` (the cascade is
|
|
155
|
-
|
|
156
|
-
`PUT /api/backends/main`).
|
|
155
|
+
performed by `cascadeNativeBindingsOnMainSwitch` from the
|
|
156
|
+
`PUT /api/backends/main` handler).
|
|
157
157
|
- **Same-backend** — DM session backend matches `delegatedBackend` /
|
|
158
158
|
`nativeBackend`. The daemon is not in the loop; the agent calls
|
|
159
159
|
native MCP directly. No skill body is materialized for the
|
|
@@ -29,7 +29,7 @@ ask_examples:
|
|
|
29
29
|
- How does the daemon prevent the agent from writing to disk directly?
|
|
30
30
|
locale: en-US
|
|
31
31
|
created: 2026-04-25
|
|
32
|
-
updated: 2026-
|
|
32
|
+
updated: 2026-06-07
|
|
33
33
|
keywords:
|
|
34
34
|
- context
|
|
35
35
|
- markdown
|
|
@@ -153,8 +153,11 @@ curl -X PATCH http://localhost:8321/api/context/state/today.md \
|
|
|
153
153
|
synthesized by the morning routine.
|
|
154
154
|
- `plans/projects/<slug>.md` — one file per active project.
|
|
155
155
|
- `policies/management.md` — the umbrella registry: Source-of-Truth
|
|
156
|
-
bindings, Managed Tasks, an Active Policies summary.
|
|
157
|
-
|
|
156
|
+
bindings, Managed Tasks, an Active Policies summary. Injected as
|
|
157
|
+
`<management_rules>` on the wide-path flows (DMs, mentions, the
|
|
158
|
+
morning routine); a few narrow routines (the journal stage, hourly
|
|
159
|
+
check, today refresh, observer events, scheduled tasks) opt out to
|
|
160
|
+
save budget.
|
|
158
161
|
- `policies/management-captures/<slug>.md` — one file per durable management rule
|
|
159
162
|
("from now on, do X"). The daemon auto-maintains a slug index at
|
|
160
163
|
`policies/management-captures/_index.md`.
|
|
@@ -34,7 +34,7 @@ ask_examples:
|
|
|
34
34
|
- Where do I see what the agent has been doing?
|
|
35
35
|
locale: en-US
|
|
36
36
|
created: 2026-04-26
|
|
37
|
-
updated: 2026-
|
|
37
|
+
updated: 2026-06-07
|
|
38
38
|
keywords:
|
|
39
39
|
- deniedTools
|
|
40
40
|
- safety floor
|
|
@@ -74,8 +74,8 @@ The risk classifier has two write tiers, not three:
|
|
|
74
74
|
delete event, …) and for normal context writes.
|
|
75
75
|
- **Approve** — agent must present a Bearer token issued through the
|
|
76
76
|
dashboard. Reserved for posture-changing daemon configuration:
|
|
77
|
-
flipping integration modes, swapping the main backend,
|
|
78
|
-
backends, wiping config.
|
|
77
|
+
flipping integration modes, swapping the main backend, enabling/
|
|
78
|
+
disabling backends, wiping config.
|
|
79
79
|
- (`ReadSensitive` is the third tier, but it gates *reads* of personal
|
|
80
80
|
data — orthogonal to write notifications. It is unchanged.)
|
|
81
81
|
|
|
@@ -134,20 +134,22 @@ of "report to me" events. Information about what the agent did is
|
|
|
134
134
|
`deniedTools` server-side — see the *Where the Defenses Apply* table
|
|
135
135
|
below for the exact mechanism.
|
|
136
136
|
- **`agent_actions`** — SQLite table of every agent action. Direct +
|
|
137
|
-
cross-backend rows are full-fidelity (
|
|
137
|
+
cross-backend rows are full-fidelity (cross-backend task-mode writes
|
|
138
138
|
emit `delegated_task.run` / `delegated_task.exec` /
|
|
139
|
-
`delegated_task.tool_step`;
|
|
140
|
-
|
|
139
|
+
`delegated_task.tool_step`; the `delegated_proxy.invoke` row type
|
|
140
|
+
carries both legacy rows from the retired RPC `/invoke` route and
|
|
141
|
+
the hourly drift-detection probes still written by the
|
|
142
|
+
delegated-sync worker). Same-backend native MCP rolls up to
|
|
141
143
|
`mcp_tool_calls` + the parent session row.
|
|
142
144
|
|
|
143
145
|
## Where the Defenses Apply
|
|
144
146
|
|
|
145
147
|
| Path | Enforcement |
|
|
146
148
|
|---|---|
|
|
147
|
-
| Direct mode (`/api/mail/*`, `/api/calendar/*`) |
|
|
149
|
+
| Direct mode (`/api/mail/*`, `/api/calendar/*`) | `deniedTools` is **inert** — the daemon runs the poller and the agent calls the daemon API through its direct-mode skill, so there is no per-tool deny surface. The list only persists for a future flip to delegated mode. Direct-mode safety comes from the route-level risk tiers (Approve gates posture-changing writes) and the always-disallowed layer, not `deniedTools`. |
|
|
148
150
|
| Cross-backend (`/api/integrations/:key/exec`) | Invoker filters the integration's `capabilityTools` through `deniedTools` before spawning the delegated backend so the task-mode planner can only pick from the allowed surface. A fully-denied surface short-circuits with `errorClass: "denied_tool"`; individual tool denials surface as the same error from the invoker's `resolveAllowedToolPatterns`. |
|
|
149
151
|
| Same-backend / native MCP — Claude | `collectSessionDeniedTools` merges the deny patterns into the SDK's `disallowedTools` array at `query()` time. Same code path covers both delegated same-backend and native — they share the in-session MCP surface. |
|
|
150
|
-
| Same-backend / native MCP — Gemini | Patterns are folded into `generateAdminPolicy`'s TOML deny rules (priority
|
|
152
|
+
| Same-backend / native MCP — Gemini | Patterns are folded into `generateAdminPolicy`'s TOML deny rules (priority 936 — above the registry-driven native allows, below the absolute-block layer). |
|
|
151
153
|
| Same-backend / native MCP — Codex | **Prose-only.** Codex bundles its connector apps into the binary; there is no per-tool deny config and the workspace-write sandbox does not match MCP tool calls. Skill prose lists the denied tools explicitly. Operators who require strict deny on Gmail / Calendar should pick a non-Codex DM backend or route those integrations through `delegated` cross-backend mode (which IS deny-enforced at `/exec`). |
|
|
152
154
|
|
|
153
155
|
## Recommended Starter Denylists
|
|
@@ -224,7 +226,7 @@ When the operator asks "what did you do yesterday?" / "have you sent
|
|
|
224
226
|
anything from Gmail this week?" the agent calls:
|
|
225
227
|
|
|
226
228
|
```bash
|
|
227
|
-
curl 'http://localhost:8321/api/agent/actions?since=2026-04-25T00:00:00Z&kind=delegated_task.
|
|
229
|
+
curl 'http://localhost:8321/api/agent/actions?since=2026-04-25T00:00:00Z&kind=delegated_task.exec&kind=delegated_task.tool_step&limit=50'
|
|
228
230
|
```
|
|
229
231
|
|
|
230
232
|
and answers in conversation. The endpoint:
|
|
@@ -241,12 +243,12 @@ and answers in conversation. The endpoint:
|
|
|
241
243
|
the per-call detail lives in `mcp_tool_calls`, which this endpoint
|
|
242
244
|
does not join — query it separately if you need step-level fidelity.
|
|
243
245
|
|
|
244
|
-
Common `kind` values for the cross-backend proxy: `delegated_task.
|
|
245
|
-
(one row per `/exec` call), `delegated_task.
|
|
246
|
-
|
|
247
|
-
inside the task). The
|
|
248
|
-
|
|
249
|
-
that
|
|
246
|
+
Common `kind` values for the cross-backend proxy: `delegated_task.exec`
|
|
247
|
+
(one header row per `/exec` call), `delegated_task.run` (one header row
|
|
248
|
+
per generic `/run` call), `delegated_task.tool_step` (each individual
|
|
249
|
+
tool call inside the task). The `delegated_proxy.invoke` rows cover the
|
|
250
|
+
retired RPC `/invoke` route plus the delegated-sync worker's hourly
|
|
251
|
+
drift-detection probes — include them when you want that surface too.
|
|
250
252
|
|
|
251
253
|
This **replaces** the rejected daily-digest pattern. Reasons:
|
|
252
254
|
|
|
@@ -269,7 +271,8 @@ Approve still gates:
|
|
|
269
271
|
|
|
270
272
|
- `PATCH /api/integrations/:key` — mode / `delegatedBackend` /
|
|
271
273
|
`deniedTools` changes.
|
|
272
|
-
- `PUT /api/backends/main`, `
|
|
274
|
+
- `PUT /api/backends/main`, `POST /api/backends/:id/enable`,
|
|
275
|
+
`POST /api/backends/:id/disable`.
|
|
273
276
|
- `PATCH /api/config` for fields that wipe protections.
|
|
274
277
|
- `/api/system/*` — config reset, history purge, factory reset.
|
|
275
278
|
|
|
@@ -28,7 +28,7 @@ ask_examples:
|
|
|
28
28
|
- Where do skill overlays live?
|
|
29
29
|
locale: en-US
|
|
30
30
|
created: 2026-04-25
|
|
31
|
-
updated: 2026-
|
|
31
|
+
updated: 2026-06-07
|
|
32
32
|
keywords:
|
|
33
33
|
- SKILL.md
|
|
34
34
|
- allowed-tools
|
|
@@ -74,7 +74,7 @@ The agent runs against a real machine. Without scoped permissions, a
|
|
|
74
74
|
"please summarize my mail" turn could in principle invoke `Bash(rm)`,
|
|
75
75
|
post to your social accounts, or rewrite arbitrary files. Skills fix
|
|
76
76
|
that by making the available toolset task-shaped: the morning routine
|
|
77
|
-
loads the
|
|
77
|
+
loads the context/today/observations/schedule skills; a docs question
|
|
78
78
|
loads only `docs-search`. Tools outside the allow-list aren't even
|
|
79
79
|
visible to the model.
|
|
80
80
|
|
|
@@ -12,9 +12,10 @@ aliases:
|
|
|
12
12
|
category: features
|
|
13
13
|
summary: |
|
|
14
14
|
Local-only poller that reads the browser's own SQLite databases
|
|
15
|
-
(Chrome /
|
|
16
|
-
derives research clusters from sustained reading
|
|
17
|
-
surfaces what you keep refreshing. Nothing leaves the
|
|
15
|
+
(Chrome / Chromium / Edge / Brave / Comet / Atlas), records visits as
|
|
16
|
+
observations, derives research clusters from sustained reading
|
|
17
|
+
patterns, and surfaces what you keep refreshing. Nothing leaves the
|
|
18
|
+
daemon.
|
|
18
19
|
section: integrations
|
|
19
20
|
tags:
|
|
20
21
|
- integrations
|
|
@@ -31,7 +32,7 @@ ask_examples:
|
|
|
31
32
|
- How do I opt out of browser history?
|
|
32
33
|
locale: en-US
|
|
33
34
|
created: 2026-05-22
|
|
34
|
-
updated: 2026-
|
|
35
|
+
updated: 2026-06-07
|
|
35
36
|
keywords:
|
|
36
37
|
- browser history
|
|
37
38
|
- browser history poller
|
|
@@ -74,9 +75,9 @@ api_endpoints:
|
|
|
74
75
|
|
|
75
76
|
# Browser History
|
|
76
77
|
|
|
77
|
-
Aitne can read the SQLite history databases that Chrome,
|
|
78
|
-
|
|
79
|
-
categories, and use the result to notice what you've been
|
|
78
|
+
Aitne can read the SQLite history databases that Chrome, Chromium,
|
|
79
|
+
Edge, Brave, Comet, and Atlas already maintain on disk, classify visits
|
|
80
|
+
into categories, and use the result to notice what you've been
|
|
80
81
|
researching, what you've been refreshing, and what comparison-shopping
|
|
81
82
|
windows you're in. Everything stays local — no URLs, titles, or
|
|
82
83
|
clicks leave the daemon.
|
|
@@ -122,7 +123,7 @@ clicks leave the daemon.
|
|
|
122
123
|
enable / disable each detected browser independently and override
|
|
123
124
|
the DB path for atypical installs.
|
|
124
125
|
- **Per-category gate.** `browserHistoryCategories` controls which
|
|
125
|
-
visit categories (research / shopping /
|
|
126
|
+
visit categories (research / shopping / news / dev / entertainment / …) get
|
|
126
127
|
ingested. Categories you exclude are dropped at ingest time, not
|
|
127
128
|
filtered later.
|
|
128
129
|
- **Retention.** `browserHistoryRetentionDays` (visits) and
|
|
@@ -33,7 +33,7 @@ ask_examples:
|
|
|
33
33
|
- Which model handles detected calendar changes?
|
|
34
34
|
locale: en-US
|
|
35
35
|
created: 2026-04-25
|
|
36
|
-
updated: 2026-
|
|
36
|
+
updated: 2026-06-07
|
|
37
37
|
keywords:
|
|
38
38
|
- calendar
|
|
39
39
|
- google calendar
|
|
@@ -68,9 +68,9 @@ process_keys:
|
|
|
68
68
|
|
|
69
69
|
# Calendar
|
|
70
70
|
|
|
71
|
-
Aitne pulls events from one or more calendars (Google Calendar
|
|
72
|
-
|
|
73
|
-
DM you ahead of meetings that matter.
|
|
71
|
+
Aitne pulls events from one or more calendars (Google Calendar,
|
|
72
|
+
Outlook Calendar, and Apple Calendar) so it can build today's plan
|
|
73
|
+
around them and DM you ahead of meetings that matter.
|
|
74
74
|
|
|
75
75
|
## What It Does
|
|
76
76
|
|
|
@@ -27,7 +27,7 @@ ask_examples:
|
|
|
27
27
|
- How do I add a second mail account?
|
|
28
28
|
locale: en-US
|
|
29
29
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-06-07
|
|
31
31
|
keywords:
|
|
32
32
|
- mail
|
|
33
33
|
- gmail
|
|
@@ -118,7 +118,8 @@ mode lifecycle.
|
|
|
118
118
|
|
|
119
119
|
## What It Outputs
|
|
120
120
|
|
|
121
|
-
- New threads land in the local `
|
|
121
|
+
- New threads land in the local `mail_messages_index` table
|
|
122
|
+
(FTS-indexed via `fts_mail_messages`).
|
|
122
123
|
- Classification labels are written via the provider API.
|
|
123
124
|
- A short "mail" section in `state/today.md` when items qualified.
|
|
124
125
|
|
|
@@ -46,7 +46,7 @@ ask_examples:
|
|
|
46
46
|
- How much does one Architecture refresh cost?
|
|
47
47
|
locale: en-US
|
|
48
48
|
created: 2026-05-05
|
|
49
|
-
updated: 2026-
|
|
49
|
+
updated: 2026-06-07
|
|
50
50
|
keywords:
|
|
51
51
|
- my life
|
|
52
52
|
- git
|
|
@@ -110,7 +110,7 @@ per repo (all open by default so the controls are visible at a glance):
|
|
|
110
110
|
2. **Triggers** — fire when matching Git or GitHub events arrive on
|
|
111
111
|
this repository. Triggers run **alongside** the project-wide
|
|
112
112
|
task-flow defaults, not in place of them. Each trigger has a
|
|
113
|
-
workdir mode (`local-clone` or `
|
|
113
|
+
workdir mode (`local-clone` or `temp`); local-clone triggers
|
|
114
114
|
require the repository to have a `localPath`.
|
|
115
115
|
3. **Daily git management** — opt-in per repo. Enabling it does three
|
|
116
116
|
distinct kinds of work, on different cadences:
|
|
@@ -272,7 +272,7 @@ repository has a `localPath`:
|
|
|
272
272
|
- **Triggers** with `workdirMode: "local-clone"` require a `localPath`
|
|
273
273
|
on the parent repository (enforced when the trigger is created and
|
|
274
274
|
again if you try to clear `localPath` while such a trigger exists).
|
|
275
|
-
Triggers with `workdirMode: "
|
|
275
|
+
Triggers with `workdirMode: "temp"` work without a local clone.
|
|
276
276
|
- **Daily git management** is **local-clone-bound for v1**. The
|
|
277
277
|
toggle is disabled and the dashboard surfaces "No local clone — link
|
|
278
278
|
one to enable this feature." Internally the
|
|
@@ -26,7 +26,7 @@ ask_examples:
|
|
|
26
26
|
- Where do reading-list items get stored?
|
|
27
27
|
locale: en-US
|
|
28
28
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
29
|
+
updated: 2026-06-07
|
|
30
30
|
keywords:
|
|
31
31
|
- reading
|
|
32
32
|
- books
|
|
@@ -65,10 +65,13 @@ at `/reading`.
|
|
|
65
65
|
"Export Notebook" email.
|
|
66
66
|
- **List** the library on `/reading` or via `GET /api/books`
|
|
67
67
|
(filterable by `status` and `source`, paginated to 200 rows per call).
|
|
68
|
-
- **Mark complete or abandoned** —
|
|
69
|
-
`PATCH /api/books/:id`.
|
|
70
|
-
`
|
|
71
|
-
|
|
68
|
+
- **Mark complete or abandoned** — an existing row is updated via
|
|
69
|
+
`PATCH /api/books/:id`. This is an **Approve-tier** write that requires
|
|
70
|
+
an operator `Authorization: Bearer` token, so it is driven from the
|
|
71
|
+
dashboard, not autonomously by the agent (an unauthenticated agent curl
|
|
72
|
+
is rejected with **401** before the handler runs). Setting `status` to
|
|
73
|
+
`completed` stamps `completed_at` automatically; you can also set a 1–5
|
|
74
|
+
`rating` or `notes`.
|
|
72
75
|
- **Recommend** from the list during reactive turns, and refresh the
|
|
73
76
|
reading-taste profile during weekly and monthly reviews.
|
|
74
77
|
|
|
@@ -111,9 +114,13 @@ drives the list shape. The reading skill loads in two situations:
|
|
|
111
114
|
network error there surfaces in the audit log even when the chat reply
|
|
112
115
|
looked fine. A common cause is pasting a partial or non-Kindle
|
|
113
116
|
clippings file, which yields zero parsed books.
|
|
114
|
-
- **An edit that didn't stick**: `PATCH /api/books/:id`
|
|
115
|
-
|
|
116
|
-
|
|
117
|
+
- **An edit that didn't stick**: `PATCH /api/books/:id` is Approve-tier,
|
|
118
|
+
so a request without a valid operator Bearer token is rejected with 401
|
|
119
|
+
before the handler runs — book status/rating/notes corrections are made
|
|
120
|
+
from the dashboard, not by an autonomous agent. Once authenticated, it
|
|
121
|
+
returns 404 if the id doesn't exist and 400 for an invalid `status`
|
|
122
|
+
(only `reading`, `completed`, `abandoned`) or an out-of-range `rating`
|
|
123
|
+
(must be 1–5).
|
|
117
124
|
|
|
118
125
|
## Related
|
|
119
126
|
|
|
@@ -27,7 +27,7 @@ ask_examples:
|
|
|
27
27
|
- Where are my travel bookings stored?
|
|
28
28
|
locale: en-US
|
|
29
29
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-06-07
|
|
31
31
|
keywords:
|
|
32
32
|
- flight
|
|
33
33
|
- hotel
|
|
@@ -99,8 +99,9 @@ classifier do the rest. The flow is:
|
|
|
99
99
|
|
|
100
100
|
## API
|
|
101
101
|
|
|
102
|
-
Read-only and status-update access (read endpoints are
|
|
103
|
-
PATCH endpoint follows the standard
|
|
102
|
+
Read-only and status-update access (read endpoints are read-sensitive —
|
|
103
|
+
they expose personal travel data; the PATCH endpoint follows the standard
|
|
104
|
+
write-safety tier and requires approval):
|
|
104
105
|
|
|
105
106
|
```bash
|
|
106
107
|
# All bookings (optionally filter by type/status/date range)
|
|
@@ -27,7 +27,7 @@ ask_examples:
|
|
|
27
27
|
- Why did journal/agent.md stop growing?
|
|
28
28
|
locale: en-US
|
|
29
29
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
30
|
+
updated: 2026-06-07
|
|
31
31
|
keywords:
|
|
32
32
|
- journal
|
|
33
33
|
- retros
|
|
@@ -38,6 +38,7 @@ related:
|
|
|
38
38
|
- features/routines/morning-routine
|
|
39
39
|
- features/routines/evening-review
|
|
40
40
|
- features/routines/weekly-review
|
|
41
|
+
- features/memory-files/agent-lessons
|
|
41
42
|
- features/operations/activity-and-conversations
|
|
42
43
|
- concepts/memory-model
|
|
43
44
|
process_keys:
|
|
@@ -47,7 +48,7 @@ process_keys:
|
|
|
47
48
|
context_files:
|
|
48
49
|
- journal/agent.md
|
|
49
50
|
ui_anchors:
|
|
50
|
-
- /
|
|
51
|
+
- /knowledge?tab=context-files
|
|
51
52
|
- /settings/journal
|
|
52
53
|
---
|
|
53
54
|
|
|
@@ -68,12 +69,17 @@ of *what happened* — the journal is reflection-shaped: it captures
|
|
|
68
69
|
|
|
69
70
|
Each entry carries:
|
|
70
71
|
|
|
71
|
-
- A
|
|
72
|
+
- A dated heading — the morning routine stamps a
|
|
73
|
+
`## YYYY-MM-DD morning routine` H2; the weekly and monthly retros add
|
|
74
|
+
a `> Appended at: YYYY-MM-DD HH:MM` line under their section header.
|
|
72
75
|
- A short context line — which routine or conversation prompted it.
|
|
73
76
|
- The reflection itself.
|
|
74
77
|
|
|
75
|
-
The file lives at `~/.personal-agent/context/journal/agent.md
|
|
76
|
-
|
|
78
|
+
The file lives at `~/.personal-agent/context/journal/agent.md`. The
|
|
79
|
+
day-to-day morning and ad-hoc entries accumulate indefinitely; the
|
|
80
|
+
daily retention rollup keeps only a rolling window of the structured
|
|
81
|
+
retros (the most recent 12 `## Weekly` and 24 `## Monthly` sections),
|
|
82
|
+
pruning older ones. Later routines read it back to look for patterns.
|
|
77
83
|
|
|
78
84
|
## Who writes it, and when
|
|
79
85
|
|
|
@@ -127,10 +133,17 @@ cannot destroy history. Writes go through the daemon context API
|
|
|
127
133
|
|
|
128
134
|
## Where in the dashboard
|
|
129
135
|
|
|
130
|
-
- **
|
|
131
|
-
of the file
|
|
132
|
-
|
|
133
|
-
|
|
136
|
+
- **Knowledge → Context Files** (`/knowledge?tab=context-files`) is the
|
|
137
|
+
read view of the file — `journal/agent` is listed among the top-level
|
|
138
|
+
context files. It is flagged as sensitive: entering edit mode surfaces
|
|
139
|
+
a "deliberately pruning noise" warning before you change anything.
|
|
140
|
+
- **Settings → Journal** (`/settings/journal`) does *not* edit this
|
|
141
|
+
file. It is a two-tab editor for the daily-journal rule files —
|
|
142
|
+
`policies/journal-format.md` (sections, voice, frontmatter) and
|
|
143
|
+
`policies/journal-export.md` (redaction / inclusion rules) — both of
|
|
144
|
+
which the morning routine reads when synthesizing `daily/YYYY-MM-DD.md`,
|
|
145
|
+
not `journal/agent.md`. `/connections/journal` is a compatibility alias
|
|
146
|
+
that redirects here.
|
|
134
147
|
|
|
135
148
|
## Configuration
|
|
136
149
|
|
|
@@ -147,9 +160,12 @@ agent's own writes, not to you editing the file on disk.
|
|
|
147
160
|
[Evening Review](../routines/evening-review.md).
|
|
148
161
|
- **Entries look duplicated.** This usually means a routine retried
|
|
149
162
|
after a backend fallback. Because writes are append-only, a retry
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
163
|
+
re-appends rather than overwrites — the weekly review deliberately
|
|
164
|
+
appends a fresh section instead of editing in place. The daemon's
|
|
165
|
+
daily retention rollup (`rollupAgentJournal`) collapses duplicate
|
|
166
|
+
`## Weekly YYYY-Www` / `## Monthly YYYY-MM` keys last-write-wins
|
|
167
|
+
within 24 hours, so duplicates self-heal; a manual prune is fine but
|
|
168
|
+
rarely needed.
|
|
153
169
|
|
|
154
170
|
## Related
|
|
155
171
|
|
|
@@ -162,5 +178,7 @@ agent's own writes, not to you editing the file on disk.
|
|
|
162
178
|
- [Activity & Conversations](../operations/activity-and-conversations.md)
|
|
163
179
|
— the action-shaped audit log, distinct from the reflection-shaped
|
|
164
180
|
journal.
|
|
181
|
+
- [agent lessons](agent-lessons.md) — the directive-shaped learned-behavior
|
|
182
|
+
stores, distinct from this reflection-shaped diary.
|
|
165
183
|
- [Memory model](../../concepts/memory-model.md) — how the journal fits
|
|
166
184
|
the wider context vault.
|