@aitne-sh/aitne 0.1.7 → 0.1.9
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 +256 -833
- package/agent-assets/agent-profiles/_safety.md +52 -20
- package/agent-assets/agent-profiles/browser-task.md +108 -0
- package/agent-assets/agent-profiles/conversational.md +3 -3
- package/agent-assets/agent-profiles/profile-importer.md +3 -3
- package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
- package/agent-assets/agent-profiles/routine.md +4 -3
- package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
- package/agent-assets/agents/evening-review/agent.md +53 -0
- package/agent-assets/agents/hourly-check/agent.md +62 -0
- package/agent-assets/agents/monthly-review/agent.md +55 -0
- package/agent-assets/agents/morning-routine/agent.md +78 -0
- package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
- package/agent-assets/agents/skill-curation/agent.md +52 -0
- package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
- package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
- package/agent-assets/agents/weekly-review/agent.md +51 -0
- package/agent-assets/docs/concepts/agent-day.md +18 -11
- package/agent-assets/docs/concepts/auth-health.md +56 -10
- package/agent-assets/docs/concepts/backends-and-tiers.md +110 -41
- package/agent-assets/docs/concepts/costs-and-quotas.md +74 -19
- package/agent-assets/docs/concepts/delegated-mode.md +193 -75
- package/agent-assets/docs/concepts/memory-model.md +79 -34
- package/agent-assets/docs/concepts/observations.md +61 -11
- package/agent-assets/docs/concepts/process-keys.md +66 -17
- package/agent-assets/docs/concepts/routines.md +77 -32
- package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
- package/agent-assets/docs/concepts/safety-model.md +62 -37
- package/agent-assets/docs/concepts/skills.md +38 -17
- package/agent-assets/docs/features/integrations/browser-history.md +195 -0
- package/agent-assets/docs/features/integrations/calendar.md +40 -30
- package/agent-assets/docs/features/integrations/git.md +20 -9
- package/agent-assets/docs/features/integrations/github.md +93 -35
- package/agent-assets/docs/features/integrations/mail.md +60 -17
- package/agent-assets/docs/features/integrations/notion.md +51 -11
- package/agent-assets/docs/features/integrations/obsidian.md +35 -7
- package/agent-assets/docs/features/lifestyle/git.md +45 -44
- package/agent-assets/docs/features/lifestyle/reading.md +50 -22
- package/agent-assets/docs/features/lifestyle/receipts.md +66 -21
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +91 -14
- package/agent-assets/docs/features/memory-files/agent-journal.md +111 -50
- package/agent-assets/docs/features/memory-files/projects.md +75 -15
- package/agent-assets/docs/features/memory-files/roadmap.md +55 -10
- package/agent-assets/docs/features/memory-files/schedule.md +113 -70
- package/agent-assets/docs/features/memory-files/today.md +47 -21
- package/agent-assets/docs/features/memory-files/user-profile.md +67 -31
- package/agent-assets/docs/features/messaging/bang-commands.md +115 -28
- package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
- package/agent-assets/docs/features/messaging/discord.md +46 -4
- package/agent-assets/docs/features/messaging/overview.md +40 -19
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
- package/agent-assets/docs/features/messaging/slack.md +79 -14
- package/agent-assets/docs/features/messaging/telegram.md +25 -6
- package/agent-assets/docs/features/messaging/whatsapp.md +79 -14
- package/agent-assets/docs/features/operations/activity-and-conversations.md +45 -16
- package/agent-assets/docs/features/operations/approvals.md +53 -15
- package/agent-assets/docs/features/operations/backend-routing.md +75 -16
- package/agent-assets/docs/features/operations/cost-tracking.md +90 -17
- package/agent-assets/docs/features/operations/managed-chromium.md +221 -0
- package/agent-assets/docs/features/operations/notifications.md +58 -11
- package/agent-assets/docs/features/operations/quiet-hours.md +63 -40
- package/agent-assets/docs/features/operations/schedule-approaching.md +59 -16
- package/agent-assets/docs/features/routines/custom-routines.md +97 -23
- package/agent-assets/docs/features/routines/evening-review.md +75 -22
- package/agent-assets/docs/features/routines/hourly-check.md +150 -30
- package/agent-assets/docs/features/routines/morning-routine.md +60 -33
- package/agent-assets/docs/features/routines/weekly-review.md +65 -20
- package/agent-assets/docs/features/wiki/commands.md +37 -16
- package/agent-assets/docs/features/wiki/cost-and-approval.md +240 -0
- package/agent-assets/docs/features/wiki/dashboard.md +255 -0
- package/agent-assets/docs/features/wiki/overview.md +80 -12
- package/agent-assets/docs/features/wiki/search.md +248 -0
- package/agent-assets/docs/features/wiki/workspaces.md +254 -0
- package/agent-assets/docs/getting-started/01-what-is-this.md +64 -32
- package/agent-assets/docs/getting-started/02-first-steps.md +28 -10
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +42 -21
- package/agent-assets/docs/getting-started/04-first-day.md +52 -20
- package/agent-assets/docs/glossary.md +285 -21
- package/agent-assets/docs/guides/add-a-custom-routine.md +74 -22
- package/agent-assets/docs/guides/backup-and-restore.md +92 -14
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +62 -25
- package/agent-assets/docs/guides/build-your-wiki.md +33 -6
- package/agent-assets/docs/guides/change-which-model-handles-x.md +70 -9
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +80 -15
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +32 -9
- package/agent-assets/docs/guides/import-knowledge-file.md +60 -39
- package/agent-assets/docs/guides/install-and-run.md +64 -19
- package/agent-assets/docs/guides/maintain-wiki-health.md +41 -10
- package/agent-assets/docs/guides/migrate-machines.md +86 -18
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +119 -59
- package/agent-assets/docs/guides/pause-the-agent.md +71 -22
- package/agent-assets/docs/guides/reinstall-cleanly.md +102 -17
- package/agent-assets/docs/guides/setup-wizard.md +126 -56
- package/agent-assets/docs/guides/switch-default-backend.md +72 -17
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +31 -10
- package/agent-assets/docs/reference/api.md +162 -23
- package/agent-assets/docs/reference/cli-commands.md +55 -15
- package/agent-assets/docs/reference/config.md +246 -39
- package/agent-assets/docs/reference/disallowed-tools.md +42 -10
- package/agent-assets/docs/reference/keyboard-shortcuts.md +47 -10
- package/agent-assets/docs/reference/knowledge-layout.md +620 -0
- package/agent-assets/docs/reference/process-keys.md +126 -20
- package/agent-assets/docs/reference/skills.md +62 -18
- package/agent-assets/docs/troubleshooting/auth-failed.md +53 -19
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +96 -22
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +94 -20
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +77 -22
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +87 -22
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +85 -21
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +36 -6
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +128 -51
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +33 -11
- package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/skill-curation/SKILL.md +2 -2
- package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
- package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
- package/agent-assets/skills/agent-actions/SKILL.md +122 -0
- package/agent-assets/skills/agent-create/SKILL.md +149 -0
- package/agent-assets/skills/attach/SKILL.md +3 -4
- package/agent-assets/skills/browser-history/SKILL.md +198 -0
- package/agent-assets/skills/browser-history-respond/SKILL.md +106 -0
- package/agent-assets/skills/browser-task/SKILL.md +169 -0
- package/agent-assets/skills/context/SKILL.md +45 -463
- package/agent-assets/skills/context/curation.json +2 -2
- package/agent-assets/skills/context/references/api.md +232 -0
- package/agent-assets/skills/context/references/required-frontmatter.md +73 -0
- package/agent-assets/skills/context/references/snapshot-files.md +103 -0
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +4 -4
- package/agent-assets/skills/docs-search/SKILL.md +17 -16
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +14 -26
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +14 -26
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +14 -26
- package/agent-assets/skills/external-services/SKILL.md +9 -262
- package/agent-assets/skills/external-services/SKILL.native.claude.md +6 -7
- package/agent-assets/skills/external-services/SKILL.native.codex.md +8 -9
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +5 -6
- package/agent-assets/skills/external-services/references/calendar-apple.md +97 -0
- package/agent-assets/skills/external-services/references/calendar-google.md +72 -0
- package/agent-assets/skills/external-services/references/calendar-outlook.md +36 -0
- package/agent-assets/skills/external-services/references/github.md +17 -0
- package/agent-assets/skills/external-services/references/obsidian.md +49 -0
- package/agent-assets/skills/external-services/references/skills-crud.md +27 -0
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +151 -0
- package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +93 -0
- package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +75 -0
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +15 -6
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +9 -5
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +9 -5
- package/agent-assets/skills/mail/SKILL.md +9 -114
- package/agent-assets/skills/mail/SKILL.native.claude.md +1 -1
- 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 +110 -0
- package/agent-assets/skills/mail/references/examples.md +70 -0
- package/agent-assets/skills/mail/references/providers.md +8 -8
- package/agent-assets/skills/managed-tasks/SKILL.md +472 -0
- package/agent-assets/skills/managed-tasks/references/errors.md +73 -0
- package/agent-assets/skills/managed-tasks/references/output-path.md +75 -0
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +86 -0
- package/agent-assets/skills/management-policy/SKILL.md +54 -125
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +101 -0
- package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
- package/agent-assets/skills/notify/SKILL.md +10 -82
- package/agent-assets/skills/notify/references/priority.md +65 -0
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +2 -2
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +2 -2
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +2 -2
- package/agent-assets/skills/notion/SKILL.md +6 -10
- package/agent-assets/skills/notion/SKILL.native.claude.md +11 -8
- package/agent-assets/skills/notion/SKILL.native.codex.md +10 -6
- package/agent-assets/skills/notion/SKILL.native.gemini.md +10 -6
- package/agent-assets/skills/observations/SKILL.md +25 -14
- package/agent-assets/skills/project-doc/SKILL.md +2 -6
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +7 -4
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +3 -3
- package/agent-assets/skills/reading/SKILL.md +12 -2
- package/agent-assets/skills/reading/references/reading-taste.md +2 -2
- package/agent-assets/skills/roadmap/SKILL.md +43 -141
- package/agent-assets/skills/roadmap/curation.json +1 -1
- package/agent-assets/skills/roadmap/references/api.md +100 -0
- package/agent-assets/skills/roadmap/references/cross-check.md +80 -0
- package/agent-assets/skills/roadmap/references/migration.md +56 -0
- package/agent-assets/skills/roadmap/references/preparation-timeline.md +2 -2
- package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
- package/agent-assets/skills/schedule/SKILL.md +76 -104
- package/agent-assets/skills/schedule/references/batch.md +93 -0
- package/agent-assets/skills/schedule/references/errors.md +217 -0
- package/agent-assets/skills/schedule/references/model-selection.md +96 -0
- package/agent-assets/skills/schedule/references/recurrence-rule.md +86 -0
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +59 -51
- package/agent-assets/skills/today/SKILL.md +32 -62
- package/agent-assets/skills/today/curation.json +3 -3
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +114 -0
- package/agent-assets/skills/today/seeds/section-shape.seed.json +1 -1
- package/agent-assets/skills/user-interview/SKILL.md +23 -67
- package/agent-assets/skills/user-interview/references/op-briefing.md +51 -0
- package/agent-assets/skills/user-interview/references/op-morning.md +59 -0
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +9 -1
- package/agent-assets/skills/user-profile/SKILL.md +54 -74
- package/agent-assets/skills/user-profile/curation.json +2 -2
- package/agent-assets/skills/user-profile/references/character-preferences.md +83 -0
- package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
- package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +30 -2
- package/agent-assets/skills/wiki/wiki-ask/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +4 -5
- package/agent-assets/skills/wiki/wiki-connect/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-graduate/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-lint/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-trace/SKILL.md +0 -1
- package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +0 -1
- package/agent-assets/system-prompts/routine-fetch-window.md +78 -0
- package/agent-assets/system-prompts/skill-index-instruction.md +26 -0
- package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +20 -11
- package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +18 -9
- package/agent-assets/task-flows/_partials/capture-user-info.md +24 -0
- package/agent-assets/task-flows/_partials/confirm-subflow.md +68 -0
- package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +35 -0
- package/agent-assets/task-flows/_partials/dm-intent.project.md +391 -0
- package/agent-assets/task-flows/_partials/mail-acquire.gmail.md +20 -11
- package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +18 -9
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +26 -15
- package/agent-assets/task-flows/browser_task.md +84 -0
- package/agent-assets/task-flows/github.assigned.md +1 -1
- package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
- package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
- package/agent-assets/task-flows/knowledge.import.md +15 -15
- package/agent-assets/task-flows/message.received.dm.md +20 -17
- package/agent-assets/task-flows/message.received.dm_first.md +11 -15
- package/agent-assets/task-flows/routine.custom.md +6 -4
- package/agent-assets/task-flows/routine.evening_review.md +46 -170
- package/agent-assets/task-flows/routine.fetch_window.md +19 -14
- package/agent-assets/task-flows/routine.hourly_check.md +27 -15
- package/agent-assets/task-flows/routine.hourly_check.triage.md +1 -1
- package/agent-assets/task-flows/routine.monthly_review.md +67 -25
- package/agent-assets/task-flows/routine.morning_routine_journal.md +135 -0
- package/agent-assets/task-flows/routine.morning_routine_today.md +673 -0
- package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
- package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
- package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
- package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
- package/agent-assets/task-flows/routine.roadmap_refresh.md +68 -23
- package/agent-assets/task-flows/routine.today_refresh.md +4 -4
- package/agent-assets/task-flows/routine.user_profile_sweep.md +19 -20
- package/agent-assets/task-flows/routine.weekly_review.md +370 -86
- package/agent-assets/task-flows/schedule.approaching.md +0 -1
- package/agent-assets/task-flows/scheduled.dm.md +13 -13
- package/agent-assets/task-flows/scheduled.task.md +9 -9
- package/agent-assets/task-flows/setup.initial.md +171 -251
- package/agent-assets/task-flows/setup.update.md +2 -2
- package/agent-assets/task-flows/wiki.ingest_url.md +1 -1
- package/agent-assets/templates/README.md +27 -20
- package/agent-assets/templates/_index.md +42 -26
- package/agent-assets/templates/_manifest.json +34 -99
- package/agent-assets/templates/{user → identity}/_index.md +1 -1
- package/agent-assets/templates/identity/expertise.md +9 -0
- package/agent-assets/templates/identity/goals.md +9 -0
- package/agent-assets/templates/identity/people.md +13 -0
- package/agent-assets/templates/identity/personal.md +9 -0
- package/agent-assets/templates/{user → identity}/profile.md +2 -2
- package/agent-assets/templates/identity/work.md +9 -0
- package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +2 -2
- package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
- package/agent-assets/templates/policies/_index.md +21 -0
- package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
- package/agent-assets/templates/policies/journal-format.md +168 -0
- package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
- package/agent-assets/templates/{rules → policies}/management.md +3 -3
- package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
- package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
- package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
- package/bin/aitne.mjs +21 -5
- package/package.json +5 -4
- package/scripts/commands/doctor.mjs +63 -5
- package/scripts/commands/run-now.mjs +187 -0
- package/scripts/commands/verify.mjs +264 -0
- package/scripts/lib/ports.d.mts +27 -0
- package/scripts/lib/ports.mjs +36 -0
- package/scripts/lib/read-api-token.mjs +176 -0
- package/scripts/start.mjs +2 -1
- package/agent-assets/docs/features/lifestyle/travel-time.md +0 -52
- package/agent-assets/docs/features/routines/monthly-review.md +0 -65
- package/agent-assets/skills/management-task-modify/SKILL.md +0 -203
- package/agent-assets/skills/management-task-register/SKILL.md +0 -330
- package/agent-assets/skills/management-task-stop/SKILL.md +0 -166
- package/agent-assets/skills/receipts/SKILL.md +0 -134
- package/agent-assets/skills/travel/SKILL.md +0 -132
- package/agent-assets/skills/travel-time/SKILL.md +0 -158
- package/agent-assets/task-flows/routine.morning_routine.md +0 -322
- package/agent-assets/task-flows/routine.morning_routine_initial.md +0 -204
- package/agent-assets/templates/context-index.md +0 -42
- package/agent-assets/templates/rules/_index.md +0 -19
- package/agent-assets/templates/rules/journal-format.md +0 -61
- package/agent-assets/templates/user/expertise.md +0 -7
- package/agent-assets/templates/user/goals.md +0 -7
- package/agent-assets/templates/user/people.md +0 -7
- package/agent-assets/templates/user/personal.md +0 -7
- package/agent-assets/templates/user/work.md +0 -7
- /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
- /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
- /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
- /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
- /package/agent-assets/templates/{today.md → state/today.md} +0 -0
|
@@ -22,7 +22,7 @@ redaction is performed in code by `packages/shared/src/secret-redaction.ts`.
|
|
|
22
22
|
## Context-specific (journal export)
|
|
23
23
|
|
|
24
24
|
When exporting `daily/*.md` to an external vault (B-005), additional
|
|
25
|
-
user-defined rules in `
|
|
25
|
+
user-defined rules in `policies/journal-export.md` are applied on top.
|
|
26
26
|
|
|
27
27
|
## Appearance in logs
|
|
28
28
|
|
|
@@ -17,4 +17,4 @@ I've added later via DM). All checks are treated equally.
|
|
|
17
17
|
| `evening.md` | evening | `routine.evening_review` |
|
|
18
18
|
| `weekly.md` | Friday | `routine.weekly_review` |
|
|
19
19
|
| `monthly.md` | month-end | `routine.monthly_review` |
|
|
20
|
-
| custom/<slug>.md | user-defined cron in `routines/custom/` | `routine.custom.<slug>` |
|
|
20
|
+
| custom/<slug>.md | user-defined cron in `policies/routines/custom/` | `routine.custom.<slug>` |
|
|
@@ -10,7 +10,7 @@ template_version: 1
|
|
|
10
10
|
## Checks
|
|
11
11
|
|
|
12
12
|
### Today → Handoff
|
|
13
|
-
- **Action**: scan `today.md` for open items and summarize them into
|
|
13
|
+
- **Action**: scan `state/today.md` for open items and summarize them into
|
|
14
14
|
`## Handoff` so tomorrow's morning routine can pick them up
|
|
15
15
|
|
|
16
16
|
### Tomorrow preview
|
|
@@ -18,5 +18,5 @@ template_version: 1
|
|
|
18
18
|
deadlines into `## Handoff`
|
|
19
19
|
|
|
20
20
|
### Journal tail
|
|
21
|
-
- **Action**: append a 1–2 sentence note to `agent
|
|
21
|
+
- **Action**: append a 1–2 sentence note to `journal/agent.md` describing
|
|
22
22
|
anything surprising the agent observed today
|
|
@@ -21,7 +21,7 @@ skipping any whose preconditions are not met.
|
|
|
21
21
|
|
|
22
22
|
### Upcoming schedule
|
|
23
23
|
- **Precondition**: always
|
|
24
|
-
- **Action**: scan `today.md` `## Agent Plan` for items in the next 60
|
|
24
|
+
- **Action**: scan `state/today.md` `## Agent Plan` for items in the next 60
|
|
25
25
|
min; ensure each has a `scheduled.task` row.
|
|
26
26
|
|
|
27
27
|
## Skip conditions (applied before any check)
|
|
@@ -17,9 +17,9 @@ Fires on the last calendar day of the month. Output target:
|
|
|
17
17
|
`daily/*.md` items
|
|
18
18
|
|
|
19
19
|
### Roadmap delta
|
|
20
|
-
- **Action**: compare current `roadmap.md` against the month's progress;
|
|
20
|
+
- **Action**: compare current `plans/roadmap.md` against the month's progress;
|
|
21
21
|
highlight completed + delayed items
|
|
22
22
|
|
|
23
23
|
### Habit + health snapshot
|
|
24
|
-
- **Action**: if the user logged health/habit data in `
|
|
24
|
+
- **Action**: if the user logged health/habit data in `identity/personal.md`,
|
|
25
25
|
surface month-over-month changes (opt-in only)
|
package/bin/aitne.mjs
CHANGED
|
@@ -8,6 +8,15 @@ import process from "node:process";
|
|
|
8
8
|
import { fileURLToPath } from "node:url";
|
|
9
9
|
import { ensureBuild } from "../scripts/run-node.mjs";
|
|
10
10
|
import { fetchHttpOk, openBrowser } from "../scripts/browser.mjs";
|
|
11
|
+
// Port defaults live in this plain-ESM module (NOT @aitne/shared, per the
|
|
12
|
+
// pre-build constraint noted below). scripts/lib/ ships in the published
|
|
13
|
+
// `files` list, so this import works in global installs too.
|
|
14
|
+
import {
|
|
15
|
+
DEFAULT_API_PORT,
|
|
16
|
+
DEFAULT_DASHBOARD_PORT,
|
|
17
|
+
resolveApiPort,
|
|
18
|
+
resolveDashboardPort,
|
|
19
|
+
} from "../scripts/lib/ports.mjs";
|
|
11
20
|
|
|
12
21
|
const IS_WINDOWS = process.platform === "win32";
|
|
13
22
|
|
|
@@ -55,8 +64,8 @@ const DAEMON_PID_FILE = path.join(PIDS_DIR, "daemon.pid");
|
|
|
55
64
|
const DASHBOARD_PID_FILE = path.join(PIDS_DIR, "dashboard.pid");
|
|
56
65
|
const DAEMON_LOG_FILE = path.join(DATA_DIR, "logs", "daemon.log");
|
|
57
66
|
const DASHBOARD_LOG_FILE = path.join(DATA_DIR, "logs", "dashboard.log");
|
|
58
|
-
const DAEMON_PORT =
|
|
59
|
-
const DASHBOARD_PORT =
|
|
67
|
+
const DAEMON_PORT = resolveApiPort();
|
|
68
|
+
const DASHBOARD_PORT = resolveDashboardPort();
|
|
60
69
|
|
|
61
70
|
const VERSION = JSON.parse(
|
|
62
71
|
fs.readFileSync(path.join(PROJECT_ROOT, "package.json"), "utf8"),
|
|
@@ -989,6 +998,11 @@ Operations:
|
|
|
989
998
|
open Open dashboard root in browser
|
|
990
999
|
doctor Diagnose install (Node, ports, keychain, CLIs, …)
|
|
991
1000
|
audit [--since <dur>] [--type X] Show agent action log (filterable)
|
|
1001
|
+
run-now <job> Fire a daemon-internal maintenance job
|
|
1002
|
+
on demand (e.g. roadmap_maintenance)
|
|
1003
|
+
verify [target] Run post-launch verification for a
|
|
1004
|
+
shipped design surface (e.g.
|
|
1005
|
+
evening-review-slimdown)
|
|
992
1006
|
version Print version + Node + install path
|
|
993
1007
|
update Print npm command to upgrade
|
|
994
1008
|
uninstall Stop, then offer to wipe ${path.basename(DATA_DIR) || "data dir"}
|
|
@@ -999,8 +1013,8 @@ Options:
|
|
|
999
1013
|
|
|
1000
1014
|
Environment:
|
|
1001
1015
|
PA_DATA_DIR Data directory (default: ~/.personal-agent)
|
|
1002
|
-
PA_API_PORT Daemon port (default:
|
|
1003
|
-
PA_DASHBOARD_PORT Dashboard port (default:
|
|
1016
|
+
PA_API_PORT Daemon port (default: ${DEFAULT_API_PORT})
|
|
1017
|
+
PA_DASHBOARD_PORT Dashboard port (default: ${DEFAULT_DASHBOARD_PORT})
|
|
1004
1018
|
|
|
1005
1019
|
Examples:
|
|
1006
1020
|
aitne start Launch in background
|
|
@@ -1016,7 +1030,7 @@ Run 'aitne help <command>' for detailed usage of a single command.`);
|
|
|
1016
1030
|
// Used by `aitne help <cmd>` to dispatch into the module rather than duplicating
|
|
1017
1031
|
// usage strings in cmdHelp() above.
|
|
1018
1032
|
const PER_COMMAND_HELP = new Set([
|
|
1019
|
-
"doctor", "audit", "setup", "open", "version", "update", "uninstall",
|
|
1033
|
+
"doctor", "audit", "setup", "open", "version", "update", "uninstall", "run-now", "verify",
|
|
1020
1034
|
]);
|
|
1021
1035
|
|
|
1022
1036
|
/**
|
|
@@ -1069,6 +1083,8 @@ switch (subcommand) {
|
|
|
1069
1083
|
case "open": await runExternalCommand("open", subArgs); break;
|
|
1070
1084
|
case "doctor": await runExternalCommand("doctor", subArgs); break;
|
|
1071
1085
|
case "audit": await runExternalCommand("audit", subArgs); break;
|
|
1086
|
+
case "run-now": await runExternalCommand("run-now", subArgs); break;
|
|
1087
|
+
case "verify": await runExternalCommand("verify", subArgs); break;
|
|
1072
1088
|
|
|
1073
1089
|
// version / -v / --version all dispatch identically — passing subArgs
|
|
1074
1090
|
// through so `aitne --version --json` yields the same output as
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aitne-sh/aitne",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.9",
|
|
4
4
|
"description": "Aitne — a local-first, proactive personal AI agent. A long-running TypeScript daemon is the nervous system; Claude Code (or Codex / Gemini CLI) is the brain. All persistent memory lives in local Markdown files.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ai",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
"README.md"
|
|
44
44
|
],
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@aitne/daemon": "0.1.
|
|
47
|
-
"@aitne/dashboard": "0.1.
|
|
48
|
-
"@aitne/shared": "0.1.
|
|
46
|
+
"@aitne/daemon": "0.1.9",
|
|
47
|
+
"@aitne/dashboard": "0.1.9",
|
|
48
|
+
"@aitne/shared": "0.1.9"
|
|
49
49
|
},
|
|
50
50
|
"devDependencies": {
|
|
51
51
|
"@typescript-eslint/eslint-plugin": "^8.58.1",
|
|
@@ -75,6 +75,7 @@
|
|
|
75
75
|
"test": "node scripts/check-redaction-coverage.mjs && vitest run --coverage",
|
|
76
76
|
"test:watch": "vitest",
|
|
77
77
|
"check:redaction": "node scripts/check-redaction-coverage.mjs",
|
|
78
|
+
"check:vault-paths": "node scripts/check-vault-path-drift.mjs",
|
|
78
79
|
"lint": "turbo run lint",
|
|
79
80
|
"typecheck:tests": "turbo run typecheck:tests",
|
|
80
81
|
"clean": "turbo run clean && node scripts/rm-paths.mjs node_modules .buildstamp"
|
|
@@ -37,6 +37,8 @@ Exit code:
|
|
|
37
37
|
await checkPort("Dashboard port", ctx.DASHBOARD_PORT, ctx.DASHBOARD_PID_FILE, ctx.helpers.getRunningPid),
|
|
38
38
|
await checkSecretStore(ctx),
|
|
39
39
|
await checkBackendCli(),
|
|
40
|
+
await checkProcessProbe(),
|
|
41
|
+
await checkBrowserOpener(ctx.DASHBOARD_PORT),
|
|
40
42
|
await checkDataDirWritable(ctx.DATA_DIR),
|
|
41
43
|
await checkBetterSqlite3(ctx.PROJECT_ROOT),
|
|
42
44
|
await checkAgentAssets(ctx.PROJECT_ROOT),
|
|
@@ -125,8 +127,8 @@ async function checkPort(label, port, pidFile, getRunningPid) {
|
|
|
125
127
|
label,
|
|
126
128
|
detail: `${port} in use by another process`,
|
|
127
129
|
hint: label.startsWith("Daemon")
|
|
128
|
-
? `Set PA_API_PORT to an open port (e.g. PA_API_PORT=
|
|
129
|
-
: `Set PA_DASHBOARD_PORT to an open port (e.g. PA_DASHBOARD_PORT=
|
|
130
|
+
? `Set PA_API_PORT to an open port (e.g. PA_API_PORT=8331 aitne start), or stop the conflicting process.`
|
|
131
|
+
: `Set PA_DASHBOARD_PORT to an open port (e.g. PA_DASHBOARD_PORT=8333 aitne start), or stop the conflicting process.`,
|
|
130
132
|
};
|
|
131
133
|
}
|
|
132
134
|
|
|
@@ -180,11 +182,17 @@ async function checkSecretStore(ctx) {
|
|
|
180
182
|
}
|
|
181
183
|
}
|
|
182
184
|
if (platform === "win32") {
|
|
183
|
-
|
|
185
|
+
// Match the factory's terminal fallback (secret-client-factory.ts:37-41): prefer
|
|
186
|
+
// in-box powershell.exe, else pwsh.exe, else default to powershell.exe — the exact
|
|
187
|
+
// binary the daemon will exec — so a both-missing FAIL names the right binary.
|
|
188
|
+
const psBinary = whichSync("powershell.exe") ? "powershell.exe" : (whichSync("pwsh.exe") ? "pwsh.exe" : "powershell.exe");
|
|
184
189
|
try {
|
|
190
|
+
// Mirror WindowsDpapiSecretClient's real encrypt path: ConvertTo/From-SecureString
|
|
191
|
+
// (no -Key => DPAPI). Works on both powershell.exe (5.1) and pwsh.exe (7+); the prior
|
|
192
|
+
// [ProtectedData] type check false-fails on PowerShell-Core-only hosts that work fine.
|
|
185
193
|
execFileSync(psBinary, [
|
|
186
|
-
"-NoProfile", "-Command",
|
|
187
|
-
"
|
|
194
|
+
"-NoProfile", "-NonInteractive", "-Command",
|
|
195
|
+
"$s = ConvertTo-SecureString 'probe' -AsPlainText -Force; $e = ConvertFrom-SecureString $s; if (-not $e) { exit 1 }; exit 0",
|
|
188
196
|
], { stdio: "pipe", timeout: 5000 });
|
|
189
197
|
return { status: "pass", label: "Secret store", detail: `Windows DPAPI via ${psBinary} reachable` };
|
|
190
198
|
} catch (err) {
|
|
@@ -221,6 +229,56 @@ async function checkBackendCli() {
|
|
|
221
229
|
};
|
|
222
230
|
}
|
|
223
231
|
|
|
232
|
+
/**
|
|
233
|
+
* Process-listing primitive — `pgrep` on POSIX, `tasklist` on Windows. The
|
|
234
|
+
* Obsidian observer uses this to ask "is the desktop app currently open?"
|
|
235
|
+
* before treating the vault as live (services/obsidian.ts). Warn (not fail)
|
|
236
|
+
* because every other observer keeps working without it.
|
|
237
|
+
*/
|
|
238
|
+
async function checkProcessProbe() {
|
|
239
|
+
const isWin = process.platform === "win32";
|
|
240
|
+
const tool = isWin ? "tasklist" : "pgrep";
|
|
241
|
+
if (whichSync(tool)) {
|
|
242
|
+
return { status: "pass", label: "Process probe", detail: `${tool} on PATH` };
|
|
243
|
+
}
|
|
244
|
+
return {
|
|
245
|
+
status: "warn",
|
|
246
|
+
label: "Process probe",
|
|
247
|
+
detail: `${tool} not on PATH`,
|
|
248
|
+
hint: isWin
|
|
249
|
+
? "tasklist ships with Windows — check that %SystemRoot%\\System32 is on PATH."
|
|
250
|
+
: process.platform === "linux"
|
|
251
|
+
? "apt install procps · or equivalent for your distro."
|
|
252
|
+
: "pgrep ships with macOS in-box; check $PATH.",
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
/**
|
|
257
|
+
* Browser opener used by `aitne open` and the auto-open after `aitne start`.
|
|
258
|
+
* darwin → `open`, win32 → `cmd` (hosts the `start` builtin), linux → `xdg-open`.
|
|
259
|
+
* Warn-only: nothing in the daemon depends on this; users can navigate to
|
|
260
|
+
* the dashboard URL by hand if missing.
|
|
261
|
+
*/
|
|
262
|
+
async function checkBrowserOpener(dashboardPort) {
|
|
263
|
+
const platform = process.platform;
|
|
264
|
+
const tool =
|
|
265
|
+
platform === "darwin" ? "open"
|
|
266
|
+
: platform === "win32" ? "cmd"
|
|
267
|
+
: "xdg-open";
|
|
268
|
+
if (whichSync(tool)) {
|
|
269
|
+
return { status: "pass", label: "Browser opener", detail: `${tool} on PATH` };
|
|
270
|
+
}
|
|
271
|
+
return {
|
|
272
|
+
status: "warn",
|
|
273
|
+
label: "Browser opener",
|
|
274
|
+
detail: `${tool} not on PATH`,
|
|
275
|
+
hint:
|
|
276
|
+
platform === "linux"
|
|
277
|
+
? `apt install xdg-utils · or open http://localhost:${dashboardPort} manually after \`aitne start\`.`
|
|
278
|
+
: "Auto-open is a convenience; the dashboard URL works in any browser.",
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
|
|
224
282
|
async function checkDataDirWritable(dataDir) {
|
|
225
283
|
try {
|
|
226
284
|
fs.mkdirSync(dataDir, { recursive: true });
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `aitne run-now <job>` — fire a daemon-internal maintenance job on
|
|
3
|
+
* demand.
|
|
4
|
+
*
|
|
5
|
+
* Currently supported jobs:
|
|
6
|
+
* - `roadmap_maintenance` — mechanical roadmap.md maintenance pass
|
|
7
|
+
* (substeps 2a / 2b / 2d of the legacy `routine.evening_review`
|
|
8
|
+
* Step 2). Same code path the 17:45 cron callback fires. See
|
|
9
|
+
* `docs/design/appendices/evening-review-slimdown.md` §2.2.
|
|
10
|
+
*
|
|
11
|
+
* Implementation:
|
|
12
|
+
* - Reads the daemon's apiToken from the OS secret store (macOS
|
|
13
|
+
* Keychain, Windows DPAPI, Linux libsecret, or the encrypted file
|
|
14
|
+
* fallback) via the shared cross-platform reader — the same entry
|
|
15
|
+
* the dashboard proxy uses. Bearer-auth required because
|
|
16
|
+
* `POST /api/agent/run-now/*` routes are Approve-tier in the
|
|
17
|
+
* `risk-classifier`.
|
|
18
|
+
* - POSTs to `http://127.0.0.1:<PA_API_PORT>/api/agent/run-now/<job>`.
|
|
19
|
+
* - Renders the structured `result` payload as a compact summary
|
|
20
|
+
* plus the full JSON on `--json`.
|
|
21
|
+
*
|
|
22
|
+
* Exit codes:
|
|
23
|
+
* - 0 job completed (including idempotent / no-op runs)
|
|
24
|
+
* - 2 validation / argument error
|
|
25
|
+
* - 3 daemon not running, not reachable, or 5xx
|
|
26
|
+
* - 4 result.status === "failed" — the job reported errors[]
|
|
27
|
+
*/
|
|
28
|
+
import { readApiToken } from "../lib/read-api-token.mjs";
|
|
29
|
+
|
|
30
|
+
const SUPPORTED_JOBS = new Set(["roadmap_maintenance"]);
|
|
31
|
+
|
|
32
|
+
const JOB_ENDPOINTS = {
|
|
33
|
+
roadmap_maintenance: "/api/agent/run-now/roadmap-maintenance",
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
export async function run(args, ctx) {
|
|
37
|
+
if (args.includes("--help") || args.includes("-h")) {
|
|
38
|
+
printHelp();
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const opts = parseArgs(args);
|
|
42
|
+
if (!opts.job) {
|
|
43
|
+
process.stderr.write("Job is required.\n");
|
|
44
|
+
process.stderr.write("Available jobs: " + [...SUPPORTED_JOBS].join(", ") + "\n");
|
|
45
|
+
process.stderr.write("Run `aitne help run-now` for usage.\n");
|
|
46
|
+
process.exit(2);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
if (!SUPPORTED_JOBS.has(opts.job)) {
|
|
50
|
+
process.stderr.write(`Unknown job: ${opts.job}\n`);
|
|
51
|
+
process.stderr.write("Available jobs: " + [...SUPPORTED_JOBS].join(", ") + "\n");
|
|
52
|
+
process.exit(2);
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
const token = readApiToken();
|
|
56
|
+
if (!token) {
|
|
57
|
+
process.stderr.write(
|
|
58
|
+
"Failed to read the daemon API token from the OS secret store.\n" +
|
|
59
|
+
"Is the daemon initialized? Run `aitne start` once first.\n",
|
|
60
|
+
);
|
|
61
|
+
process.exit(3);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const endpoint = JOB_ENDPOINTS[opts.job];
|
|
65
|
+
const url = `http://127.0.0.1:${ctx.DAEMON_PORT}${endpoint}`;
|
|
66
|
+
|
|
67
|
+
let res;
|
|
68
|
+
try {
|
|
69
|
+
res = await fetch(url, {
|
|
70
|
+
method: "POST",
|
|
71
|
+
headers: {
|
|
72
|
+
"Content-Type": "application/json",
|
|
73
|
+
Authorization: `Bearer ${token}`,
|
|
74
|
+
},
|
|
75
|
+
body: JSON.stringify({}),
|
|
76
|
+
});
|
|
77
|
+
} catch (err) {
|
|
78
|
+
process.stderr.write(`Failed to reach the daemon at ${url}: ${err.message}\n`);
|
|
79
|
+
process.stderr.write("Is the daemon running? Try `aitne status`.\n");
|
|
80
|
+
process.exit(3);
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
const text = await res.text();
|
|
84
|
+
let body;
|
|
85
|
+
try {
|
|
86
|
+
body = JSON.parse(text);
|
|
87
|
+
} catch {
|
|
88
|
+
body = { raw: text };
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
if (!res.ok) {
|
|
92
|
+
process.stderr.write(
|
|
93
|
+
`POST ${endpoint} → ${res.status}: ${body.error ?? "unknown"}\n`,
|
|
94
|
+
);
|
|
95
|
+
if (body.message) process.stderr.write(`${body.message}\n`);
|
|
96
|
+
process.exit(res.status >= 500 ? 3 : 2);
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
if (opts.json) {
|
|
100
|
+
process.stdout.write(JSON.stringify(body, null, 2) + "\n");
|
|
101
|
+
} else {
|
|
102
|
+
printSummary(opts.job, body.result ?? body);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const status = body?.result?.status;
|
|
106
|
+
if (status === "failed") process.exit(4);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function parseArgs(args) {
|
|
110
|
+
const opts = { job: null, json: false };
|
|
111
|
+
for (let i = 0; i < args.length; i++) {
|
|
112
|
+
const a = args[i];
|
|
113
|
+
if (a === "--json") {
|
|
114
|
+
opts.json = true;
|
|
115
|
+
continue;
|
|
116
|
+
}
|
|
117
|
+
if (a.startsWith("-")) {
|
|
118
|
+
process.stderr.write(`Unknown flag: ${a}\n`);
|
|
119
|
+
process.exit(2);
|
|
120
|
+
}
|
|
121
|
+
if (opts.job) {
|
|
122
|
+
process.stderr.write(`Unexpected positional argument: ${a}\n`);
|
|
123
|
+
process.exit(2);
|
|
124
|
+
}
|
|
125
|
+
opts.job = a;
|
|
126
|
+
}
|
|
127
|
+
return opts;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function printSummary(job, result) {
|
|
131
|
+
if (job === "roadmap_maintenance") {
|
|
132
|
+
if (!result || typeof result !== "object") {
|
|
133
|
+
process.stdout.write("(no result payload)\n");
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const status = result.status ?? "unknown";
|
|
137
|
+
const lines = [
|
|
138
|
+
`status: ${status}`,
|
|
139
|
+
`status_synced: ${result.statusSynced ?? 0}`,
|
|
140
|
+
`swept: ${result.swept ?? 0}`,
|
|
141
|
+
`stale_marked: ${result.staleMarked ?? 0}`,
|
|
142
|
+
];
|
|
143
|
+
if (result.skipReason) lines.push(`skip_reason: ${result.skipReason}`);
|
|
144
|
+
if (Array.isArray(result.errors) && result.errors.length > 0) {
|
|
145
|
+
lines.push(`errors: ${result.errors.length}`);
|
|
146
|
+
for (const err of result.errors) {
|
|
147
|
+
lines.push(` - ${err.step}: ${err.message}`);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
process.stdout.write(lines.join("\n") + "\n");
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
process.stdout.write(JSON.stringify(result, null, 2) + "\n");
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
function printHelp() {
|
|
157
|
+
process.stdout.write(`Usage: aitne run-now <job> [--json]
|
|
158
|
+
|
|
159
|
+
Fire a daemon-internal maintenance job on demand. Uses the same code
|
|
160
|
+
path the cron schedule fires — useful for parallel-verification
|
|
161
|
+
rollouts and operator debugging.
|
|
162
|
+
|
|
163
|
+
Jobs:
|
|
164
|
+
roadmap_maintenance Run the mechanical roadmap.md maintenance pass
|
|
165
|
+
(substeps 2a / 2b / 2d). Acquires roadmap write
|
|
166
|
+
lock, syncs Scheduled: statuses, sweeps aged
|
|
167
|
+
Agent Action Plan entries, and applies
|
|
168
|
+
Long-term Plans stale markers. Emits an
|
|
169
|
+
\`agent_actions\` audit row with
|
|
170
|
+
action_type='roadmap_mechanical_maintenance'
|
|
171
|
+
and appends a line to agent/journal.md.
|
|
172
|
+
|
|
173
|
+
Flags:
|
|
174
|
+
--json Emit the full JSON result instead of the summary.
|
|
175
|
+
-h, --help Print this message.
|
|
176
|
+
|
|
177
|
+
Exit codes:
|
|
178
|
+
0 completed (success / skipped)
|
|
179
|
+
2 argument / validation error
|
|
180
|
+
3 daemon unreachable or 5xx
|
|
181
|
+
4 the job ran but reported errors[]
|
|
182
|
+
|
|
183
|
+
Examples:
|
|
184
|
+
aitne run-now roadmap_maintenance
|
|
185
|
+
aitne run-now roadmap_maintenance --json
|
|
186
|
+
`);
|
|
187
|
+
}
|