Implements Phases 1-8 of the TFTSR implementation plan. Rust backend (Tauri 2.x, src-tauri/): - Multi-provider AI: OpenAI-compatible, Anthropic, Gemini, Mistral, Ollama - PII detection engine: 11 regex patterns with overlap resolution - SQLCipher AES-256 encrypted database with 10 versioned migrations - 28 Tauri IPC commands for triage, analysis, document, and system ops - Ollama: hardware probe, model recommendations, pull/delete with events - RCA and blameless post-mortem Markdown document generators - PDF export via printpdf - Audit log: SHA-256 hash of every external data send - Integration stubs for Confluence, ServiceNow, Azure DevOps (v0.2) Frontend (React 18 + TypeScript + Vite, src/): - 9 pages: full triage workflow NewIssue→LogUpload→Triage→Resolution→RCA→Postmortem→History+Settings - 7 components: ChatWindow, TriageProgress, PiiDiffViewer, DocEditor, HardwareReport, ModelSelector, UI primitives - 3 Zustand stores: session, settings (persisted), history - Type-safe tauriCommands.ts matching Rust backend types exactly - 8 IT domain system prompts (Linux, Windows, Network, K8s, DB, Virt, HW, Obs) DevOps: - .woodpecker/test.yml: rustfmt, clippy, cargo test, tsc, vitest on every push - .woodpecker/release.yml: linux/amd64 + linux/arm64 builds, Gogs release upload Verified: - cargo check: zero errors - tsc --noEmit: zero errors - vitest run: 13/13 unit tests passing Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| lib | ||
| index.d.ts | ||
| index.js | ||
| license | ||
| package.json | ||
| readme.md | ||
vfile-message
Create vfile messages.
Contents
What is this?
This package provides a (lint) message format.
When should I use this?
In most cases,
you can use file.message from VFile itself,
but in some cases you might not have a file,
and still want to emit warnings or errors,
in which case this can be used directly.
Install
This package is ESM only. In Node.js (version 16+), install with npm:
npm install vfile-message
In Deno with esm.sh:
import {VFileMessage} from 'https://esm.sh/vfile-message@4'
In browsers with esm.sh:
<script type="module">
import {VFileMessage} from 'https://esm.sh/vfile-message@4?bundle'
</script>
Use
import {VFileMessage} from 'vfile-message'
const message = new VFileMessage(
'Unexpected unknown word `braavo`, did you mean `bravo`?',
{place: {column: 8, line: 1}, ruleId: 'typo', source: 'spell'}
)
console.log(message)
Yields:
[1:8: Unexpected unknown word `braavo`, did you mean `bravo`?] {
reason: 'Unexpected unknown word `braavo`, did you mean `bravo`?',
line: 1,
column: 8,
ancestors: undefined,
cause: undefined,
fatal: undefined,
place: {line: 1, column: 8},
ruleId: 'typo',
source: 'spell'
}
API
This package exports the identifier VFileMessage.
There is no default export.
It exports the additional TypeScript type Options.
VFileMessage(reason[, options])
Create a message for reason.
🪦 Note: also has obsolete signatures.
Parameters
reason(string) — reason for message (should use markdown)options(Options, optional) — configuration.
Extends
Returns
Instance of VFileMessage.
Fields
ancestors(Array<Node>orundefined) — stack of (inclusive) ancestor nodes surrounding the messagecause(Errororundefined) — original error cause of the messagecolumn(numberorundefined) — starting column of messagefatal(booleanorundefined) — state of problem;true: error, file not usable;false: warning, change may be needed;undefined: info, change likely not neededline(numberorundefined) — starting line of messageplace(Point,Positionorundefined) — place of messagereason(string) — reason for message (should use markdown)ruleId(stringorundefined, example:'my-rule') — category of messagesource(stringorundefined, example:'my-package') — namespace of message
Options
Configuration (TypeScript type).
Fields
ancestors(Array<Node>, optional) — stack of (inclusive) ancestor nodes surrounding the messagecause(Error, optional) — original error cause of the messageplace(PointorPosition, optional) — place of messageruleId(string, optional, example:'my-rule') — category of messagesource(string, optional, , example:'my-package') — namespace of who sent the message
Well-known
It’s OK to store custom data directly on the VFileMessage, some of those are
handled by utilities.
The following fields are documented and typed here.
Fields
actual(string, optional) — specify the source value that’s being reported, which is deemed incorrectexpected(Array<string>, optional) — suggest acceptable values that can be used instead ofactualurl(string, optional) — link to docs for the message (this must be an absolute URL that can be passed asxtonew URL(x))note(string, optional) — long form description of the message (you should use markdown)
Compatibility
Projects maintained by the unified collective are compatible with maintained versions of Node.js.
When we cut a new major release, we drop support for unmaintained versions of
Node.
This means we try to keep the current release line, vfile-message@^4,
compatible with Node.js 16.
Contribute
See contributing.md in vfile/.github
for ways to get started.
See support.md for ways to get help.
This project has a code of conduct. By interacting with this repository, organization, or community you agree to abide by its terms.