Sources and Mirrors - VVG-web/aurora-studio GitHub Wiki
Sources and mirrors
Wiki home · related: The cycle · Troubleshooting · full text: source modules
Aurora never reads Confluence or Jira while it builds cards. It first makes a mirror — a deterministic copy in
Sources/ — and builds from that. Your own evidence lives in Raw/.
flowchart LR
C["Confluence"] -->|"sync:confluence"| MC["Sources/Confluence"]
J["Jira"] -->|"sync:jira"| MJ["Sources/JIRA"]
W["Websites"] -->|"sync:web"| MW["Sources/Web"]
R["Raw/<br>contract · laws · meetings ·<br>customer · project · corrections"] --> B
MC & MJ & MW --> B["agent:build<br>parsing into cards"]
R -->|"docx · pdf · xlsx · pptx<br>kb:ingest-office"| R
Mirrors: deterministic, incremental, never edited by hand
- The same source gives the same file, byte for byte. Otherwise
git diffstops being evidence andsync:auditcannot check the state. A repeated sync makes no noise in git. - Incremental. A Confluence page with the same version, converter and path, and the file in place, is not
downloaded again; once a week and with
--forcethe mirror is passed in full. - Written only by sync. Do not edit
Sources/— the next sync would overwrite you; put your own words intoRaw/corrections/(kb:correct) instead. - A failed sync keeps what it did not reach. If the server timed out halfway, the pages the walk did not visit stay
in the state, and
--prunerefuses to delete when the export had errors or the "extra" share is large.
The bundled modules
| Module | Kind | Role | Mirror | Command |
|---|---|---|---|---|
confluence-dc |
wiki: folders repeat the page tree, a page with children → folder + index.md |
documents | Sources/Confluence/ |
sync:confluence |
jira-dc |
board: a file per issue, the key is the name | tasks | Sources/JIRA/ |
sync:jira |
web |
board: a file per saved page | documents (trust per link) | Sources/Web/ |
sync:web |
More products (Notion, SharePoint, Confluence Cloud, YouTrack, GitLab Issues) are added as a folder in connectors/
with a connector.json; see source modules.
Settings and secrets
| What | Where |
|---|---|
base URLs, spaces, sync_roots (page ids to walk from), project key, JQL |
aurora.config.yaml (committed) |
CONFLUENCE_PERSONAL_TOKEN, JIRA_PERSONAL_TOKEN (or user + password) |
.env.aurora.local (git-ignored) |
Sync scripts talk to Confluence and Jira directly over REST. The Atlassian MCP in your editor does not help them: it
does not hand out its credentials. Check a token: python3 .aurora/scripts/jira_export.py --limit 1.
A token goes only to its own server. The address in aurora.config.yaml is shared by the team, and swapping it in
a pull request would carry the token away. So the REST client sends the key only to the server in base_url: an
absolute address that comes from the server (_links.next, an attachment) with another host is refused, and a redirect
to another host goes without Authorization. The key is never sent over plain http:// (your own computer excepted).
The engine also remembers the server after the first successful reply (.aurora/state/trusted-hosts.json, not in git):
a different base_url afterwards is refused, with one line saying so, until you accept it. Accepting is one line in
.env.aurora.local: AURORA_CONFLUENCE_SERVER=https://wiki.example.com or AURORA_JIRA_SERVER=https://jira.example.com
(the same lines pin the server in advance — and for a project that has never synced, nothing is remembered yet, so set
them there). AURORA_ALLOW_HTTP=1 allows plain http:// for a server on a closed network. Model gateway keys and the Git password are protected differently: a redirect never carries
them to another host, a saved key is not carried over to a changed address, and the credential helper answers only the
repository's server; plain http:// stays allowed there (a local Gitea or gateway on a closed network). The website crawl
token (WEB_PERSONAL_TOKEN) goes only to the host of the start page it is used with; a page added to the shared list
would get it, so the engine remembers the origins (scheme, host and port) that answered in the first run
(.aurora/state/trusted-hosts.json, not in git; your own computer is never remembered and is never cut off by the binding; a dry run remembers too): a page added later on another host or port does not receive it, and the log says how to allow the new address. The run ends with one line: "токен привязан к …" (bound; lists the hosts that did not answer, they will not get the token) or "токен не привязан …" (not bound: nobody answered or the binding could not be written; the token still goes to every host of the list); kit:doctor warns "token present, no binding". To bind
the hosts before the first run (or to accept a new one), list them in AURORA_WEB_TOKEN_HOSTS=wiki.example.com,…: the line
replaces the remembered list (name all hosts, the old ones too) and no other host receives the token (your own computer is the exception: it always gets it). A bare host matches any port of that host; wiki.example.com:9443 and https://host[:port] match only their own (the one exception, as for the start page: http://host also admits https://host).
Checking a mirror
| Command | Finds |
|---|---|
sync:audit |
MISSING, ORPHAN, MOVED, COLLISION, stale state, foreign files, headers with a repeated field or a forged trusted |
sync:diff |
drift — a source changed after the knowledge was built on it |
sync:jira-status |
issues closed while the requirement is not; work without requirements; links by mention |
kit:remap-sources, kb:repair --gone-sources |
a page moved: cards' source: follows it by page_id or document code |
Raw/ is evidence
Contracts, laws, meeting transcripts and customer material go into Raw/{laws,contract,customer,project,meetings, examples,corrections}. By agreement it is immutable and counts as trusted without proof. Office formats are turned
into Markdown transcripts next to the original by kb:ingest-office; a scan is read by a vision model if one is
configured (there is deliberately no default model for scans — a guessed name gives a coherent fabrication).
This wiki is generated from the wiki/ folder of the repository — edit the pages there, changes made here are overwritten. · RU-Home