Commit 4248ac6
Add builtin
* Initial plan
* Add builtin qmd documentation search tool support
- Add QmdToolConfig type with docs glob patterns field
- Add DefaultQmdVersion (0.0.16) and QmdArtifactName constants
- Add parseQmdTool parser function
- Register qmd as builtin tool in tools_parser, tools_types, mcp_config_validation
- Activation job: install @tobilu/qmd, build index, upload qmd-index artifact
- Agent job: download qmd-index artifact before MCP setup
- MCP renderer: RenderQmdMCP for JSON/TOML (Node.js + npx serve-mcp)
- MCP setup generator: qmd added to standard MCP tools list
- Claude tools: qmd handled as wildcard MCP server (like serena)
- Docker: add node:lts-alpine pre-pull when qmd is configured
- System prompt: qmd_prompt.md injected when qmd tool is active
- Dependabot: track @tobilu/qmd version in npm deps
- Shell injection prevention: single-quote glob patterns in activation steps
- JSON schema: add qmd tool schema definition
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e5f827de-afbd-4b2e-98e0-7a7d87ed547a
* Mark qmd tool as experimental with compiler warning
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/1dc55c60-1437-4497-a351-d1b7b8d88bfa
* Add per-collection checkout support to qmd tool
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e9a784be-084b-40e0-9bf4-eb76dc81df6d
* Add searches sub-key and rename collections to checkouts in qmd config
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e854d5ea-603f-40f9-8672-434f0246af32
* Add cache-key field to qmd config for GitHub Actions cache support
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/9b048214-2eee-4a65-b213-30364c2769b7
* Add qmd reference documentation page and tools.md entry
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/ad6ae84d-6e38-4ef1-85f1-460c1020189c
* Add actions/cache for qmd models directory in activation and agent jobs
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/61e87d3a-8f40-404a-927f-49c0961aa1ef
* Rename docs to paths in QmdDocCollection, add context field, generate step summary
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/3e6b6f99-104f-414e-8da7-da70bb29cabb
* Remove all legacy backward-compat features from qmd (docs shorthand, collections key, docs alias)
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/d0e81cd9-a648-405d-9fae-9e37430b0a78
* Use actions/cache/restore (read-only) for qmd models cache in agent job
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/a1f6d09e-87c0-4b1d-8266-486db8980cac
* Add named/issue-search support to QmdSearchEntry; add qmd config to smoke-codex
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/1ea4ff00-5c83-46de-b990-7f65ec8fab63
* Fix @tobilu/qmd npm version: 0.0.16 → 2.0.1
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/65fa2584-3040-4635-8344-d25b3e2cffa7
* refactor: replace qmd shell steps with github-script + qmd JS SDK
Instead of generating many shell run: steps for the qmd activation job,
serialize the config as JSON (QMD_CONFIG_JSON env var) and execute a
single actions/github-script step that calls qmd_index.cjs.
The new qmd_index.cjs file uses the @tobilu/qmd JavaScript SDK to:
- Register checkout-based collections via createStore({ config })
- Fetch GitHub code search / issue list results via Octokit and save as files
- Call store.update() to index all files
- Call store.embed() to generate vector embeddings
- Write a Markdown step summary via core.summary
The @tobilu/qmd SDK is installed locally via npm install --prefix
into the gh-aw actions directory so qmd_index.cjs can require() it.
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4131ae22-2f1c-4bc0-a7f9-7483f102cc35
* test: add qmd_index.test.cjs covering all code paths + js-qmd-index CI job
Adds 20 vitest unit tests in actions/setup/js/qmd_index.test.cjs covering:
- Missing QMD_CONFIG_JSON → setFailed
- Missing @tobilu/qmd SDK → setFailed
- Checkout collections: basic, ${ENV_VAR} path expansion, default pattern
- Issues search: valid repo, explicit repo field, invalid slug, empty slug, min-count failure
- Code search: file download, min-count failure, download errors (warning), malformed full_name (skip)
- Combined checkouts + searches
- store.close() always called in finally block
- writeSummary: checkouts table, searches table, index stats, error handling
When @tobilu/qmd is not installed, beforeAll creates a minimal ESM fake at
node_modules/@tobilu/qmd/dist/index.js that returns globalThis.__qmdMockStore__.
Each test sets this global in beforeEach. Uses createRequire() (not eval()) to
allow the dynamic await import(fileUrl) in the script to work.
Also adds js-qmd-index job to .github/workflows/ci.yml that runs these
tests in isolation after validate-yaml.
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/5c4da1f8-aba2-40dd-b076-e13d3a9f8c77
* fix: add @actions/github to qmd npm install step
The qmd_index.cjs script calls getOctokit() from @actions/github when a
custom tokenEnvVar is configured. This package must be installed alongside
@tobilu/qmd in the runner's local prefix directory so the require() resolves
at runtime.
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/f757e6d9-5de3-4fab-bd7a-83fca641f0b3
* fix: use dynamic import() for @actions/github in qmd_index.cjs
@actions/github is ESM-only and has no CJS exports main, so require()
throws ERR_PACKAGE_PATH_NOT_EXPORTED at runtime. Switch getClient() to
async and use await import("@actions/github") instead.
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4fab64ab-7cc4-4b1d-a12c-e85eb679cbe1
* feat: move qmd indexing into a separate "indexing" job
- Add `IndexingJobName = "indexing"` constant
- New `buildQmdIndexingJob()` builds a standalone job that depends on
activation and runs all qmd index-building steps
- Remove qmd steps from the activation job
- Agent job now depends on both activation (for its outputs) and
indexing (for the qmd-index artifact)
- Fix artifact prefix expression in upload step: use
artifactPrefixExprForDownstreamJob (needs.activation.outputs.*) since
the upload now runs in the indexing job, not the activation job
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e25e8e38-e970-4485-87da-65776dd13b0d
* feat: always cache qmd index and add 60min timeout to indexing job
- Add resolveQmdCacheKey() to return user cache-key or default
gh-aw-qmd-${{ github.run_id }} for per-run ephemeral caching
- Always emit cache restore/save steps in indexing job (previously only
when cache-key was explicitly set)
- Add generateQmdIndexCacheRestoreStep() for agent job restore (read-only)
- Add timeout-minutes: 60 to the indexing job
- Build steps are still guarded by cache-hit condition so they are
skipped when a previous run already populated the cache
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4b67c8f9-0127-41de-9682-0be1a2dcb7f3
* feat: add restore-keys to qmd index cache steps for cross-run reuse
Add resolveQmdRestoreKeys() that strips the trailing ${{ ... }} from
the cache key to produce a prefix restore key:
- "gh-aw-qmd-${{ github.run_id }}" → restore-keys: "gh-aw-qmd-"
- "qmd-index-${{ hashFiles('docs/**') }}" → restore-keys: "qmd-index-"
Both the indexing job (generateQmdCacheRestoreStep) and the agent job
(generateQmdIndexCacheRestoreStep) now emit restore-keys so a workflow
can restore the most recently cached index from a previous run even
when the exact run-scoped key is not found, and update it if needed.
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/ea6cdefe-d23e-44fc-aaba-668b7df94c17
* feat: add gpu and runs-on fields to QmdToolConfig
- GPU defaults to false: injects NODE_LLAMA_CPP_GPU="false" into the
Build qmd index step so node-llama-cpp skips GPU probing on CPU runners
- Set gpu: true in workflow frontmatter to re-enable GPU auto-detection
- runs-on overrides the indexing job's runner image (e.g. "ubuntu-latest-gpu"
or "self-hosted") independently of the agent job runner
- JSON schema updated with gpu and runs-on properties for editor completion
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/b2bc7a8c-f3fc-4aad-ab35-84de655a9519
* feat: add qmd MCP HTTP server start step with health probe in agent job
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/92e6bea6-e7ac-4e81-9dc2-4f72aaed1db5
* Remove qmd index cache restore from agent job; default indexing to ubuntu-latest
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/ece7b2a4-efef-4275-baf2-ccbee0e146ea
* feat(qmd): also cache node-llama-cpp binaries in model cache steps
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/232e0cdf-c0e7-4b91-bbc1-f92b9e24fd77
* fix: remove qmd artifact, use exact cache key in agent job, fix npx syntax
- Remove artifact upload from indexing job and artifact download from agent job
since the qmd index is already saved to GitHub Actions cache
- Agent job now restores using the precise cache key (no restore-keys fallback)
so it always gets the exact index built by the current run's indexing job
- Fix npx syntax: use --package=@tobilu/qmd serve-mcp instead of
"@tobilu/qmd" serve-mcp (the serve-mcp binary needs to be invoked
via --package flag, not as a subcommand of the qmd binary)
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e6e6c751-a2eb-4af4-8b24-3fa19ec1a53b
* Split qmd models and node-llama-cpp into separate caches with arch-specific key
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4525e593-734d-4ce7-9e84-093befd24192
* Fix qmd MCP server startup and add version to all cache keys
- Fix start_qmd_server.sh: use `qmd mcp --http` instead of `serve-mcp --http`
(serve-mcp is not a valid binary; the correct CLI subcommand is `mcp --http`)
- Use INDEX_PATH env var so qmd CLI finds the restored index at
/tmp/gh-aw/qmd-index/index.sqlite (overrides getDefaultDbPath())
- Pass GH_AW_QMD_VERSION to npx for version-pinned package install
- Remove QMD_CACHE_DIR (not a real qmd env var, has no effect)
- Include DefaultQmdVersion in all actions/cache keys:
- qmd index: gh-aw-qmd-2.0.1-${{ github.run_id }}
- qmd models: qmd-models-2.0.1-${{ runner.os }}
- node-llama-cpp: node-llama-cpp-2.0.1-${{ runner.os }}-${{ runner.arch }}-${{ runner.imageid }}
- Remove misleading QMD_CACHE_DIR assignment in qmd_index.cjs
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/3e2dfdb1-7152-4977-8ee3-b10482939bae
* fix: change DefaultQmdPort from 3002 to 37842 (less popular port)
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4756e0ac-9791-4bc1-9a38-d76eb7ee65e3
* feat(dev.md): add label_command dev trigger, qmd for docs+issues, and documentation analysis prompt
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/c8a1219c-5448-41e7-8d59-3f4375bc581d
* Add Node.js 24 setup step before qmd MCP server start in agent job
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e5bdee6f-6ed8-4a82-b632-cd298cff9933
* fix: remove label_command from dev.md so workflow_dispatch requires no inputs
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/78734527-c2d1-4744-852b-b8d6253e938d
* Add label_command back to dev.md (no workflow_dispatch inputs)
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/f95c8eac-7373-4251-8158-ad5c09d95fe6
* fix: address review comments and remove mcp-scripts experimental warning
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/a4d1d75b-4c53-4df8-8632-73b4fc469ab8
* initial plan
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/81594ef2-0e76-48ee-800f-2315a74b0bf1
* Remove qmd HTTP server script; configure qmd as gateway-managed container MCP server
- Delete start_qmd_server.sh and remove generateQmdSetupNodeStep/generateQmdStartServerStep
- Update renderQmdTOML and renderQmdMCPConfigWithOptions to use node:24 container with stdio transport
- Gateway starts qmd via npx with /tmp/gh-aw and ${HOME}/.cache/qmd mounts
- Replace GH_AW_QMD_PORT env var with INDEX_PATH/NODE_LLAMA_CPP_GPU in mcp_environment.go
- Remove unused DefaultQmdPort constant and generateQmdNodeLlamaCppCacheRestoreStep function
- Update golden test files (pre-existing mcpg version bump from main merge)
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/81594ef2-0e76-48ee-800f-2315a74b0bf1
* fix: replace env_vars array with env object in qmd MCP config
The gateway schema requires env as an object (key-value pairs), not
env_vars as an array. This caused the validation error:
additionalProperties 'env_vars' not allowed
- INDEX_PATH and NODE_LLAMA_CPP_GPU use \${VAR} so heredoc does not
expand them; the gateway resolves them from its own environment
- HOME uses ${HOME} (no backslash) so heredoc expands to /home/runner,
since HOME is not passed to the gateway container
- Use sortedMapKeys for deterministic output and to keep keys/values in sync
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4091c5b1-577e-47b1-9500-d16f21a79db9
* chore: merge origin/main, rebuild, recompile, update golden files
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/51228c75-5a27-4790-8a79-2df6819091bd
* fix: add NO_COLOR=1 to qmd container env and guard-policies to qmd MCP config
- Add NO_COLOR=1 to qmd container environment (both TOML and JSON renderers)
to prevent ANSI escape codes from corrupting the JSON-RPC stream
- Add guard-policies support to qmd MCP config in both TOML and JSON formats,
consistent with playwright, serena, mcp-scripts, and agentic-workflows
Fixes gateway error: invalid character '\x1b' looking for beginning of value
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/b99aded2-8a95-458f-a171-afa6b8debabf
* Add CI=1 to qmd container env to suppress node-llama-cpp progress output
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/de0be902-9461-4165-a6a1-33f4984e886c
* fix: switch qmd MCP to HTTP transport to eliminate ANSI stdout corruption
The root cause was Llama._callLogger() in node-llama-cpp v3 writing dot-progress
characters directly to process.stdout (bypassing log levels and NO_COLOR=1) during
model loading on first tool call. This corrupted the stdio JSON-RPC stream.
Instead of CI=1 (which disabled qmd LLM operations via LlamaCpp._ciMode check),
switch qmd to HTTP transport (qmd mcp --http). A new 'Start QMD MCP Server' step
starts qmd in a Docker container before the gateway; the MCP protocol travels over
TCP/HTTP, completely independent of qmd's stdout/stderr.
- Add DefaultQmdMCPPort = 8181 constant
- generateQmdStartStep(): Docker start + curl health-check (120s timeout)
- mcp_setup_generator: add qmd start step before gateway
- mcp_renderer_builtin: replace container/stdio config with HTTP URL
- Update RenderQmd signature to pass workflowData for host resolution
- Remove INDEX_PATH/NODE_LLAMA_CPP_GPU from gateway env (now in Docker step)
- Recompile all 177 lock files
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/1769cafa-6727-4bf8-b4ea-44a3f8eb589d
* fix: run qmd MCP server natively on VM instead of in Docker container
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/0ce24d39-ceb1-447b-86ee-fa8fcce7a34b
* placeholder for planning
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/78657957-9d39-4cf3-8b27-2f585b36aeb4
* feat(qmd): use aw-gpu-runner-T4 as default indexing job runner
Change the default runner for the qmd indexing job from ubuntu-latest
to aw-gpu-runner-T4, enabling GPU acceleration for node-llama-cpp
during the embedding phase. Users can still override with runs-on:.
Add DefaultQmdIndexingRunnerImage constant in pkg/constants/constants.go.
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/78657957-9d39-4cf3-8b27-2f585b36aeb4
* revert default qmd runner to ubuntu-latest, set aw-gpu-runner-T4 in dev.md
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/4b64a23b-c604-4c19-b141-d8b92660beba
* feat: enable GPU support for QMD in dev workflow
* chore: merge main and recompile lock files
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/b8c38a29-aabd-4f05-bdf2-e26dbc1e9529
* fix: resolve TypeScript undefined errors in qmd_index.cjs
Use null-coalescing/short-circuit checks for optional fields (checkouts,
searches, min, max) so tsc --noEmit passes without errors.
- Extract config.checkouts ?? [] and config.searches ?? [] before
iterating in writeSummary
- Use && guards for search.max and search.min comparisons
- Use search.min ?? 0 for minCount variable
All 20 qmd_index tests still pass.
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/d0d5208c-2141-4f99-b526-1be3cfed1b3c
* plan: fix invalid frontmatter anchor links in qmd docs
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e8e29554-d8d1-45de-9bb0-617854e9fd90
* fix: correct invalid frontmatter anchor links in qmd docs
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Agent-Logs-Url: https://github.com/github/gh-aw/sessions/e8e29554-d8d1-45de-9bb0-617854e9fd90
---------
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: pelikhan <4175913+pelikhan@users.noreply.github.com>
Co-authored-by: Peli de Halleux <pelikhan@users.noreply.github.com>qmd documentation search tool (experimental) (#22183)1 parent 7d0aa2d commit 4248ac6
File tree
34 files changed
+2731
-45
lines changed- .github/workflows
- actions/setup
- js
- md
- docs/src/content/docs/reference
- pkg
- constants
- parser/schemas
- workflow
34 files changed
+2731
-45
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
871 | 871 | | |
872 | 872 | | |
873 | 873 | | |
| 874 | + | |
| 875 | + | |
| 876 | + | |
| 877 | + | |
| 878 | + | |
| 879 | + | |
| 880 | + | |
| 881 | + | |
| 882 | + | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
| 887 | + | |
| 888 | + | |
| 889 | + | |
| 890 | + | |
| 891 | + | |
| 892 | + | |
| 893 | + | |
| 894 | + | |
| 895 | + | |
| 896 | + | |
| 897 | + | |
| 898 | + | |
| 899 | + | |
| 900 | + | |
| 901 | + | |
| 902 | + | |
| 903 | + | |
| 904 | + | |
874 | 905 | | |
875 | 906 | | |
876 | 907 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
| 4 | + | |
4 | 5 | | |
5 | 6 | | |
6 | 7 | | |
| |||
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
17 | 34 | | |
18 | 35 | | |
19 | 36 | | |
| |||
24 | 41 | | |
25 | 42 | | |
26 | 43 | | |
27 | | - | |
| 44 | + | |
28 | 45 | | |
29 | 46 | | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
35 | 59 | | |
36 | 60 | | |
37 | 61 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
34 | 34 | | |
35 | 35 | | |
36 | 36 | | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
37 | 49 | | |
38 | 50 | | |
39 | 51 | | |
| |||
0 commit comments