tftsr-devops_investigation/node_modules/micromark-extension-gfm-footnote/index.d.ts
Shaun Arman 8839075805 feat: initial implementation of TFTSR IT Triage & RCA application
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>
2026-03-14 22:36:25 -05:00

165 lines
5.3 KiB
TypeScript

export {gfmFootnoteHtml, defaultBackLabel} from './lib/html.js'
export {gfmFootnote} from './lib/syntax.js'
/**
* Generate a back label dynamically.
*
* For the following markdown:
*
* ```markdown
* Alpha[^micromark], bravo[^micromark], and charlie[^remark].
*
* [^remark]: things about remark
* [^micromark]: things about micromark
* ```
*
* This function will be called with:
*
* * `0` and `0` for the backreference from `things about micromark` to
* `alpha`, as it is the first used definition, and the first call to it
* * `0` and `1` for the backreference from `things about micromark` to
* `bravo`, as it is the first used definition, and the second call to it
* * `1` and `0` for the backreference from `things about remark` to
* `charlie`, as it is the second used definition
*
* @param referenceIndex
* Index of the definition in the order that they are first referenced,
* 0-indexed.
* @param rereferenceIndex
* Index of calls to the same definition, 0-indexed.
* @returns
* Back label to use when linking back from definitions to their reference.
*/
export type BackLabelTemplate = (
referenceIndex: number,
rereferenceIndex: number
) => string
/**
* Configuration.
*/
export interface HtmlOptions {
/**
* Prefix to use before the `id` attribute on footnotes to prevent them from
* *clobbering* (default: `'user-content-'`).
*
* Pass `''` for trusted markdown and when you are careful with
* polyfilling.
* You could pass a different prefix.
*
* DOM clobbering is this:
*
* ```html
* <p id="x"></p>
* <script>alert(x) // `x` now refers to the `p#x` DOM element</script>
* ```
*
* The above example shows that elements are made available by browsers, by
* their ID, on the `window` object.
* This is a security risk because you might be expecting some other variable
* at that place.
* It can also break polyfills.
* Using a prefix solves these problems.
*/
clobberPrefix?: string | null | undefined
/**
* Textual label to use for the footnotes section (default: `'Footnotes'`).
*
* Change it when the markdown is not in English.
*
* This label is typically hidden visually (assuming a `sr-only` CSS class
* is defined that does that) and so affects screen readers only.
* If you do have such a class, but want to show this section to everyone,
* pass different attributes with the `labelAttributes` option.
*/
label?: string | null | undefined
/**
* Attributes to use on the footnote label (default: `'class="sr-only"'`).
*
* Change it to show the label and add other attributes.
*
* This label is typically hidden visually (assuming an `sr-only` CSS class
* is defined that does that) and so affects screen readers only.
* If you do have such a class, but want to show this section to everyone,
* pass an empty string.
* You can also add different attributes.
*
* > 👉 **Note**: `id="footnote-label"` is always added, because footnote
* > calls use it with `aria-describedby` to provide an accessible label.
*/
labelAttributes?: string | null | undefined
/**
* HTML tag name to use for the footnote label element (default: `'h2'`).
*
* Change it to match your document structure.
*
* This label is typically hidden visually (assuming a `sr-only` CSS class
* is defined that does that) and so affects screen readers only.
* If you do have such a class, but want to show this section to everyone,
* pass different attributes with the `labelAttributes` option.
*/
labelTagName?: string | null | undefined
/**
* Textual label to describe the backreference back to references (default:
* `defaultBackLabel`).
*
* The default value is:
*
* ```js
* function defaultBackLabel(referenceIndex, rereferenceIndex) {
* return (
* 'Back to reference ' +
* (referenceIndex + 1) +
* (rereferenceIndex > 1 ? '-' + rereferenceIndex : '')
* )
* }
* ```
*
* Change it when the markdown is not in English.
*
* This label is used in the `aria-label` attribute on each backreference
* (the `↩` links).
* It affects users of assistive technology.
*/
backLabel?: BackLabelTemplate | string | null | undefined
}
/**
* Augment types.
*/
declare module 'micromark-util-types' {
/**
* Compile data.
*/
interface CompileData {
gfmFootnoteDefinitions?: Record<string, string>
gfmFootnoteDefinitionStack?: Array<string>
gfmFootnoteCallCounts?: Record<string, number>
gfmFootnoteCallOrder?: Array<string>
}
/**
* Parse context.
*/
interface ParseContext {
gfmFootnotes?: Array<string>
}
/**
* Token types.
*/
interface TokenTypeMap {
gfmFootnoteCall: 'gfmFootnoteCall'
gfmFootnoteCallLabelMarker: 'gfmFootnoteCallLabelMarker'
gfmFootnoteCallMarker: 'gfmFootnoteCallMarker'
gfmFootnoteCallString: 'gfmFootnoteCallString'
gfmFootnoteDefinition: 'gfmFootnoteDefinition'
gfmFootnoteDefinitionIndent: 'gfmFootnoteDefinitionIndent'
gfmFootnoteDefinitionLabel: 'gfmFootnoteDefinitionLabel'
gfmFootnoteDefinitionLabelMarker: 'gfmFootnoteDefinitionLabelMarker'
gfmFootnoteDefinitionLabelString: 'gfmFootnoteDefinitionLabelString'
gfmFootnoteDefinitionMarker: 'gfmFootnoteDefinitionMarker'
gfmFootnoteDefinitionWhitespace: 'gfmFootnoteDefinitionWhitespace'
}
}