kane-cli context ingest. When a source changes later, maintain reconcile --from accepts the same URLs.
Kane CLI accepts only the media types listed on this page. Anything else is rejected with UNSUPPORTED_MEDIA. Each type has its own size cap, and a larger file is refused with FILE_TOO_LARGE.
Supported sources at a glance
The citation granularity column shows how precisely the agent can point at evidence in each type of source.Files
Text and structured text
Accepted extensions are.txt, .md and .markdown, plus the structured-text formats .json, .yaml and .yml, .toml, .xml, and .log. Each line can be cited word for word. The size cap is 2 MB.
Structured files are ingested as they are, so even a malformed JSON file can be cited as evidence. Files must be valid UTF-8; otherwise the ingest refuses with ENCODING_UNSUPPORTED. A file with very long lines, such as minified JSON, is ingested with a warning, because each line anchor then covers too much text to be a useful citation. Pretty-print the file first if you want precise citations.
Images
PNG, JPEG and WebP, up to 5 MB. An image is cited as a whole, because it has no text to quote.PDF_NO_TEXT_LAYER, and a password-protected one with PDF_ENCRYPTED. Every refusal tells you how to fix it, such as splitting a very large document or saving an encrypted one again.
Word documents
.docx files up to 25 MB. Kane CLI converts the document to plain text covering the body, headers and footers, footnotes, and tables. Tracked changes appear as the final version. Embedded images become citable parts.
Any content that cannot be extracted is replaced by an explicit marker, so nothing disappears silently. Password-protected files and the older binary .doc format are refused, with guidance on which format to save as.
Remote sources
You pass a remote source as a URL instead of a file path. Each type needs the matching connection on your account, which you set up in the Integrations screen. If the connection is missing or expired, the ingest refuses before doing anything and points you to that screen.Jira issues
unchanged or versioned, exactly as for a file you ingest again. The default source id is the issue key in lowercase, and --as overrides it.
Each refusal tells you what to do in the Integrations screen:
- An expired Atlassian connection: resync it.
- A missing connection: create one.
- An issue outside the integration’s selected projects: add that project.
The issue’s project must be one of the integration’s selected projects. An issue from any other project is refused, and the message points you to the Integrations screen so you can add the project.
Confluence pages
unchanged. A change to the body is versioned, and items extracted from the old snapshot become stale. The default source id is page-<id>.
Short links such as /wiki/x/... are not supported. Open the page and use its full URL.
Linear issues
#comment fragment all resolve to one source.
Kane CLI ingests the title, the description (every line can be cited), the workflow fields (status, priority, project and labels), all comments including threaded replies, and images, both inline and attached, as citable parts. Attachment links to other apps are listed but never fetched.
As with Jira, comments are part of the issue’s identity, so if the comments cannot be read in full, the whole ingest is refused.
Identity follows the issue itself:
- If a team key is renamed, the same source continues as a
versionedupdate. - If a key is recycled, meaning the same key now points at a different issue, the ingest is refused and offers two ways to recover: retire the existing source, or use
--as.
eng-42, and --as overrides it.
Linear documents
doc-<id>, and --as overrides it.
Workspace pages, meaning project, team or view URLs, cannot be ingested and are refused with a clear message. Ingest their issues or documents one at a time instead.
Public web pages
--as lets you choose a custom id. If you ingest a different URL under an id you already chose, Kane CLI asks first on a terminal and refuses when headless, so keep separate pages under separate ids.
Ingesting an unchanged page again is unchanged. A change to the content is versioned, and items extracted from the old snapshot become stale. Changes to the title, redirects, status, or timestamps never move the head (the source’s current version).
A web source always reads the live page; you cannot read the page as it was at an earlier time. If a page cannot be read because it is not found, requires a login or a paywall, blocks bots, is not HTML, is too large, or times out, the ingest is refused with the reason in plain language. Private and internal addresses are refused.
Remote ids share one space
A JiraENG-42 and a Linear ENG-42 both create the source id eng-42. If a URL’s id already belongs to a different kind of source, the ingest refuses and offers a way to recover: retire the existing source, or ingest the new one under a different id with --as. Kane CLI never replaces a source silently.
Keeping a source current
When a source document changes, usekane-cli maintain reconcile instead of a plain re-ingest. Reconcile records the same new version and works out what the change means for your suite, in one step. It accepts the same remote URLs listed on this page.
Next steps
- Building the context graph: ingest, extract, and review.
- Maintaining the suite: what to do when a source changes.
- Designing tests: turn a trusted use-case into runnable tests.