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>
86 lines
3.1 KiB
Markdown
86 lines
3.1 KiB
Markdown
# run-parallel [![travis][travis-image]][travis-url] [![npm][npm-image]][npm-url] [![downloads][downloads-image]][downloads-url] [![javascript style guide][standard-image]][standard-url]
|
|
|
|
[travis-image]: https://img.shields.io/travis/feross/run-parallel/master.svg
|
|
[travis-url]: https://travis-ci.org/feross/run-parallel
|
|
[npm-image]: https://img.shields.io/npm/v/run-parallel.svg
|
|
[npm-url]: https://npmjs.org/package/run-parallel
|
|
[downloads-image]: https://img.shields.io/npm/dm/run-parallel.svg
|
|
[downloads-url]: https://npmjs.org/package/run-parallel
|
|
[standard-image]: https://img.shields.io/badge/code_style-standard-brightgreen.svg
|
|
[standard-url]: https://standardjs.com
|
|
|
|
### Run an array of functions in parallel
|
|
|
|
 [](https://saucelabs.com/u/run-parallel)
|
|
|
|
### install
|
|
|
|
```
|
|
npm install run-parallel
|
|
```
|
|
|
|
### usage
|
|
|
|
#### parallel(tasks, [callback])
|
|
|
|
Run the `tasks` array of functions in parallel, without waiting until the previous
|
|
function has completed. If any of the functions pass an error to its callback, the main
|
|
`callback` is immediately called with the value of the error. Once the `tasks` have
|
|
completed, the results are passed to the final `callback` as an array.
|
|
|
|
It is also possible to use an object instead of an array. Each property will be run as a
|
|
function and the results will be passed to the final `callback` as an object instead of
|
|
an array. This can be a more readable way of handling the results.
|
|
|
|
##### arguments
|
|
|
|
- `tasks` - An array or object containing functions to run. Each function is passed a
|
|
`callback(err, result)` which it must call on completion with an error `err` (which can
|
|
be `null`) and an optional `result` value.
|
|
- `callback(err, results)` - An optional callback to run once all the functions have
|
|
completed. This function gets a results array (or object) containing all the result
|
|
arguments passed to the task callbacks.
|
|
|
|
##### example
|
|
|
|
```js
|
|
var parallel = require('run-parallel')
|
|
|
|
parallel([
|
|
function (callback) {
|
|
setTimeout(function () {
|
|
callback(null, 'one')
|
|
}, 200)
|
|
},
|
|
function (callback) {
|
|
setTimeout(function () {
|
|
callback(null, 'two')
|
|
}, 100)
|
|
}
|
|
],
|
|
// optional callback
|
|
function (err, results) {
|
|
// the results array will equal ['one','two'] even though
|
|
// the second function had a shorter timeout.
|
|
})
|
|
```
|
|
|
|
This module is basically equavalent to
|
|
[`async.parallel`](https://github.com/caolan/async#paralleltasks-callback), but it's
|
|
handy to just have the one function you need instead of the kitchen sink. Modularity!
|
|
Especially handy if you're serving to the browser and need to reduce your javascript
|
|
bundle size.
|
|
|
|
Works great in the browser with [browserify](http://browserify.org/)!
|
|
|
|
### see also
|
|
|
|
- [run-auto](https://github.com/feross/run-auto)
|
|
- [run-parallel-limit](https://github.com/feross/run-parallel-limit)
|
|
- [run-series](https://github.com/feross/run-series)
|
|
- [run-waterfall](https://github.com/feross/run-waterfall)
|
|
|
|
### license
|
|
|
|
MIT. Copyright (c) [Feross Aboukhadijeh](http://feross.org).
|