updated skills
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -73,4 +73,3 @@ console.log(
|
||||
`DOCS_CODES` registry.
|
||||
- [`observability/observability.md`](./src/observability/observability.md) —
|
||||
OTel counters + histograms factory.
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ _(no submodules)_
|
||||
|
||||
`parseDoc` turns the raw text of a single markdown file into a structured
|
||||
`DocFile` by composing `gray-matter` (frontmatter), `unified` + `remark-parse`
|
||||
|
||||
+ `remark-gfm` (mdast), and `unist-util-visit` (typed traversal). It is the
|
||||
atomic unit used both internally by `discoverDocs` and externally by callers
|
||||
that already have markdown in memory (e.g. consumers that read from a content
|
||||
@@ -16,17 +17,17 @@ DB rather than the filesystem). Every traversal is fully typed via
|
||||
|
||||
## Features
|
||||
|
||||
- Stable 16-character hex id derived from `sha256(relativePath)`.
|
||||
- Title precedence: `frontmatter.title` (string) → first H1 → filename
|
||||
+ Stable 16-character hex id derived from `sha256(relativePath)`.
|
||||
+ Title precedence: `frontmatter.title` (string) → first H1 → filename
|
||||
without `.md` extension.
|
||||
- Typed link extraction via `unist-util-visit<Link>`.
|
||||
- Full `DocCategory` derivation across the eighteen suaveplan super-categories
|
||||
+ Typed link extraction via `unist-util-visit<Link>`.
|
||||
+ Full `DocCategory` derivation across the eighteen suaveplan super-categories
|
||||
plus `"root"`.
|
||||
- Package-name derivation across `packages/<category>/<plugin>/<pkg>/…`,
|
||||
+ Package-name derivation across `packages/<category>/<plugin>/<pkg>/…`,
|
||||
`apps/<name>/…`, and root-level files.
|
||||
- Records `docs_parse_duration_ms` histogram + `docs_parse_error_total`
|
||||
+ Records `docs_parse_duration_ms` histogram + `docs_parse_error_total`
|
||||
counter on parser failure.
|
||||
- Wraps every thrown cause into `DocsError(DOCS.PARSE_FAILED)`.
|
||||
+ Wraps every thrown cause into `DocsError(DOCS.PARSE_FAILED)`.
|
||||
|
||||
## Usage: Basic
|
||||
|
||||
@@ -65,14 +66,14 @@ console.log(doc.content === raw); // true — raw content is preserved verbatim
|
||||
|
||||
### `parseDoc(absolutePath, relativePath, rawContent, observability?): DocFile`
|
||||
|
||||
- **`absolutePath`** — absolute filesystem path; used for `doc.path` and
|
||||
+ **`absolutePath`** — absolute filesystem path; used for `doc.path` and
|
||||
basename / `isReadme` checks. Not read from disk.
|
||||
- **`relativePath`** — path relative to the project root; used for id,
|
||||
+ **`relativePath`** — path relative to the project root; used for id,
|
||||
category, and package-name derivation.
|
||||
- **`rawContent`** — raw file content including frontmatter delimiters.
|
||||
- **`observability`** — optional `DocsObservability`. Defaults to no-op.
|
||||
- **Returns** — `DocFile` with every field populated.
|
||||
- **Throws** — `DocsError(DOCS.PARSE_FAILED)` on malformed frontmatter or
|
||||
+ **`rawContent`** — raw file content including frontmatter delimiters.
|
||||
+ **`observability`** — optional `DocsObservability`. Defaults to no-op.
|
||||
+ **Returns** — `DocFile` with every field populated.
|
||||
+ **Throws** — `DocsError(DOCS.PARSE_FAILED)` on malformed frontmatter or
|
||||
mdast parser failure.
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
@@ -130,4 +130,3 @@ bunx turbo test:coverage --filter=@suaveplan/pdf
|
||||
```
|
||||
|
||||
100 / 100 / 100 / 100 Istanbul coverage on every Chunk A module.
|
||||
|
||||
|
||||
@@ -19,7 +19,9 @@ Sitemap generation and parsing for the sitemaps.org XML protocol. Produces valid
|
||||
- [sitemap.schema](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [url-utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
|
||||
<!-- end:auto-docs --> - [sitemap-builder](./src/core/builder/sitemap-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [parser](./src/core/parser/sitemap-parser.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-parser](./src/core/parser/sitemap-parser.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/sitemap-error.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-error](./src/errors/sitemap-error.md) — <!-- begin:auto-docs --> _(no submodules)_- [schemas](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap.schema](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_- [utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_- [url-utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-builder](./src/core/builder/sitemap-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [parser](./src/core/parser/sitemap-parser.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-parser](./src/core/parser/sitemap-parser.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/sitemap-error.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-error](./src/errors/sitemap-error.md) — <!-- begin:auto-docs --> _(no submodules)_- [schemas](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap.schema](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_- [utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_- [url-utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-builder](./src/core/builder/sitemap-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [parser](./src/core/parser/sitemap-parser.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-parser](./src/core/parser/sitemap-parser.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/sitemap-error.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-error](./src/errors/sitemap-error.md) — <!-- begin:auto-docs --> _(no submodules)_- [schemas](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap.schema](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_- [utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_- [url-utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_- [sitemap-builder](./src/core/builder/sitemap-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [index-builder](./src/core/index-builder/index-builder.md) — <!-- begin:auto-docs --> _(no submodules)_ - [index-builder](./src/core/index-builder/index-builder.md) — <!-- begin:auto-docs --> _(no submodules)_- [parser](./src/core/parser/sitemap-parser.md) — <!-- begin:auto-docs --> _(no submodules)_ - [sitemap-parser](./src/core/parser/sitemap-parser.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/sitemap-error.md) — <!-- begin:auto-docs --> _(no submodules)_ - [sitemap-error](./src/errors/sitemap-error.md) — <!-- begin:auto-docs --> _(no submodules)_- [schemas](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_ - [sitemap.schema](./src/schemas/sitemap.schema.md) — <!-- begin:auto-docs --> _(no submodules)_- [utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_ - [url-utils](./src/utils/url-utils.md) — <!-- begin:auto-docs --> _(no submodules)_
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -148,4 +148,3 @@ The full `ELECTROBUN.*` registry:
|
||||
## License
|
||||
|
||||
MIT — see the repository root.
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@ preview pane in an IDE extension).
|
||||
- `renderNetworkFeature` vs `renderNetworkFullFeature` selected by
|
||||
`options.networkingComplexity`.
|
||||
- `renderR3fFeature` composes the camera / physics / particles imports
|
||||
+ scene fragments based on `options.r3fModules`.
|
||||
- scene fragments based on `options.r3fModules`.
|
||||
- `featurePath(feature)` returns the canonical output path for each
|
||||
feature (the generator uses this to assemble the file list).
|
||||
|
||||
|
||||
@@ -22,7 +22,9 @@ and installs them into a target project via `@suaveplan/installer`.
|
||||
- [prompts](./src/prompts/prompts.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [error-codes](./src/error-codes.md) — Defines the canonical error-code registry for `@suaveplan/install-agent-skills`. Every plugin-side failure path (invali…
|
||||
- [manifest-loader](./src/manifest-loader.md) — Loads and validates the bundled `assets/skills/manifest.json` produced by `scripts/build-skills-bundle.ts`. The loader…
|
||||
|
||||
<!-- end:auto-docs --> - [apply](./src/apply/apply.md) — <!-- begin:auto-docs --> _(no submodules)_- [detect](./src/detect/detect.md) — <!-- begin:auto-docs --> _(no submodules)_- [detect](./src/detect/detect.md) — <!-- begin:auto-docs --> _(no submodules)_- [plan](./src/plan/plan.md) — <!-- begin:auto-docs --> _(no submodules)_- [plan](./src/plan/plan.md) — <!-- begin:auto-docs --> _(no submodules)_- [post-install](./src/post-install/post-install.md) — <!-- begin:auto-docs --> _(no submodules)_- [post-install](./src/post-install/post-install.md) — <!-- begin:auto-docs --> _(no submodules)_- [prompts](./src/prompts/prompts.md) — <!-- begin:auto-docs --> _(no submodules)_- [prompts](./src/prompts/prompts.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the canonical error-code registry for `@suaveplan/install-agent-skills`. Every plugin-side failure path (invali…
|
||||
|
||||
- [manifest-loader](./src/manifest-loader.md) — Loads and validates the bundled `assets/skills/manifest.json` produced by `scripts/build-skills-bundle.ts`. The loader…
|
||||
- [plugin](./src/plugin.md) — Composes the agent-skills installer plugin from its constituent stages (`detect`, `prompts`, `plan`, `apply`, `postInst…
|
||||
- [apply](./src/apply/apply.md) — <!-- begin:auto-docs --> _(no submodules)_- [detect](./src/detect/detect.md) — <!-- begin:auto-docs --> _(no submodules)_- [detect](./src/detect/detect.md) — <!-- begin:auto-docs --> _(no submodules)_- [plan](./src/plan/plan.md) — <!-- begin:auto-docs --> _(no submodules)_- [plan](./src/plan/plan.md) — <!-- begin:auto-docs --> _(no submodules)_- [post-install](./src/post-install/post-install.md) — <!-- begin:auto-docs --> _(no submodules)_- [post-install](./src/post-install/post-install.md) — <!-- begin:auto-docs --> _(no submodules)_- [prompts](./src/prompts/prompts.md) — <!-- begin:auto-docs --> _(no submodules)_- [prompts](./src/prompts/prompts.md) — <!-- begin:auto-docs --> _(no submodules)_- [error-codes](./src/error-codes.md) — Defines the canonical error-code registry for `@suaveplan/install-agent-skills`. Every plugin-side failure path (invali…
|
||||
@@ -91,4 +93,3 @@ load-bearing modules.
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
|
||||
@@ -34,7 +34,9 @@ transactional rollback, conflict resolution, and dry-run support.
|
||||
- [run-plugin](./src/testing/run-plugin.md) — End-to-end test harness for plugins. `runPlugin(plugin, options)` wires up an in-memory filesystem, a scripted CLI, a n…
|
||||
- [script-cli](./src/testing/script-cli.md) — Non-TTY `InstallerCli` driven by pre-recorded answers. `ScriptCli` is the default CLI used by `runPlugin` — tests scrip…
|
||||
- [error-codes](./src/error-codes.md) — Defines the canonical error-code registry for `@suaveplan/installer` and the `InstallerError` class that carries those…
|
||||
|
||||
<!-- end:auto-docs --> - [suaveplan-install](./src/bin/suaveplan-install.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [disk-fs](./src/fs/disk-fs.md) — Disk-backed implementation of `MutableInstallerFs` used by the `suaveplan-install` bin and any host-side code that want…
|
||||
|
||||
- [installer-fs](./src/fs/installer-fs.md) — Re-exports the read-only `InstallerFs` interface from the types module and declares its mutating extension `MutableInst…
|
||||
- [memory-fs](./src/fs/memory-fs.md) — In-memory implementation of `MutableInstallerFs`. Used by the testing harness (`runPlugin` constructs one if the caller…
|
||||
- [host](./src/host/host.md) — <!-- begin:auto-docs --> _(no submodules)_- conflict — Resolves the per-op `conflict` policy on…
|
||||
@@ -95,8 +97,8 @@ transactional rollback, conflict resolution, and dry-run support.
|
||||
- [installer-fs](./src/fs/installer-fs.md) — Re-exports the read-only `InstallerFs` interface from the types module and declares its mutating extension `MutableInst…
|
||||
- [memory-fs](./src/fs/memory-fs.md) — In-memory implementation of `MutableInstallerFs`. Used by the testing harness (`runPlugin` constructs one if the caller…
|
||||
- [host](./src/host/host.md) — <!-- begin:auto-docs --> _(no submodules)_ - [apply](./src/host/apply/apply.md) — <!-- begin:auto-docs --> _(no submodules)_ - [apply](./src/host/apply/apply.md) — <!-- begin:auto-docs --> _(no submodules)_ - [conflict](./src/host/apply/conflict.md) — Resolves the per-op `conflict` policy on a target that already exists. Five policies are supported: `error` (raise `APP…
|
||||
- [json-merge](./src/host/apply/json-merge.md) — Implements the deep-merge semantics used by `patch-json` ops with `conflict: "merge"`. Match the conventions of `@suave…
|
||||
- [text-patch](./src/host/apply/text-patch.md) — Applies an ordered sequence of `TextEdit`s to a string. Used by `patch-text` ops to make targeted insertions/deletions/…
|
||||
- [json-merge](./src/host/apply/json-merge.md) — Implements the deep-merge semantics used by `patch-json` ops with `conflict: "merge"`. Match the conventions of `@suave…
|
||||
- [text-patch](./src/host/apply/text-patch.md) — Applies an ordered sequence of `TextEdit`s to a string. Used by `patch-text` ops to make targeted insertions/deletions/…
|
||||
- [detect](./src/host/detect.md) — Runs a plugin's optional `detect` stage inside an OpenTelemetry span. The plugin reports what is already present in the…
|
||||
- [host](./src/host/host.md) — <!-- begin:auto-docs --> _(no submodules)_ - [plan](./src/host/plan.md) — Invokes `plugin.plan(answers, ctx)` and validates the returned `FileOp[]` against `FileOpsSchema` before letting them f…
|
||||
- [post-install](./src/host/post-install.md) — Runs the plugin's optional `postInstall` stage with abort propagation. This is where plugins do follow-up work that doe…
|
||||
@@ -168,4 +170,3 @@ for the load-bearing modules.
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
<!-- begin:auto-docs -->
|
||||
_(no submodules)_
|
||||
<!-- end:auto-docs --> - conflict — Resolves the per-op `conflict` policy on…
|
||||
|
||||
- [conflict](./conflict.md) — Resolves the per-op `conflict` policy on a target that already exists. Five policies are supported: `error` (raise `APP…
|
||||
- [json-merge](./json-merge.md) — Implements the deep-merge semantics used by `patch-json` ops with `conflict: "merge"`. Match the conventions of `@suave…
|
||||
- [text-patch](./text-patch.md) — Applies an ordered sequence of `TextEdit`s to a string. Used by `patch-text` ops to make targeted insertions/deletions/…
|
||||
|
||||
@@ -3,10 +3,11 @@
|
||||
<!-- begin:auto-docs -->
|
||||
_(no submodules)_
|
||||
<!-- end:auto-docs --> - conflict — Resolves the per-op `conflict` policy on…
|
||||
- [apply](./apply/apply.md) — <!-- begin:auto-docs --> _(no submodules)_- conflict — Resolves the per-op `conflict` policy on…
|
||||
- [conflict](./apply/conflict.md) — Resolves the per-op `conflict` policy on a target that already exists. Five policies are supported: `error` (raise `APP…
|
||||
- [json-merge](./apply/json-merge.md) — Implements the deep-merge semantics used by `patch-json` ops with `conflict: "merge"`. Match the conventions of `@suave…
|
||||
- [text-patch](./apply/text-patch.md) — Applies an ordered sequence of `TextEdit`s to a string. Used by `patch-text` ops to make targeted insertions/deletions/…
|
||||
|
||||
- [apply](./apply/apply.md) — <!-- begin:auto-docs --> _(no submodules)_- conflict — Resolves the per-op `conflict` policy on…
|
||||
- [conflict](./apply/conflict.md) — Resolves the per-op `conflict` policy on a target that already exists. Five policies are supported: `error` (raise `APP…
|
||||
- [json-merge](./apply/json-merge.md) — Implements the deep-merge semantics used by `patch-json` ops with `conflict: "merge"`. Match the conventions of `@suave…
|
||||
- [text-patch](./apply/text-patch.md) — Applies an ordered sequence of `TextEdit`s to a string. Used by `patch-text` ops to make targeted insertions/deletions/…
|
||||
- [detect](./detect.md) — Runs a plugin's optional `detect` stage inside an OpenTelemetry span. The plugin reports what is already present in the…
|
||||
- [host](./host.md) — <!-- begin:auto-docs --> _(no submodules)_- conflict — Resolves the per-op `conflict` policy on…
|
||||
- [plan](./plan.md) — Invokes `plugin.plan(answers, ctx)` and validates the returned `FileOp[]` against `FileOpsSchema` before letting them f…
|
||||
|
||||
@@ -83,4 +83,3 @@ import { LINTER_CODES } from "@suaveplan/linter/error-codes";
|
||||
```
|
||||
|
||||
The root `@suaveplan/linter` import re-exports the public surface of every feature.
|
||||
|
||||
|
||||
@@ -91,4 +91,3 @@ All host-side methods of the MCP 2024-11-05 spec: `initialize`, `ping`, `tools/l
|
||||
## License
|
||||
|
||||
MIT — © Suaveplan Team.
|
||||
|
||||
|
||||
@@ -103,4 +103,3 @@ Plug `@opentelemetry/sdk-metrics` in your runtime to harvest them.
|
||||
## Tier
|
||||
|
||||
Universal at the root entry; server at `./discover`.
|
||||
|
||||
|
||||
@@ -66,4 +66,3 @@ await exporter.export(exporter.convertEntries(profiler.getEntries()));
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
|
||||
@@ -45,9 +45,9 @@ await writeFile("flame.json", JSON.stringify(json));
|
||||
|
||||
- `class FlameGraphGenerator` — no constructor args (stateless).
|
||||
- Methods:
|
||||
- `generate(entries: readonly ProfileEntry[]): FlameNode`
|
||||
- `toD3Format(node: FlameNode): { name, value, children }`
|
||||
- `collapseRecursive(node: FlameNode): FlameNode`
|
||||
- `generate(entries: readonly ProfileEntry[]): FlameNode`
|
||||
- `toD3Format(node: FlameNode): { name, value, children }`
|
||||
- `collapseRecursive(node: FlameNode): FlameNode`
|
||||
|
||||
## Implementation Notes
|
||||
|
||||
|
||||
@@ -12,11 +12,11 @@ Owns the OpenTelemetry meter, counters, and histograms emitted by `@suaveplan/pr
|
||||
|
||||
- Lazy-bound meter via `metrics.getMeter("@suaveplan/profiler")` — resolves to a no-op meter when no `MeterProvider` is registered, so importing the module is free in production code paths that opt out of telemetry.
|
||||
- Five instruments:
|
||||
- `profiler_entries_total` (counter, tagged by `category` when present)
|
||||
- `profiler_marks_total` (counter)
|
||||
- `profiler_samples_total` (counter)
|
||||
- `profiler_memory_snapshots_total` (counter)
|
||||
- `profiler_measure_duration_ms` (histogram, unit `ms`)
|
||||
- `profiler_entries_total` (counter, tagged by `category` when present)
|
||||
- `profiler_marks_total` (counter)
|
||||
- `profiler_samples_total` (counter)
|
||||
- `profiler_memory_snapshots_total` (counter)
|
||||
- `profiler_measure_duration_ms` (histogram, unit `ms`)
|
||||
- Pure record helpers (`recordEntry` / `recordMark` / `recordMeasureDuration` / `recordSample` / `recordMemorySnapshot`) so call sites stay readable.
|
||||
|
||||
## Usage: Basic
|
||||
|
||||
@@ -15,7 +15,9 @@ AsyncGenerator line reader and interactive prompt interface for Node.js streams,
|
||||
- [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_ <!-- end:auto-docs -->
|
||||
|
||||
<!-- end:auto-docs --> - [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [interface](./src/interface/interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [interface](./src/interface/interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_- [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [interface](./src/interface/interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [interface](./src/interface/interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_- [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [interface](./src/interface/interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [interface](./src/interface/interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_- [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_- [errors](./src/errors/errors.md) — <!-- begin:auto-docs --> _(no submodules)_- [interface](./src/interface/interface.md) — <!-- begin:auto-docs --> _(no submodules)_ - [interface](./src/interface/interface.md) — <!-- begin:auto-docs --> _(no submodules)_- [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_ - [reader](./src/reader/reader.md) — <!-- begin:auto-docs --> _(no submodules)_- [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_ - [scanner](./src/scanner/scanner.md) — <!-- begin:auto-docs --> _(no submodules)_
|
||||
|
||||
## Install
|
||||
|
||||
```bash
|
||||
|
||||
@@ -105,4 +105,3 @@ engine-level boundary.
|
||||
|
||||
Server (`node:vm` / `node:worker_threads` / `node:child_process` / `node:crypto`).
|
||||
Targets Node ≥ 20 (and Bun, which provides the same APIs).
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ _(no submodules)_
|
||||
|
||||
`ResourceLimiter` enforces two complementary controls on the sandbox boundary: a sliding-window rate limit (so a single caller cannot exhaust the engine with rapid-fire executions) and an output-size cap (so log capture cannot grow unbounded inside long-running scripts). Both controls operate against an injectable `Clock` so tests can advance time deterministically rather than relying on `setTimeout` and observed wall-clock drift.
|
||||
|
||||
The limiter has no opinion about *what* it limits — the same instance is reused across executions, and the rate-limit window slides naturally as time passes. When the configured `maxExecutionsPerWindow` is `undefined`, the limiter is effectively a no-op for rate control; the output truncation still applies.
|
||||
The limiter has no opinion about _what_ it limits — the same instance is reused across executions, and the rate-limit window slides naturally as time passes. When the configured `maxExecutionsPerWindow` is `undefined`, the limiter is effectively a no-op for rate control; the output truncation still applies.
|
||||
|
||||
## Features
|
||||
|
||||
|
||||
@@ -62,4 +62,3 @@ Every feature module is its own subpath export for tree-shake friendliness.
|
||||
## License
|
||||
|
||||
MIT
|
||||
|
||||
|
||||
Reference in New Issue
Block a user