@asterxsk/kiln 0.3.0 → 0.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +155 -155
- package/agent/AGENTS.md +67 -67
- package/agent/README.md +5 -5
- package/agent/extensions/ask-user/index.ts +418 -418
- package/agent/extensions/ask-user/install.ps1 +27 -27
- package/agent/extensions/ask-user/install.sh +24 -24
- package/agent/extensions/ask-user/package-lock.json +769 -769
- package/agent/extensions/ask-user/package.json +19 -19
- package/agent/extensions/ask-user/prompt.ts +45 -45
- package/agent/extensions/ask-user/tsconfig.json +7 -7
- package/agent/extensions/background-terminals/docs/implementation-guide.md +942 -942
- package/agent/extensions/background-terminals/index.ts +627 -627
- package/agent/extensions/background-terminals/install.ps1 +27 -27
- package/agent/extensions/background-terminals/install.sh +24 -24
- package/agent/extensions/background-terminals/manager.test.ts +735 -735
- package/agent/extensions/background-terminals/output.test.ts +109 -109
- package/agent/extensions/background-terminals/package-lock.json +769 -769
- package/agent/extensions/background-terminals/package.json +17 -17
- package/agent/extensions/background-terminals/prompt.test.ts +125 -125
- package/agent/extensions/background-terminals/ps.test.ts +82 -82
- package/agent/extensions/background-terminals/result-delivery.test.ts +44 -44
- package/agent/extensions/background-terminals/src/domain.ts +87 -87
- package/agent/extensions/background-terminals/src/manager.ts +907 -907
- package/agent/extensions/background-terminals/src/output.ts +84 -84
- package/agent/extensions/background-terminals/src/prompt.ts +142 -142
- package/agent/extensions/background-terminals/src/result-delivery.ts +27 -27
- package/agent/extensions/background-terminals/src/runtime.ts +36 -36
- package/agent/extensions/background-terminals/src/ui/output-view.ts +79 -79
- package/agent/extensions/background-terminals/src/ui/ps.ts +621 -621
- package/agent/extensions/background-terminals/tsconfig.json +7 -7
- package/agent/extensions/destructive/README.md +31 -31
- package/agent/extensions/destructive/index.ts +88 -88
- package/agent/extensions/destructive/install.ps1 +27 -27
- package/agent/extensions/destructive/install.sh +24 -24
- package/agent/extensions/file-search/index.spec.ts +443 -443
- package/agent/extensions/file-search/index.ts +459 -459
- package/agent/extensions/file-search/install.ps1 +27 -27
- package/agent/extensions/file-search/install.sh +24 -24
- package/agent/extensions/file-search/package-lock.json +2253 -2253
- package/agent/extensions/file-search/package.json +23 -23
- package/agent/extensions/file-search/src/args.ts +122 -122
- package/agent/extensions/file-search/src/binaries.ts +422 -422
- package/agent/extensions/file-search/src/output.ts +126 -126
- package/agent/extensions/file-search/src/process.ts +146 -146
- package/agent/extensions/file-search/src/prompt.ts +52 -52
- package/agent/extensions/file-search/tsconfig.json +7 -7
- package/agent/extensions/goal/README.md +50 -50
- package/agent/extensions/goal/index.ts +155 -155
- package/agent/extensions/goal/install.ps1 +27 -27
- package/agent/extensions/goal/install.sh +24 -24
- package/agent/extensions/kiln-update/README.md +38 -25
- package/agent/extensions/kiln-update/index.ts +177 -99
- package/agent/extensions/modelconf/PLAN.md +915 -915
- package/agent/extensions/modelconf/README.md +66 -66
- package/agent/extensions/modelconf/index.ts +296 -296
- package/agent/extensions/modelconf/install.ps1 +27 -27
- package/agent/extensions/modelconf/install.sh +24 -24
- package/agent/extensions/modelconf/package-lock.json +1809 -1809
- package/agent/extensions/modelconf/package.json +13 -13
- package/agent/extensions/modelconf/src/fuzzy.ts +26 -26
- package/agent/extensions/modelconf/src/glob.ts +13 -13
- package/agent/extensions/modelconf/src/persistence.test.ts +46 -46
- package/agent/extensions/modelconf/src/persistence.ts +164 -164
- package/agent/extensions/modelconf/src/ui/ModelConfView.test.ts +75 -75
- package/agent/extensions/modelconf/src/ui/ModelConfView.ts +1101 -1101
- package/agent/extensions/modelconf/tsconfig.json +15 -15
- package/agent/extensions/pi-web-access/CHANGELOG.md +690 -690
- package/agent/extensions/pi-web-access/LICENSE +21 -21
- package/agent/extensions/pi-web-access/README.md +470 -470
- package/agent/extensions/pi-web-access/SECURITY.md +5 -5
- package/agent/extensions/pi-web-access/activity.ts +101 -101
- package/agent/extensions/pi-web-access/auth-fetch.ts +148 -148
- package/agent/extensions/pi-web-access/brightdata-unlocker.ts +272 -272
- package/agent/extensions/pi-web-access/chrome-cookies.ts +669 -669
- package/agent/extensions/pi-web-access/content-find.ts +139 -139
- package/agent/extensions/pi-web-access/credential-source.ts +191 -191
- package/agent/extensions/pi-web-access/data-uri-sanitize.ts +406 -406
- package/agent/extensions/pi-web-access/datalab-pdf-extract.ts +568 -568
- package/agent/extensions/pi-web-access/declared-web-links.ts +173 -173
- package/agent/extensions/pi-web-access/evidence/CONTRACT-EVIDENCE.md +496 -496
- package/agent/extensions/pi-web-access/evidence/contract-probe.mjs +140 -140
- package/agent/extensions/pi-web-access/exa.ts +526 -526
- package/agent/extensions/pi-web-access/extract.ts +1196 -1196
- package/agent/extensions/pi-web-access/feature-config.ts +29 -29
- package/agent/extensions/pi-web-access/fetch-params.ts +111 -111
- package/agent/extensions/pi-web-access/gemini-adc.ts +298 -298
- package/agent/extensions/pi-web-access/gemini-api.ts +353 -353
- package/agent/extensions/pi-web-access/gemini-pdf-extract.ts +108 -108
- package/agent/extensions/pi-web-access/gemini-search.ts +21 -21
- package/agent/extensions/pi-web-access/gemini-url-context.ts +128 -128
- package/agent/extensions/pi-web-access/gemini-web-config.ts +101 -101
- package/agent/extensions/pi-web-access/gemini-web.ts +487 -487
- package/agent/extensions/pi-web-access/github-api.ts +197 -197
- package/agent/extensions/pi-web-access/github-extract.ts +746 -746
- package/agent/extensions/pi-web-access/github-issue-pr.ts +700 -700
- package/agent/extensions/pi-web-access/index.ts +1737 -1737
- package/agent/extensions/pi-web-access/package-lock.json +5808 -5808
- package/agent/extensions/pi-web-access/package.json +64 -64
- package/agent/extensions/pi-web-access/page-query.ts +96 -96
- package/agent/extensions/pi-web-access/pdf-extract.ts +409 -409
- package/agent/extensions/pi-web-access/promise-try.d.ts +7 -7
- package/agent/extensions/pi-web-access/query-rewrite.ts +51 -51
- package/agent/extensions/pi-web-access/render-search-error.ts +170 -170
- package/agent/extensions/pi-web-access/rsc-extract.ts +338 -338
- package/agent/extensions/pi-web-access/search-types.ts +20 -20
- package/agent/extensions/pi-web-access/source-check.ts +282 -282
- package/agent/extensions/pi-web-access/ssrf-protection.ts +526 -526
- package/agent/extensions/pi-web-access/storage.ts +521 -521
- package/agent/extensions/pi-web-access/summary-model-scope.ts +125 -125
- package/agent/extensions/pi-web-access/test/auth-fetch.test.mjs +208 -208
- package/agent/extensions/pi-web-access/test/brightdata-unlocker.test.mjs +840 -840
- package/agent/extensions/pi-web-access/test/chrome-cookie-extraction.test.mjs +441 -441
- package/agent/extensions/pi-web-access/test/config-path.test.mjs +283 -283
- package/agent/extensions/pi-web-access/test/content-find.test.mjs +25 -25
- package/agent/extensions/pi-web-access/test/credential-source.test.mjs +118 -118
- package/agent/extensions/pi-web-access/test/data-uri-sanitize.test.mjs +210 -210
- package/agent/extensions/pi-web-access/test/datalab-pdf-extract.test.mjs +552 -552
- package/agent/extensions/pi-web-access/test/declared-web-links.test.mjs +212 -212
- package/agent/extensions/pi-web-access/test/fetch-answer-storage.test.mjs +40 -40
- package/agent/extensions/pi-web-access/test/fetch-cache-storage.test.mjs +334 -334
- package/agent/extensions/pi-web-access/test/fetch-content-domain-policy.test.mjs +95 -95
- package/agent/extensions/pi-web-access/test/fetch-modes.test.mjs +53 -53
- package/agent/extensions/pi-web-access/test/fetch-not-found-guidance.test.mjs +92 -92
- package/agent/extensions/pi-web-access/test/fetch-params.test.mjs +86 -86
- package/agent/extensions/pi-web-access/test/fetch-render-call.test.mjs +34 -34
- package/agent/extensions/pi-web-access/test/fetch-routing.test.mjs +173 -173
- package/agent/extensions/pi-web-access/test/gemini-adc-auth.test.mjs +257 -257
- package/agent/extensions/pi-web-access/test/gemini-api-transport.test.mjs +170 -170
- package/agent/extensions/pi-web-access/test/gemini-pdf-extract.test.mjs +133 -133
- package/agent/extensions/pi-web-access/test/gemini-web-cookie-opt-in.test.mjs +178 -178
- package/agent/extensions/pi-web-access/test/gemini-web-header-overflow.test.mjs +148 -148
- package/agent/extensions/pi-web-access/test/get-search-content.test.mjs +223 -223
- package/agent/extensions/pi-web-access/test/github-extract.test.mjs +378 -378
- package/agent/extensions/pi-web-access/test/github-issue-pr.test.mjs +565 -565
- package/agent/extensions/pi-web-access/test/inline-content-config.test.mjs +99 -99
- package/agent/extensions/pi-web-access/test/lazy-extract-load.test.mjs +118 -118
- package/agent/extensions/pi-web-access/test/local-video-oversize.test.mjs +52 -52
- package/agent/extensions/pi-web-access/test/package-typebox-dependency.test.mjs +50 -50
- package/agent/extensions/pi-web-access/test/page-query.test.mjs +51 -51
- package/agent/extensions/pi-web-access/test/pdf-config.test.mjs +140 -140
- package/agent/extensions/pi-web-access/test/pdf-extract.test.mjs +500 -500
- package/agent/extensions/pi-web-access/test/proxy-transport.test.mjs +286 -286
- package/agent/extensions/pi-web-access/test/query-rewrite.test.mjs +52 -52
- package/agent/extensions/pi-web-access/test/rsc-fallback.test.mjs +102 -102
- package/agent/extensions/pi-web-access/test/search-error-render.test.mjs +152 -152
- package/agent/extensions/pi-web-access/test/search-providers.test.mjs +274 -274
- package/agent/extensions/pi-web-access/test/source-check.test.mjs +179 -179
- package/agent/extensions/pi-web-access/test/ssrf-allow-ranges-config.test.mjs +205 -205
- package/agent/extensions/pi-web-access/test/ssrf-protection.test.mjs +456 -456
- package/agent/extensions/pi-web-access/test/summary-model-scope.test.mjs +106 -106
- package/agent/extensions/pi-web-access/test/tool-registration-config.test.mjs +182 -182
- package/agent/extensions/pi-web-access/test/web-search-answer-render.test.mjs +66 -66
- package/agent/extensions/pi-web-access/test/youtube-extract-errors.test.mjs +64 -64
- package/agent/extensions/pi-web-access/tsconfig.json +11 -11
- package/agent/extensions/pi-web-access/utils.ts +451 -451
- package/agent/extensions/pi-web-access/video-extract.ts +392 -392
- package/agent/extensions/pi-web-access/youtube-extract.ts +328 -328
- package/agent/extensions/shared/activity-status.ts +31 -31
- package/agent/extensions/shared/child-session.test.ts +270 -270
- package/agent/extensions/shared/child-session.ts +148 -148
- package/agent/extensions/shared/context-utilization.test.ts +48 -48
- package/agent/extensions/shared/context-utilization.ts +47 -47
- package/agent/extensions/shared/dashboard-state.ts +99 -99
- package/agent/extensions/shared/install.ps1 +27 -27
- package/agent/extensions/shared/install.sh +24 -24
- package/agent/extensions/shared/tool-call-timeout.test.ts +117 -117
- package/agent/extensions/shared/tool-call-timeout.ts +104 -104
- package/agent/extensions/skillsconf/README.md +74 -74
- package/agent/extensions/skillsconf/index.ts +92 -92
- package/agent/extensions/skillsconf/install.ps1 +27 -27
- package/agent/extensions/skillsconf/install.sh +24 -24
- package/agent/extensions/skillsconf/package-lock.json +1809 -1809
- package/agent/extensions/skillsconf/package.json +18 -18
- package/agent/extensions/skillsconf/src/delete-skill.test.ts +64 -64
- package/agent/extensions/skillsconf/src/delete-skill.ts +45 -45
- package/agent/extensions/skillsconf/src/filter.test.ts +80 -80
- package/agent/extensions/skillsconf/src/filter.ts +74 -74
- package/agent/extensions/skillsconf/src/fuzzy.ts +26 -26
- package/agent/extensions/skillsconf/src/persistence.test.ts +72 -72
- package/agent/extensions/skillsconf/src/persistence.ts +169 -169
- package/agent/extensions/skillsconf/src/ui/SkillConfView.test.ts +337 -337
- package/agent/extensions/skillsconf/src/ui/SkillConfView.ts +758 -758
- package/agent/extensions/skillsconf/src/ui/text-input.ts +91 -91
- package/agent/extensions/skillsconf/src/ui/tui-helpers.ts +144 -144
- package/agent/extensions/skillsconf/tsconfig.json +15 -15
- package/agent/extensions/statusline/index.ts +273 -282
- package/agent/extensions/statusline/install.ps1 +27 -27
- package/agent/extensions/statusline/install.sh +24 -24
- package/agent/extensions/subagents/by-the-way.test.ts +29 -29
- package/agent/extensions/subagents/claude.test.ts +119 -119
- package/agent/extensions/subagents/codex.test.ts +102 -102
- package/agent/extensions/subagents/context-usage.test.ts +107 -107
- package/agent/extensions/subagents/docs/design-plan.md +568 -568
- package/agent/extensions/subagents/docs/effect-v4-extension-guide.md +354 -354
- package/agent/extensions/subagents/docs/effect-v4-notes.md +571 -571
- package/agent/extensions/subagents/index.ts +779 -779
- package/agent/extensions/subagents/install.ps1 +27 -27
- package/agent/extensions/subagents/install.sh +24 -24
- package/agent/extensions/subagents/manager.test.ts +276 -276
- package/agent/extensions/subagents/package-lock.json +2244 -2244
- package/agent/extensions/subagents/package.json +19 -19
- package/agent/extensions/subagents/result-delivery.test.ts +27 -27
- package/agent/extensions/subagents/src/backend.ts +73 -73
- package/agent/extensions/subagents/src/backends/claude.ts +701 -701
- package/agent/extensions/subagents/src/backends/codex.ts +1060 -1060
- package/agent/extensions/subagents/src/backends/pi.ts +575 -575
- package/agent/extensions/subagents/src/backends/stub.ts +300 -300
- package/agent/extensions/subagents/src/by-the-way.ts +21 -21
- package/agent/extensions/subagents/src/domain.ts +253 -253
- package/agent/extensions/subagents/src/format.ts +74 -74
- package/agent/extensions/subagents/src/manager.ts +736 -736
- package/agent/extensions/subagents/src/prompt.ts +92 -92
- package/agent/extensions/subagents/src/result-delivery.ts +20 -20
- package/agent/extensions/subagents/src/runtime.ts +53 -53
- package/agent/extensions/subagents/src/ui/takeover.ts +583 -583
- package/agent/extensions/subagents/src/ui/transcript.ts +201 -201
- package/agent/extensions/subagents/takeover.test.ts +29 -29
- package/agent/extensions/subagents/tsconfig.json +7 -7
- package/agent/extensions/todo/AGENTS.md +38 -38
- package/agent/extensions/todo/LICENSE +21 -21
- package/agent/extensions/todo/config.ts +55 -55
- package/agent/extensions/todo/index.ts +151 -151
- package/agent/extensions/todo/install.ps1 +27 -27
- package/agent/extensions/todo/install.sh +24 -24
- package/agent/extensions/todo/locales/de.json +17 -17
- package/agent/extensions/todo/locales/en.json +15 -15
- package/agent/extensions/todo/locales/es.json +17 -17
- package/agent/extensions/todo/locales/fr.json +17 -17
- package/agent/extensions/todo/locales/pt-BR.json +17 -17
- package/agent/extensions/todo/locales/pt.json +17 -17
- package/agent/extensions/todo/locales/ru.json +17 -17
- package/agent/extensions/todo/locales/uk.json +17 -17
- package/agent/extensions/todo/locales/zh.json +17 -17
- package/agent/extensions/todo/package-lock.json +3358 -3358
- package/agent/extensions/todo/package.json +67 -67
- package/agent/extensions/todo/state/i18n-bridge.ts +64 -64
- package/agent/extensions/todo/state/invariants.ts +20 -20
- package/agent/extensions/todo/state/replay.ts +38 -38
- package/agent/extensions/todo/state/selectors.ts +107 -107
- package/agent/extensions/todo/state/state-reducer.ts +326 -326
- package/agent/extensions/todo/state/state.ts +18 -18
- package/agent/extensions/todo/state/store.ts +82 -82
- package/agent/extensions/todo/state/task-graph.ts +57 -57
- package/agent/extensions/todo/todo-overlay.ts +200 -200
- package/agent/extensions/todo/todo.ts +155 -155
- package/agent/extensions/todo/tool/response-envelope.ts +109 -109
- package/agent/extensions/todo/tool/types.ts +206 -206
- package/agent/extensions/todo/view/format.ts +177 -177
- package/agent/extensions/trim-context/README.md +54 -54
- package/agent/extensions/trim-context/index.ts +487 -487
- package/agent/extensions/trim-context/install.ps1 +27 -27
- package/agent/extensions/trim-context/install.sh +24 -24
- package/agent/keybindings.json +7 -7
- package/agent/version.txt +1 -1
- package/bin/kiln.js +30 -21
- package/package.json +1 -1
- package/agent/extensions/taste/index.ts +0 -443
- package/agent/extensions/taste/install.ps1 +0 -27
- package/agent/extensions/taste/install.sh +0 -24
- package/agent.bak.20260905-190020/AGENTS.md +0 -67
- package/agent.bak.20260905-190020/README.md +0 -5
- package/agent.bak.20260905-190020/extensions/ask-user/index.ts +0 -418
- package/agent.bak.20260905-190020/extensions/ask-user/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/ask-user/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/ask-user/package-lock.json +0 -769
- package/agent.bak.20260905-190020/extensions/ask-user/package.json +0 -19
- package/agent.bak.20260905-190020/extensions/ask-user/prompt.ts +0 -45
- package/agent.bak.20260905-190020/extensions/ask-user/tsconfig.json +0 -7
- package/agent.bak.20260905-190020/extensions/background-terminals/docs/implementation-guide.md +0 -942
- package/agent.bak.20260905-190020/extensions/background-terminals/index.ts +0 -629
- package/agent.bak.20260905-190020/extensions/background-terminals/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/background-terminals/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/background-terminals/package-lock.json +0 -769
- package/agent.bak.20260905-190020/extensions/background-terminals/package.json +0 -17
- package/agent.bak.20260905-190020/extensions/background-terminals/src/domain.ts +0 -87
- package/agent.bak.20260905-190020/extensions/background-terminals/src/manager.ts +0 -907
- package/agent.bak.20260905-190020/extensions/background-terminals/src/output.ts +0 -84
- package/agent.bak.20260905-190020/extensions/background-terminals/src/prompt.ts +0 -142
- package/agent.bak.20260905-190020/extensions/background-terminals/src/result-delivery.ts +0 -27
- package/agent.bak.20260905-190020/extensions/background-terminals/src/runtime.ts +0 -36
- package/agent.bak.20260905-190020/extensions/background-terminals/src/ui/output-view.ts +0 -79
- package/agent.bak.20260905-190020/extensions/background-terminals/src/ui/ps.ts +0 -621
- package/agent.bak.20260905-190020/extensions/background-terminals/src/widget-order.ts +0 -121
- package/agent.bak.20260905-190020/extensions/background-terminals/test/manager.test.ts +0 -735
- package/agent.bak.20260905-190020/extensions/background-terminals/test/output.test.ts +0 -109
- package/agent.bak.20260905-190020/extensions/background-terminals/test/prompt.test.ts +0 -125
- package/agent.bak.20260905-190020/extensions/background-terminals/test/ps.test.ts +0 -82
- package/agent.bak.20260905-190020/extensions/background-terminals/test/result-delivery.test.ts +0 -44
- package/agent.bak.20260905-190020/extensions/background-terminals/tsconfig.json +0 -7
- package/agent.bak.20260905-190020/extensions/destructive/README.md +0 -34
- package/agent.bak.20260905-190020/extensions/destructive/index.ts +0 -124
- package/agent.bak.20260905-190020/extensions/destructive/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/destructive/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/file-search/index.ts +0 -459
- package/agent.bak.20260905-190020/extensions/file-search/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/file-search/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/file-search/package-lock.json +0 -2253
- package/agent.bak.20260905-190020/extensions/file-search/package.json +0 -23
- package/agent.bak.20260905-190020/extensions/file-search/src/args.ts +0 -122
- package/agent.bak.20260905-190020/extensions/file-search/src/binaries.ts +0 -422
- package/agent.bak.20260905-190020/extensions/file-search/src/output.ts +0 -126
- package/agent.bak.20260905-190020/extensions/file-search/src/process.ts +0 -146
- package/agent.bak.20260905-190020/extensions/file-search/src/prompt.ts +0 -52
- package/agent.bak.20260905-190020/extensions/file-search/test/index.spec.ts +0 -443
- package/agent.bak.20260905-190020/extensions/file-search/tsconfig.json +0 -7
- package/agent.bak.20260905-190020/extensions/goal/README.md +0 -50
- package/agent.bak.20260905-190020/extensions/goal/index.ts +0 -155
- package/agent.bak.20260905-190020/extensions/goal/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/goal/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/kiln-update/README.md +0 -25
- package/agent.bak.20260905-190020/extensions/kiln-update/index.ts +0 -99
- package/agent.bak.20260905-190020/extensions/kiln-update/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/kiln-update/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/modelconf/PLAN.md +0 -915
- package/agent.bak.20260905-190020/extensions/modelconf/README.md +0 -66
- package/agent.bak.20260905-190020/extensions/modelconf/index.ts +0 -296
- package/agent.bak.20260905-190020/extensions/modelconf/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/modelconf/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/modelconf/package-lock.json +0 -1809
- package/agent.bak.20260905-190020/extensions/modelconf/package.json +0 -13
- package/agent.bak.20260905-190020/extensions/modelconf/src/fuzzy.ts +0 -26
- package/agent.bak.20260905-190020/extensions/modelconf/src/glob.ts +0 -13
- package/agent.bak.20260905-190020/extensions/modelconf/src/persistence.test.ts +0 -46
- package/agent.bak.20260905-190020/extensions/modelconf/src/persistence.ts +0 -164
- package/agent.bak.20260905-190020/extensions/modelconf/src/ui/ModelConfView.test.ts +0 -75
- package/agent.bak.20260905-190020/extensions/modelconf/src/ui/ModelConfView.ts +0 -1101
- package/agent.bak.20260905-190020/extensions/modelconf/tsconfig.json +0 -15
- package/agent.bak.20260905-190020/extensions/pi-web-access/CHANGELOG.md +0 -690
- package/agent.bak.20260905-190020/extensions/pi-web-access/LICENSE +0 -21
- package/agent.bak.20260905-190020/extensions/pi-web-access/README.md +0 -470
- package/agent.bak.20260905-190020/extensions/pi-web-access/SECURITY.md +0 -5
- package/agent.bak.20260905-190020/extensions/pi-web-access/activity.ts +0 -101
- package/agent.bak.20260905-190020/extensions/pi-web-access/auth-fetch.ts +0 -148
- package/agent.bak.20260905-190020/extensions/pi-web-access/banner.png +0 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/brightdata-unlocker.ts +0 -272
- package/agent.bak.20260905-190020/extensions/pi-web-access/chrome-cookies.ts +0 -669
- package/agent.bak.20260905-190020/extensions/pi-web-access/content-find.ts +0 -139
- package/agent.bak.20260905-190020/extensions/pi-web-access/credential-source.ts +0 -191
- package/agent.bak.20260905-190020/extensions/pi-web-access/data-uri-sanitize.ts +0 -406
- package/agent.bak.20260905-190020/extensions/pi-web-access/datalab-pdf-extract.ts +0 -568
- package/agent.bak.20260905-190020/extensions/pi-web-access/declared-web-links.ts +0 -173
- package/agent.bak.20260905-190020/extensions/pi-web-access/evidence/CONTRACT-EVIDENCE.md +0 -496
- package/agent.bak.20260905-190020/extensions/pi-web-access/evidence/contract-probe.mjs +0 -140
- package/agent.bak.20260905-190020/extensions/pi-web-access/exa.ts +0 -526
- package/agent.bak.20260905-190020/extensions/pi-web-access/extract.ts +0 -1196
- package/agent.bak.20260905-190020/extensions/pi-web-access/feature-config.ts +0 -29
- package/agent.bak.20260905-190020/extensions/pi-web-access/fetch-params.ts +0 -111
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-adc.ts +0 -298
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-api.ts +0 -353
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-pdf-extract.ts +0 -108
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-search.ts +0 -21
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-url-context.ts +0 -128
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-web-config.ts +0 -101
- package/agent.bak.20260905-190020/extensions/pi-web-access/gemini-web.ts +0 -487
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-api.ts +0 -197
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-extract.ts +0 -746
- package/agent.bak.20260905-190020/extensions/pi-web-access/github-issue-pr.ts +0 -700
- package/agent.bak.20260905-190020/extensions/pi-web-access/index.ts +0 -1737
- package/agent.bak.20260905-190020/extensions/pi-web-access/package-lock.json +0 -5808
- package/agent.bak.20260905-190020/extensions/pi-web-access/package.json +0 -64
- package/agent.bak.20260905-190020/extensions/pi-web-access/page-query.ts +0 -96
- package/agent.bak.20260905-190020/extensions/pi-web-access/pdf-extract.ts +0 -409
- package/agent.bak.20260905-190020/extensions/pi-web-access/pi-web-fetch-demo.mp4 +0 -0
- package/agent.bak.20260905-190020/extensions/pi-web-access/promise-try.d.ts +0 -7
- package/agent.bak.20260905-190020/extensions/pi-web-access/query-rewrite.ts +0 -51
- package/agent.bak.20260905-190020/extensions/pi-web-access/render-search-error.ts +0 -170
- package/agent.bak.20260905-190020/extensions/pi-web-access/rsc-extract.ts +0 -338
- package/agent.bak.20260905-190020/extensions/pi-web-access/search-types.ts +0 -20
- package/agent.bak.20260905-190020/extensions/pi-web-access/source-check.ts +0 -282
- package/agent.bak.20260905-190020/extensions/pi-web-access/ssrf-protection.ts +0 -526
- package/agent.bak.20260905-190020/extensions/pi-web-access/storage.ts +0 -521
- package/agent.bak.20260905-190020/extensions/pi-web-access/summary-model-scope.ts +0 -125
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/auth-fetch.test.mjs +0 -208
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/brightdata-unlocker.test.mjs +0 -840
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/chrome-cookie-extraction.test.mjs +0 -441
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/config-path.test.mjs +0 -283
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/content-find.test.mjs +0 -25
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/credential-source.test.mjs +0 -118
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/data-uri-sanitize.test.mjs +0 -210
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/datalab-pdf-extract.test.mjs +0 -552
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/declared-web-links.test.mjs +0 -212
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-answer-storage.test.mjs +0 -40
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-cache-storage.test.mjs +0 -334
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-content-domain-policy.test.mjs +0 -95
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-modes.test.mjs +0 -53
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-not-found-guidance.test.mjs +0 -92
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-params.test.mjs +0 -86
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-render-call.test.mjs +0 -34
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/fetch-routing.test.mjs +0 -173
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-adc-auth.test.mjs +0 -257
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-api-transport.test.mjs +0 -170
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-pdf-extract.test.mjs +0 -133
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-web-cookie-opt-in.test.mjs +0 -178
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/gemini-web-header-overflow.test.mjs +0 -148
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/get-search-content.test.mjs +0 -223
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/github-extract.test.mjs +0 -378
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/github-issue-pr.test.mjs +0 -565
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/inline-content-config.test.mjs +0 -99
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/lazy-extract-load.test.mjs +0 -118
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/local-video-oversize.test.mjs +0 -52
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/package-typebox-dependency.test.mjs +0 -50
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/page-query.test.mjs +0 -51
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/pdf-config.test.mjs +0 -140
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/pdf-extract.test.mjs +0 -500
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/proxy-transport.test.mjs +0 -286
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/query-rewrite.test.mjs +0 -52
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/rsc-fallback.test.mjs +0 -102
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/search-error-render.test.mjs +0 -152
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/search-providers.test.mjs +0 -274
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/source-check.test.mjs +0 -179
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/ssrf-allow-ranges-config.test.mjs +0 -205
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/ssrf-protection.test.mjs +0 -456
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/summary-model-scope.test.mjs +0 -106
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/tool-registration-config.test.mjs +0 -182
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/web-search-answer-render.test.mjs +0 -66
- package/agent.bak.20260905-190020/extensions/pi-web-access/test/youtube-extract-errors.test.mjs +0 -64
- package/agent.bak.20260905-190020/extensions/pi-web-access/tsconfig.json +0 -11
- package/agent.bak.20260905-190020/extensions/pi-web-access/utils.ts +0 -451
- package/agent.bak.20260905-190020/extensions/pi-web-access/video-extract.ts +0 -392
- package/agent.bak.20260905-190020/extensions/pi-web-access/youtube-extract.ts +0 -328
- package/agent.bak.20260905-190020/extensions/shared/activity-status.ts +0 -31
- package/agent.bak.20260905-190020/extensions/shared/child-session.ts +0 -148
- package/agent.bak.20260905-190020/extensions/shared/context-utilization.ts +0 -47
- package/agent.bak.20260905-190020/extensions/shared/dashboard-state.ts +0 -99
- package/agent.bak.20260905-190020/extensions/shared/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/shared/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/shared/test/child-session.test.ts +0 -270
- package/agent.bak.20260905-190020/extensions/shared/test/context-utilization.test.ts +0 -48
- package/agent.bak.20260905-190020/extensions/shared/test/tool-call-timeout.test.ts +0 -117
- package/agent.bak.20260905-190020/extensions/shared/test/widget-order.test.ts +0 -167
- package/agent.bak.20260905-190020/extensions/shared/tool-call-timeout.ts +0 -104
- package/agent.bak.20260905-190020/extensions/skillsconf/README.md +0 -74
- package/agent.bak.20260905-190020/extensions/skillsconf/index.ts +0 -92
- package/agent.bak.20260905-190020/extensions/skillsconf/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/skillsconf/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/skillsconf/package-lock.json +0 -1809
- package/agent.bak.20260905-190020/extensions/skillsconf/package.json +0 -18
- package/agent.bak.20260905-190020/extensions/skillsconf/src/delete-skill.test.ts +0 -64
- package/agent.bak.20260905-190020/extensions/skillsconf/src/delete-skill.ts +0 -45
- package/agent.bak.20260905-190020/extensions/skillsconf/src/filter.test.ts +0 -80
- package/agent.bak.20260905-190020/extensions/skillsconf/src/filter.ts +0 -74
- package/agent.bak.20260905-190020/extensions/skillsconf/src/fuzzy.ts +0 -26
- package/agent.bak.20260905-190020/extensions/skillsconf/src/persistence.test.ts +0 -72
- package/agent.bak.20260905-190020/extensions/skillsconf/src/persistence.ts +0 -169
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/SkillConfView.test.ts +0 -337
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/SkillConfView.ts +0 -758
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/text-input.ts +0 -91
- package/agent.bak.20260905-190020/extensions/skillsconf/src/ui/tui-helpers.ts +0 -144
- package/agent.bak.20260905-190020/extensions/skillsconf/tsconfig.json +0 -15
- package/agent.bak.20260905-190020/extensions/statusline/index.ts +0 -282
- package/agent.bak.20260905-190020/extensions/statusline/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/statusline/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/subagents/docs/design-plan.md +0 -568
- package/agent.bak.20260905-190020/extensions/subagents/docs/effect-v4-extension-guide.md +0 -354
- package/agent.bak.20260905-190020/extensions/subagents/docs/effect-v4-notes.md +0 -571
- package/agent.bak.20260905-190020/extensions/subagents/index.ts +0 -826
- package/agent.bak.20260905-190020/extensions/subagents/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/subagents/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/subagents/package-lock.json +0 -2244
- package/agent.bak.20260905-190020/extensions/subagents/package.json +0 -19
- package/agent.bak.20260905-190020/extensions/subagents/src/backend.ts +0 -73
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/claude.ts +0 -701
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/codex.ts +0 -1060
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/pi.ts +0 -575
- package/agent.bak.20260905-190020/extensions/subagents/src/backends/stub.ts +0 -300
- package/agent.bak.20260905-190020/extensions/subagents/src/by-the-way.ts +0 -21
- package/agent.bak.20260905-190020/extensions/subagents/src/domain.ts +0 -253
- package/agent.bak.20260905-190020/extensions/subagents/src/format.ts +0 -74
- package/agent.bak.20260905-190020/extensions/subagents/src/manager.ts +0 -736
- package/agent.bak.20260905-190020/extensions/subagents/src/prompt.ts +0 -92
- package/agent.bak.20260905-190020/extensions/subagents/src/result-delivery.ts +0 -20
- package/agent.bak.20260905-190020/extensions/subagents/src/runtime.ts +0 -53
- package/agent.bak.20260905-190020/extensions/subagents/src/ui/takeover.ts +0 -583
- package/agent.bak.20260905-190020/extensions/subagents/src/ui/transcript.ts +0 -201
- package/agent.bak.20260905-190020/extensions/subagents/src/widget-order.ts +0 -121
- package/agent.bak.20260905-190020/extensions/subagents/test/by-the-way.test.ts +0 -29
- package/agent.bak.20260905-190020/extensions/subagents/test/claude.test.ts +0 -119
- package/agent.bak.20260905-190020/extensions/subagents/test/codex.test.ts +0 -102
- package/agent.bak.20260905-190020/extensions/subagents/test/context-usage.test.ts +0 -107
- package/agent.bak.20260905-190020/extensions/subagents/test/manager.test.ts +0 -276
- package/agent.bak.20260905-190020/extensions/subagents/test/result-delivery.test.ts +0 -27
- package/agent.bak.20260905-190020/extensions/subagents/test/takeover.test.ts +0 -29
- package/agent.bak.20260905-190020/extensions/subagents/tsconfig.json +0 -7
- package/agent.bak.20260905-190020/extensions/taste/index.ts +0 -443
- package/agent.bak.20260905-190020/extensions/taste/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/taste/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/todo/AGENTS.md +0 -38
- package/agent.bak.20260905-190020/extensions/todo/LICENSE +0 -21
- package/agent.bak.20260905-190020/extensions/todo/config.ts +0 -55
- package/agent.bak.20260905-190020/extensions/todo/index.ts +0 -151
- package/agent.bak.20260905-190020/extensions/todo/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/todo/install.sh +0 -21
- package/agent.bak.20260905-190020/extensions/todo/locales/de.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/en.json +0 -15
- package/agent.bak.20260905-190020/extensions/todo/locales/es.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/fr.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/pt-BR.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/pt.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/ru.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/uk.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/locales/zh.json +0 -17
- package/agent.bak.20260905-190020/extensions/todo/package-lock.json +0 -3358
- package/agent.bak.20260905-190020/extensions/todo/package.json +0 -67
- package/agent.bak.20260905-190020/extensions/todo/state/i18n-bridge.ts +0 -64
- package/agent.bak.20260905-190020/extensions/todo/state/invariants.ts +0 -20
- package/agent.bak.20260905-190020/extensions/todo/state/replay.ts +0 -38
- package/agent.bak.20260905-190020/extensions/todo/state/selectors.ts +0 -107
- package/agent.bak.20260905-190020/extensions/todo/state/state-reducer.ts +0 -326
- package/agent.bak.20260905-190020/extensions/todo/state/state.ts +0 -18
- package/agent.bak.20260905-190020/extensions/todo/state/store.ts +0 -82
- package/agent.bak.20260905-190020/extensions/todo/state/task-graph.ts +0 -57
- package/agent.bak.20260905-190020/extensions/todo/todo-overlay.ts +0 -204
- package/agent.bak.20260905-190020/extensions/todo/todo.ts +0 -155
- package/agent.bak.20260905-190020/extensions/todo/tool/response-envelope.ts +0 -109
- package/agent.bak.20260905-190020/extensions/todo/tool/types.ts +0 -206
- package/agent.bak.20260905-190020/extensions/todo/view/format.ts +0 -177
- package/agent.bak.20260905-190020/extensions/todo/widget-order.ts +0 -121
- package/agent.bak.20260905-190020/extensions/trim-context/README.md +0 -54
- package/agent.bak.20260905-190020/extensions/trim-context/index.ts +0 -487
- package/agent.bak.20260905-190020/extensions/trim-context/install.ps1 +0 -23
- package/agent.bak.20260905-190020/extensions/trim-context/install.sh +0 -21
- package/agent.bak.20260905-190020/keybindings.json +0 -7
|
@@ -1,173 +0,0 @@
|
|
|
1
|
-
const MAX_DECLARED_LINKS = 20;
|
|
2
|
-
const MAX_DECLARED_URL_LENGTH = 4096;
|
|
3
|
-
const DECLARATION_RELATIONS = new Set([
|
|
4
|
-
"api-catalog",
|
|
5
|
-
"describedby",
|
|
6
|
-
"service-desc",
|
|
7
|
-
"service-doc",
|
|
8
|
-
"service-meta",
|
|
9
|
-
]);
|
|
10
|
-
|
|
11
|
-
const RELATION_LABELS: Record<string, string> = {
|
|
12
|
-
"api-catalog": "API catalog",
|
|
13
|
-
"describedby": "Description",
|
|
14
|
-
"service-desc": "Service description",
|
|
15
|
-
"service-doc": "Service documentation",
|
|
16
|
-
"service-meta": "Service metadata",
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export interface DeclaredWebLink {
|
|
20
|
-
url: string;
|
|
21
|
-
relations: string[];
|
|
22
|
-
type?: string;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
export function discoverDeclaredWebLinks(
|
|
26
|
-
document: Document,
|
|
27
|
-
linkHeader: string | null,
|
|
28
|
-
responseUrl: string,
|
|
29
|
-
): DeclaredWebLink[] {
|
|
30
|
-
const links = new Map<string, DeclaredWebLink>();
|
|
31
|
-
for (const value of splitLinkHeader(linkHeader ?? "")) {
|
|
32
|
-
const target = /^\s*<([^>]*)>/.exec(value);
|
|
33
|
-
if (!target) continue;
|
|
34
|
-
const parameters = parseLinkParameters(value.slice(target[0].length));
|
|
35
|
-
if (!parameters || parameters.has("anchor")) continue;
|
|
36
|
-
addDeclaredLink(links, {
|
|
37
|
-
url: resolveHttpUrl(target[1], responseUrl),
|
|
38
|
-
relations: declaredRelations(parameters.get("rel")),
|
|
39
|
-
type: parameters.get("type"),
|
|
40
|
-
});
|
|
41
|
-
if (links.size >= MAX_DECLARED_LINKS) break;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (links.size < MAX_DECLARED_LINKS) {
|
|
45
|
-
const declaredBase = document.querySelector("base[href]")?.getAttribute("href");
|
|
46
|
-
const documentBase = resolveHttpUrl(declaredBase, responseUrl) ?? responseUrl;
|
|
47
|
-
for (const element of document.querySelectorAll("link[rel][href], a[rel][href]")) {
|
|
48
|
-
addDeclaredLink(links, {
|
|
49
|
-
url: resolveHttpUrl(element.getAttribute("href"), documentBase),
|
|
50
|
-
relations: declaredRelations(element.getAttribute("rel")),
|
|
51
|
-
type: element.getAttribute("type"),
|
|
52
|
-
});
|
|
53
|
-
if (links.size >= MAX_DECLARED_LINKS) break;
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return [...links.values()];
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function appendDeclaredWebLinks(content: string, links: DeclaredWebLink[]): string {
|
|
61
|
-
if (links.length === 0) return content;
|
|
62
|
-
const section = [
|
|
63
|
-
"## Declared links",
|
|
64
|
-
"",
|
|
65
|
-
...links.map(formatDeclaredLink),
|
|
66
|
-
].join("\n");
|
|
67
|
-
return content.trim() ? `${content.trim()}\n\n${section}` : section;
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
function addDeclaredLink(
|
|
71
|
-
links: Map<string, DeclaredWebLink>,
|
|
72
|
-
candidate: { url: string | null; relations: string[]; type?: string | null },
|
|
73
|
-
): void {
|
|
74
|
-
if (!candidate.url || candidate.relations.length === 0) return;
|
|
75
|
-
const existing = links.get(candidate.url);
|
|
76
|
-
if (existing) {
|
|
77
|
-
for (const relation of candidate.relations) {
|
|
78
|
-
if (!existing.relations.includes(relation)) existing.relations.push(relation);
|
|
79
|
-
}
|
|
80
|
-
if (!existing.type) existing.type = normalizeMetadata(candidate.type);
|
|
81
|
-
return;
|
|
82
|
-
}
|
|
83
|
-
if (links.size >= MAX_DECLARED_LINKS) return;
|
|
84
|
-
const type = normalizeMetadata(candidate.type);
|
|
85
|
-
links.set(candidate.url, {
|
|
86
|
-
url: candidate.url,
|
|
87
|
-
relations: candidate.relations,
|
|
88
|
-
...(type ? { type } : {}),
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
function declaredRelations(value: string | null | undefined): string[] {
|
|
93
|
-
if (!value) return [];
|
|
94
|
-
return [...new Set(
|
|
95
|
-
value.trim().toLowerCase().split(/\s+/).filter((relation) => DECLARATION_RELATIONS.has(relation)),
|
|
96
|
-
)];
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
function resolveHttpUrl(value: string | null | undefined, baseUrl: string): string | null {
|
|
100
|
-
if (!value || value.length > MAX_DECLARED_URL_LENGTH) return null;
|
|
101
|
-
try {
|
|
102
|
-
const url = new URL(value, baseUrl);
|
|
103
|
-
if (url.href.length > MAX_DECLARED_URL_LENGTH) return null;
|
|
104
|
-
return url.protocol === "http:" || url.protocol === "https:" ? url.href : null;
|
|
105
|
-
} catch {
|
|
106
|
-
return null;
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
function splitOutsideSyntax(input: string, separator: string, protectTargets: boolean): string[] | null {
|
|
111
|
-
const parts: string[] = [];
|
|
112
|
-
let start = 0;
|
|
113
|
-
let inTarget = false;
|
|
114
|
-
let inQuotes = false;
|
|
115
|
-
let escaped = false;
|
|
116
|
-
for (let index = 0; index < input.length; index++) {
|
|
117
|
-
const character = input[index];
|
|
118
|
-
if (inQuotes) {
|
|
119
|
-
if (escaped) escaped = false;
|
|
120
|
-
else if (character === "\\") escaped = true;
|
|
121
|
-
else if (character === '"') inQuotes = false;
|
|
122
|
-
continue;
|
|
123
|
-
}
|
|
124
|
-
if (character === '"' && !inTarget) inQuotes = true;
|
|
125
|
-
else if (protectTargets && character === "<") inTarget = true;
|
|
126
|
-
else if (protectTargets && character === ">") inTarget = false;
|
|
127
|
-
else if (character === separator && !inTarget) {
|
|
128
|
-
parts.push(input.slice(start, index));
|
|
129
|
-
start = index + 1;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
if (inQuotes || inTarget) return null;
|
|
133
|
-
parts.push(input.slice(start));
|
|
134
|
-
return parts;
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
function splitLinkHeader(header: string): string[] {
|
|
138
|
-
return (splitOutsideSyntax(header, ",", true) ?? [])
|
|
139
|
-
.map((value) => value.trim())
|
|
140
|
-
.filter(Boolean);
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
function parseLinkParameters(input: string): Map<string, string> | null {
|
|
144
|
-
const parts = splitOutsideSyntax(input, ";", false);
|
|
145
|
-
if (!parts || parts.shift()?.trim()) return null;
|
|
146
|
-
|
|
147
|
-
const parameters = new Map<string, string>();
|
|
148
|
-
for (const part of parts) {
|
|
149
|
-
const match = /^\s*([!#$%&'*+\-.^_`|~A-Za-z0-9]+)(?:\s*=\s*(?:"((?:\\.|[^"])*)"|(\S+)))?\s*$/.exec(part);
|
|
150
|
-
if (!match) return null;
|
|
151
|
-
const name = match[1].toLowerCase();
|
|
152
|
-
const value = match[2] === undefined ? (match[3] ?? "") : match[2].replace(/\\(.)/g, "$1");
|
|
153
|
-
if (!parameters.has(name)) parameters.set(name, value);
|
|
154
|
-
}
|
|
155
|
-
return parameters;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
function normalizeMetadata(value: string | null | undefined): string | undefined {
|
|
159
|
-
if (!value) return undefined;
|
|
160
|
-
const normalized = value.replace(/\s+/g, " ").trim().slice(0, 160);
|
|
161
|
-
return normalized || undefined;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
function formatDeclaredLink(link: DeclaredWebLink): string {
|
|
165
|
-
const relation = link.relations.map(inlineCode).join(", ");
|
|
166
|
-
const type = link.type ? `; ${inlineCode(link.type)}` : "";
|
|
167
|
-
const label = RELATION_LABELS[link.relations[0]] ?? "Declared link";
|
|
168
|
-
return `- ${label} (${relation}${type}): <${link.url}>`;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
function inlineCode(value: string): string {
|
|
172
|
-
return `\`${value.replace(/`/g, "'")}\``;
|
|
173
|
-
}
|
|
@@ -1,496 +0,0 @@
|
|
|
1
|
-
# SERPdive API — contract evidence
|
|
2
|
-
|
|
3
|
-
Every block below is a real call against `https://api.serpdive.com/v1/search`, captured on 2026-07-25. Reproduce any of them with your own key: the script that
|
|
4
|
-
generated this file is `evidence/contract-probe.mjs`. Page content is truncated to keep the file
|
|
5
|
-
readable — nothing else is edited, and the API key is redacted.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## 1. Default request and response shape
|
|
10
|
-
|
|
11
|
-
### Query only
|
|
12
|
-
|
|
13
|
-
The whole request surface is `query`, `model`, `answer`, `max_results`. Everything else is ignored.
|
|
14
|
-
|
|
15
|
-
```http
|
|
16
|
-
POST https://api.serpdive.com/v1/search
|
|
17
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
18
|
-
content-type: application/json
|
|
19
|
-
|
|
20
|
-
{"query":"best open source vector databases"}
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
`HTTP 200` in 2059 ms
|
|
24
|
-
|
|
25
|
-
```json
|
|
26
|
-
{
|
|
27
|
-
"query": "best open source vector databases",
|
|
28
|
-
"model": "mako",
|
|
29
|
-
"response_time_ms": 1906,
|
|
30
|
-
"results": [
|
|
31
|
-
{
|
|
32
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
33
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
34
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (431 chars)"
|
|
35
|
-
},
|
|
36
|
-
{
|
|
37
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
38
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
39
|
-
"content": "Chroma prioritizes simplicity and developer experience, particularly for Python workflows.… (90 chars)"
|
|
40
|
-
},
|
|
41
|
-
"… 5 more, same shape"
|
|
42
|
-
]
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
## 2. Models
|
|
47
|
-
|
|
48
|
-
### krill — free tier
|
|
49
|
-
|
|
50
|
-
No answer synthesis on this tier: requesting one is ignored rather than refused (see §3).
|
|
51
|
-
|
|
52
|
-
```http
|
|
53
|
-
POST https://api.serpdive.com/v1/search
|
|
54
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
55
|
-
content-type: application/json
|
|
56
|
-
|
|
57
|
-
{"query":"best open source vector databases","model":"krill"}
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
`HTTP 200` in 2145 ms
|
|
61
|
-
|
|
62
|
-
```json
|
|
63
|
-
{
|
|
64
|
-
"query": "best open source vector databases",
|
|
65
|
-
"model": "krill",
|
|
66
|
-
"response_time_ms": 2113,
|
|
67
|
-
"results": [
|
|
68
|
-
{
|
|
69
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
70
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
71
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (213 chars)"
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
75
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
76
|
-
"content": "This comparison breaks down the leading open source vector databases for production AI wor… (190 chars)"
|
|
77
|
-
},
|
|
78
|
-
"… 3 more, same shape"
|
|
79
|
-
]
|
|
80
|
-
}
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### mako — 1 credit
|
|
84
|
-
|
|
85
|
-
```http
|
|
86
|
-
POST https://api.serpdive.com/v1/search
|
|
87
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
88
|
-
content-type: application/json
|
|
89
|
-
|
|
90
|
-
{"query":"best open source vector databases","model":"mako"}
|
|
91
|
-
```
|
|
92
|
-
|
|
93
|
-
`HTTP 200` in 1976 ms
|
|
94
|
-
|
|
95
|
-
```json
|
|
96
|
-
{
|
|
97
|
-
"query": "best open source vector databases",
|
|
98
|
-
"model": "mako",
|
|
99
|
-
"response_time_ms": 1941,
|
|
100
|
-
"results": [
|
|
101
|
-
{
|
|
102
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
103
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
104
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (713 chars)"
|
|
105
|
-
},
|
|
106
|
-
{
|
|
107
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
108
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
109
|
-
"content": "This comparison breaks down the leading open source vector databases for production AI wor… (457 chars)"
|
|
110
|
-
},
|
|
111
|
-
"… 3 more, same shape"
|
|
112
|
-
]
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
### moby — 1.5 credits
|
|
117
|
-
|
|
118
|
-
Full readable page content; note the content lengths against mako above.
|
|
119
|
-
|
|
120
|
-
```http
|
|
121
|
-
POST https://api.serpdive.com/v1/search
|
|
122
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
123
|
-
content-type: application/json
|
|
124
|
-
|
|
125
|
-
{"query":"best open source vector databases","model":"moby"}
|
|
126
|
-
```
|
|
127
|
-
|
|
128
|
-
`HTTP 200` in 2647 ms
|
|
129
|
-
|
|
130
|
-
```json
|
|
131
|
-
{
|
|
132
|
-
"query": "best open source vector databases",
|
|
133
|
-
"model": "moby",
|
|
134
|
-
"response_time_ms": 2561,
|
|
135
|
-
"results": [
|
|
136
|
-
{
|
|
137
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
138
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
139
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (14041 chars)"
|
|
140
|
-
},
|
|
141
|
-
{
|
|
142
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
143
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
144
|
-
"content": "Serve your agents fresh data at Redis speed.\nComparing the best open source vector databas… (13856 chars)"
|
|
145
|
-
},
|
|
146
|
-
"… 4 more, same shape"
|
|
147
|
-
]
|
|
148
|
-
}
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## 3. `answer`
|
|
152
|
-
|
|
153
|
-
### answer: true with mako
|
|
154
|
-
|
|
155
|
-
The `answer` key is present only when requested.
|
|
156
|
-
|
|
157
|
-
```http
|
|
158
|
-
POST https://api.serpdive.com/v1/search
|
|
159
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
160
|
-
content-type: application/json
|
|
161
|
-
|
|
162
|
-
{"query":"best open source vector databases","model":"mako","answer":true}
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
`HTTP 200` in 2490 ms
|
|
166
|
-
|
|
167
|
-
```json
|
|
168
|
-
{
|
|
169
|
-
"query": "best open source vector databases",
|
|
170
|
-
"model": "mako",
|
|
171
|
-
"response_time_ms": 2456,
|
|
172
|
-
"answer": "The best open source vector databases are: \n1. Opensearch \n2. Apache Cassandra \n3. pgvector \n4. Milvus \n5. Qdrant \n6. Weaviate \n7. Vald.… (136 chars)",
|
|
173
|
-
"results": [
|
|
174
|
-
{
|
|
175
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
176
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
177
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (529 chars)"
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
181
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
182
|
-
"content": "This comparison breaks down the leading open source vector databases for production AI wor… (591 chars)"
|
|
183
|
-
},
|
|
184
|
-
"… 3 more, same shape"
|
|
185
|
-
]
|
|
186
|
-
}
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
### answer: true with krill
|
|
190
|
-
|
|
191
|
-
Silently ignored on the free tier — no `answer` key, no error, still a complete result.
|
|
192
|
-
|
|
193
|
-
```http
|
|
194
|
-
POST https://api.serpdive.com/v1/search
|
|
195
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
196
|
-
content-type: application/json
|
|
197
|
-
|
|
198
|
-
{"query":"best open source vector databases","model":"krill","answer":true}
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
`HTTP 200` in 1642 ms
|
|
202
|
-
|
|
203
|
-
```json
|
|
204
|
-
{
|
|
205
|
-
"query": "best open source vector databases",
|
|
206
|
-
"model": "krill",
|
|
207
|
-
"response_time_ms": 1612,
|
|
208
|
-
"results": [
|
|
209
|
-
{
|
|
210
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
211
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
212
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (322 chars)"
|
|
213
|
-
},
|
|
214
|
-
{
|
|
215
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
216
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
217
|
-
"content": "This comparison breaks down the leading open source vector databases for production AI wor… (293 chars)"
|
|
218
|
-
},
|
|
219
|
-
"… 2 more, same shape"
|
|
220
|
-
]
|
|
221
|
-
}
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
## 4. `max_results` is a cap, never a minimum
|
|
225
|
-
|
|
226
|
-
A cap, applied at the edge after the search. The engine still reads a full corpus, so a small
|
|
227
|
-
cap trims the response, not the work — and asking for more does not produce more.
|
|
228
|
-
|
|
229
|
-
### max_results: 1
|
|
230
|
-
|
|
231
|
-
```http
|
|
232
|
-
POST https://api.serpdive.com/v1/search
|
|
233
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
234
|
-
content-type: application/json
|
|
235
|
-
|
|
236
|
-
{"query":"best open source vector databases","model":"krill","max_results":1}
|
|
237
|
-
```
|
|
238
|
-
|
|
239
|
-
`HTTP 200` in 1697 ms
|
|
240
|
-
|
|
241
|
-
```json
|
|
242
|
-
{
|
|
243
|
-
"query": "best open source vector databases",
|
|
244
|
-
"model": "krill",
|
|
245
|
-
"response_time_ms": 1665,
|
|
246
|
-
"results": [
|
|
247
|
-
{
|
|
248
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
249
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
250
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (213 chars)"
|
|
251
|
-
}
|
|
252
|
-
]
|
|
253
|
-
}
|
|
254
|
-
```
|
|
255
|
-
|
|
256
|
-
### max_results: 3
|
|
257
|
-
|
|
258
|
-
```http
|
|
259
|
-
POST https://api.serpdive.com/v1/search
|
|
260
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
261
|
-
content-type: application/json
|
|
262
|
-
|
|
263
|
-
{"query":"best open source vector databases","model":"krill","max_results":3}
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
`HTTP 200` in 1725 ms
|
|
267
|
-
|
|
268
|
-
```json
|
|
269
|
-
{
|
|
270
|
-
"query": "best open source vector databases",
|
|
271
|
-
"model": "krill",
|
|
272
|
-
"response_time_ms": 1681,
|
|
273
|
-
"results": [
|
|
274
|
-
{
|
|
275
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
276
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
277
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (634 chars)"
|
|
278
|
-
},
|
|
279
|
-
{
|
|
280
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
281
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
282
|
-
"content": "Some vector databases work best with Kubernetes orchestration, while others offer cloud-ho… (182 chars)"
|
|
283
|
-
},
|
|
284
|
-
"… 1 more, same shape"
|
|
285
|
-
]
|
|
286
|
-
}
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### max_results: 10
|
|
290
|
-
|
|
291
|
-
The ceiling of the range. Fewer come back when fewer are judged relevant — see §1, where no cap returned 5.
|
|
292
|
-
|
|
293
|
-
```http
|
|
294
|
-
POST https://api.serpdive.com/v1/search
|
|
295
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
296
|
-
content-type: application/json
|
|
297
|
-
|
|
298
|
-
{"query":"best open source vector databases","model":"krill","max_results":10}
|
|
299
|
-
```
|
|
300
|
-
|
|
301
|
-
`HTTP 200` in 1706 ms
|
|
302
|
-
|
|
303
|
-
```json
|
|
304
|
-
{
|
|
305
|
-
"query": "best open source vector databases",
|
|
306
|
-
"model": "krill",
|
|
307
|
-
"response_time_ms": 1676,
|
|
308
|
-
"results": [
|
|
309
|
-
{
|
|
310
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
311
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
312
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (502 chars)"
|
|
313
|
-
},
|
|
314
|
-
{
|
|
315
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
316
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
317
|
-
"content": "This comparison breaks down the leading open source vector databases for production AI wor… (97 chars)"
|
|
318
|
-
},
|
|
319
|
-
"… 5 more, same shape"
|
|
320
|
-
]
|
|
321
|
-
}
|
|
322
|
-
```
|
|
323
|
-
|
|
324
|
-
### max_results: 50
|
|
325
|
-
|
|
326
|
-
Above the range: clamped down to 10, silently. Never a 400.
|
|
327
|
-
|
|
328
|
-
```http
|
|
329
|
-
POST https://api.serpdive.com/v1/search
|
|
330
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
331
|
-
content-type: application/json
|
|
332
|
-
|
|
333
|
-
{"query":"best open source vector databases","model":"krill","max_results":50}
|
|
334
|
-
```
|
|
335
|
-
|
|
336
|
-
`HTTP 200` in 1820 ms
|
|
337
|
-
|
|
338
|
-
```json
|
|
339
|
-
{
|
|
340
|
-
"query": "best open source vector databases",
|
|
341
|
-
"model": "krill",
|
|
342
|
-
"response_time_ms": 1788,
|
|
343
|
-
"results": [
|
|
344
|
-
{
|
|
345
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
346
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
347
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (213 chars)"
|
|
348
|
-
},
|
|
349
|
-
{
|
|
350
|
-
"url": "https://redis.io/blog/best-open-source-vector-databases-comparison/",
|
|
351
|
-
"title": "Comparing the best open source vector databases (2026)",
|
|
352
|
-
"content": "This comparison breaks down the leading open source vector databases for production AI wor… (247 chars)"
|
|
353
|
-
},
|
|
354
|
-
"… 3 more, same shape"
|
|
355
|
-
]
|
|
356
|
-
}
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
### max_results: 0
|
|
360
|
-
|
|
361
|
-
Below the range: clamped UP to 1, silently — it is the minimum of the range, NOT a way to say "no cap". One result comes back.
|
|
362
|
-
|
|
363
|
-
```http
|
|
364
|
-
POST https://api.serpdive.com/v1/search
|
|
365
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
366
|
-
content-type: application/json
|
|
367
|
-
|
|
368
|
-
{"query":"best open source vector databases","model":"krill","max_results":0}
|
|
369
|
-
```
|
|
370
|
-
|
|
371
|
-
`HTTP 200` in 1845 ms
|
|
372
|
-
|
|
373
|
-
```json
|
|
374
|
-
{
|
|
375
|
-
"query": "best open source vector databases",
|
|
376
|
-
"model": "krill",
|
|
377
|
-
"response_time_ms": 1800,
|
|
378
|
-
"results": [
|
|
379
|
-
{
|
|
380
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
381
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
382
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (322 chars)"
|
|
383
|
-
}
|
|
384
|
-
]
|
|
385
|
-
}
|
|
386
|
-
```
|
|
387
|
-
|
|
388
|
-
### max_results: "abc"
|
|
389
|
-
|
|
390
|
-
Unparseable, and this is the asymmetry worth knowing: an out-of-range NUMBER is clamped into the range, but a value that is not a number at all drops the cap entirely and the default applies. Same for null or an absent field.
|
|
391
|
-
|
|
392
|
-
```http
|
|
393
|
-
POST https://api.serpdive.com/v1/search
|
|
394
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
395
|
-
content-type: application/json
|
|
396
|
-
|
|
397
|
-
{"query":"best open source vector databases","model":"krill","max_results":"abc"}
|
|
398
|
-
```
|
|
399
|
-
|
|
400
|
-
`HTTP 200` in 2096 ms
|
|
401
|
-
|
|
402
|
-
```json
|
|
403
|
-
{
|
|
404
|
-
"query": "best open source vector databases",
|
|
405
|
-
"model": "krill",
|
|
406
|
-
"response_time_ms": 2014,
|
|
407
|
-
"results": [
|
|
408
|
-
{
|
|
409
|
-
"url": "https://www.instaclustr.com/education/vector-database/best-open-source-vector-database-solutions-top-5-in-2026/",
|
|
410
|
-
"title": "Best open source vector database solutions: Top 5 in 2026",
|
|
411
|
-
"content": "Notable open source vector database solutions · 1. Opensearch · 2. Apache Cassandra · 3. p… (520 chars)"
|
|
412
|
-
},
|
|
413
|
-
{
|
|
414
|
-
"url": "https://medium.com/@pratik-rupareliya/top-15-vector-databases-in-2026-a-production-decision-guide-from-100-enterprise-deployments-dd58a04f51a5",
|
|
415
|
-
"title": "Medium",
|
|
416
|
-
"content": "Top 15 vector databases in 2026: A production decision guide from 100+ enterprise deployme… (408 chars)"
|
|
417
|
-
},
|
|
418
|
-
"… 4 more, same shape"
|
|
419
|
-
]
|
|
420
|
-
}
|
|
421
|
-
```
|
|
422
|
-
|
|
423
|
-
## 5. Errors
|
|
424
|
-
|
|
425
|
-
### Missing query
|
|
426
|
-
|
|
427
|
-
```http
|
|
428
|
-
POST https://api.serpdive.com/v1/search
|
|
429
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
430
|
-
content-type: application/json
|
|
431
|
-
|
|
432
|
-
{"model":"krill"}
|
|
433
|
-
```
|
|
434
|
-
|
|
435
|
-
`HTTP 400` in 39 ms
|
|
436
|
-
|
|
437
|
-
```json
|
|
438
|
-
{
|
|
439
|
-
"error": "missing_query",
|
|
440
|
-
"message": "The \"query\" field is required, e.g. {\"query\": \"your search\"}."
|
|
441
|
-
}
|
|
442
|
-
```
|
|
443
|
-
|
|
444
|
-
### Invalid key
|
|
445
|
-
|
|
446
|
-
```http
|
|
447
|
-
POST https://api.serpdive.com/v1/search
|
|
448
|
-
authorization: Bearer sd_live_not_a_real_key
|
|
449
|
-
content-type: application/json
|
|
450
|
-
|
|
451
|
-
{"query":"best open source vector databases"}
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
`HTTP 401` in 533 ms
|
|
455
|
-
|
|
456
|
-
```json
|
|
457
|
-
{
|
|
458
|
-
"error": "invalid_api_key",
|
|
459
|
-
"message": "This API key is invalid or was revoked. Manage your keys at https://serpdive.com/dashboard/keys"
|
|
460
|
-
}
|
|
461
|
-
```
|
|
462
|
-
|
|
463
|
-
### No key at all
|
|
464
|
-
|
|
465
|
-
```http
|
|
466
|
-
POST https://api.serpdive.com/v1/search
|
|
467
|
-
(no authorization header sent)
|
|
468
|
-
content-type: application/json
|
|
469
|
-
|
|
470
|
-
{"query":"best open source vector databases"}
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
`HTTP 401` in 27 ms
|
|
474
|
-
|
|
475
|
-
```json
|
|
476
|
-
{
|
|
477
|
-
"error": "missing_api_key",
|
|
478
|
-
"message": "No API key. Send it as \"Authorization: Bearer sd_live_…\" — create one at https://serpdive.com/dashboard/keys"
|
|
479
|
-
}
|
|
480
|
-
```
|
|
481
|
-
|
|
482
|
-
## 6. Abort
|
|
483
|
-
|
|
484
|
-
### Client aborts mid-flight
|
|
485
|
-
|
|
486
|
-
The request is cancellable at any point; the provider maps this to the framework abort path.
|
|
487
|
-
|
|
488
|
-
```http
|
|
489
|
-
POST https://api.serpdive.com/v1/search
|
|
490
|
-
authorization: Bearer sd_live_… # a valid key, redacted
|
|
491
|
-
content-type: application/json
|
|
492
|
-
|
|
493
|
-
{"query":"best open source vector databases","model":"krill"}
|
|
494
|
-
```
|
|
495
|
-
|
|
496
|
-
Client aborted after 300 ms → `AbortError` raised locally; no response body.
|