@wenathlan/devthink 2.0.13 → 2.0.15
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/CHANGELOG.md +27 -0
- package/accounts.ts +2087 -0
- package/agent.ts +2331 -0
- package/antigravity.ts +2139 -0
- package/apifreeze.ts +4146 -0
- package/auth.ts +642 -0
- package/background.ts +16837 -0
- package/bridge.ts +2080 -0
- package/build.ts +54 -0
- package/bun.ts +26 -0
- package/capture.ts +1614 -0
- package/checksecrets.ts +72 -0
- package/cjs.ts +9 -0
- package/cli.ts +3500 -0
- package/commands.ts +1101 -0
- package/companion.ts +450 -0
- package/compatibility.ts +37 -0
- package/config.ts +3137 -0
- package/constants.ts +943 -0
- package/core.ts +1473 -0
- package/crossbrowser.ts +1359 -0
- package/dashdone.ts +605 -0
- package/data.ts +943 -0
- package/database.ts +133 -0
- package/debug.ts +850 -0
- package/deno.ts +27 -0
- package/devthink.ts +707 -0
- package/dist/accounts.d.ts +409 -0
- package/dist/agent.d.ts +837 -0
- package/dist/antigravity.d.ts +380 -0
- package/dist/apifreeze.d.ts +113 -0
- package/dist/auth.d.ts +224 -0
- package/{bridge.d.ts → dist/bridge.d.ts} +1 -1
- package/dist/capture.d.ts +595 -0
- package/dist/cjs.d.ts +6 -0
- package/{cli.js → dist/cli.js} +2 -2
- package/dist/commands.d.ts +310 -0
- package/dist/compatibility.d.ts +17 -0
- package/dist/config.d.ts +1853 -0
- package/dist/constants.d.ts +637 -0
- package/dist/core.d.ts +361 -0
- package/dist/data.d.ts +330 -0
- package/dist/database.d.ts +24 -0
- package/dist/debug.d.ts +270 -0
- package/dist/engine.d.ts +74 -0
- package/dist/environments.d.ts +244 -0
- package/dist/evidence.d.ts +277 -0
- package/dist/export.d.ts +311 -0
- package/dist/fingerprint.d.ts +594 -0
- package/dist/flow.d.ts +300 -0
- package/dist/gates.d.ts +103 -0
- package/dist/identity.d.ts +51 -0
- package/dist/ids.d.ts +7 -0
- package/dist/llm.d.ts +652 -0
- package/dist/models.d.ts +1807 -0
- package/dist/net.d.ts +325 -0
- package/dist/neutral.d.ts +41 -0
- package/dist/oauth.d.ts +703 -0
- package/dist/page.d.ts +1166 -0
- package/dist/perf.d.ts +481 -0
- package/dist/plan.d.ts +134 -0
- package/dist/project.d.ts +395 -0
- package/dist/providers.d.ts +37 -0
- package/dist/quota.d.ts +453 -0
- package/dist/recovery.d.ts +621 -0
- package/dist/request.d.ts +1492 -0
- package/dist/run.d.ts +779 -0
- package/dist/runtime.d.ts +212 -0
- package/dist/search.d.ts +375 -0
- package/dist/security.d.ts +534 -0
- package/dist/serve.d.ts +136 -0
- package/dist/session.d.ts +296 -0
- package/dist/storage.d.ts +53 -0
- package/dist/streaming.d.ts +1119 -0
- package/dist/swarm.d.ts +328 -0
- package/dist/tools.d.ts +170 -0
- package/dist/types.d.ts +8357 -0
- package/dist/utils.d.ts +82 -0
- package/dist/version.d.ts +7 -0
- package/dist/versionregistry.d.ts +406 -0
- package/dist/views.d.ts +579 -0
- package/dist/workbenchsession.d.ts +69 -0
- package/dist/workflow.d.ts +649 -0
- package/docs/readme.md +92 -0
- package/docs/schemas/antigravity.json +192 -0
- package/engine.ts +1524 -0
- package/environments.ts +1005 -0
- package/evidence.ts +643 -0
- package/export.ts +889 -0
- package/fingerprint.ts +1458 -0
- package/flow.ts +1190 -0
- package/gates.ts +307 -0
- package/gateway.ts +34 -0
- package/hardening.ts +191 -0
- package/headless.ts +369 -0
- package/http.ts +2110 -0
- package/identity.ts +246 -0
- package/ids.ts +26 -0
- package/index.ts +369 -0
- package/llm.ts +2682 -0
- package/mcp.ts +1835 -0
- package/{memory.js → memory.ts} +3834 -2310
- package/models.ts +3805 -0
- package/modes.ts +43 -0
- package/net.ts +1214 -0
- package/neutral.ts +362 -0
- package/node.ts +26 -0
- package/oauth.ts +2216 -0
- package/offscreen.ts +170 -0
- package/pack.ts +956 -0
- package/package.json +175 -82
- package/page.ts +7824 -0
- package/pagebridge.ts +1116 -0
- package/perf.ts +957 -0
- package/plan.ts +672 -0
- package/plugin.ts +76 -0
- package/{policy.js → policy.ts} +5073 -4679
- package/prisma.config.ts +27 -0
- package/progress.ts +1308 -0
- package/project.ts +1291 -0
- package/protocol.ts +4187 -0
- package/providers.ts +246 -0
- package/quota.ts +1887 -0
- package/recovery.ts +2433 -0
- package/request.ts +4482 -0
- package/run.ts +2135 -0
- package/runtime.ts +526 -0
- package/search.ts +1760 -0
- package/security.ts +1673 -0
- package/serve.ts +419 -0
- package/server.ts +5538 -0
- package/session.ts +1162 -0
- package/storage.ts +182 -0
- package/streaming.ts +4101 -0
- package/swarm.ts +884 -0
- package/sync.ts +56 -0
- package/tests/agentcert.test.ts +128 -0
- package/tests/agentfleet.test.ts +214 -0
- package/tests/agentreview.test.ts +241 -0
- package/tests/agentstream.test.ts +335 -0
- package/tests/agentwork.test.ts +356 -0
- package/tests/apifreeze.test.ts +290 -0
- package/tests/apimap.test.ts +112 -0
- package/tests/approvalgate.test.ts +175 -0
- package/tests/artifactmanifest.test.ts +204 -0
- package/tests/attentionfeed.test.ts +163 -0
- package/tests/backgroundruns.test.ts +100 -0
- package/tests/batchscheduling.test.ts +131 -0
- package/tests/blackboard.test.ts +238 -0
- package/tests/bridge.test.ts +1088 -0
- package/tests/browsercoverage.test.ts +134 -0
- package/tests/browserpolyfills.test.ts +124 -0
- package/tests/build.mjs +1260 -0
- package/tests/clientauth.test.ts +223 -0
- package/tests/clitools.test.ts +578 -0
- package/tests/confirmgates.test.ts +190 -0
- package/tests/containerpack.test.ts +143 -0
- package/tests/controlflow.test.ts +2120 -0
- package/tests/coordination.test.ts +345 -0
- package/tests/copyscreen.test.ts +139 -0
- package/tests/core.test.ts +417 -0
- package/tests/costcert.test.ts +95 -0
- package/tests/crossbrowser.test.ts +115 -0
- package/tests/cspaudit.test.ts +79 -0
- package/tests/dashdone.test.ts +615 -0
- package/tests/datagrid.test.ts +137 -0
- package/tests/doccheck.test.ts +107 -0
- package/tests/dombatch.test.ts +109 -0
- package/tests/emulation.test.ts +282 -0
- package/tests/environments.test.ts +259 -0
- package/tests/evidenceviews.test.ts +88 -0
- package/tests/exporttools.test.ts +185 -0
- package/tests/firefoxprep.test.ts +134 -0
- package/tests/flowlibrary.test.ts +242 -0
- package/tests/flowrun.test.ts +303 -0
- package/tests/forensics.test.ts +439 -0
- package/tests/gateway.test.ts +939 -0
- package/tests/headlesslib.test.ts +171 -0
- package/tests/httpstream.test.ts +277 -0
- package/tests/immutablelog.test.ts +157 -0
- package/tests/inboundguard.test.ts +177 -0
- package/tests/lazyload.test.ts +72 -0
- package/tests/librarymodes.test.ts +623 -0
- package/tests/llm.test.ts +696 -0
- package/tests/manifest.test.ts +226 -0
- package/tests/maskinputs.test.ts +150 -0
- package/tests/matrixverify.test.ts +111 -0
- package/tests/mavenpack.test.ts +75 -0
- package/tests/mcpserver.test.ts +704 -0
- package/tests/memory.test.ts +4155 -0
- package/tests/memorycare.test.ts +230 -0
- package/tests/migrateplan.test.ts +349 -0
- package/tests/minimization.test.ts +414 -0
- package/tests/modelroute.test.ts +112 -0
- package/tests/multiagent.test.ts +440 -0
- package/tests/nativebridge.test.ts +807 -0
- package/tests/navigation.test.ts +284 -0
- package/tests/nugetpack.test.ts +83 -0
- package/tests/orchestration.test.ts +449 -0
- package/tests/originpolicy.test.ts +405 -0
- package/tests/outputcompare.test.ts +97 -0
- package/tests/package.test.ts +91 -0
- package/tests/pagebridge.test.ts +5909 -0
- package/tests/pentest.test.ts +75 -0
- package/tests/perfrecords.test.ts +257 -0
- package/tests/permdiff.test.ts +85 -0
- package/tests/phishguard.test.ts +128 -0
- package/tests/pickerviews.test.ts +155 -0
- package/tests/pipelines.test.ts +381 -0
- package/tests/planlint.test.ts +240 -0
- package/tests/planreview.test.ts +383 -0
- package/tests/platformtargets.test.ts +56 -0
- package/tests/policy.test.ts +8284 -0
- package/tests/portability.test.ts +96 -0
- package/tests/progress.test.ts +1036 -0
- package/tests/promptlibrary.test.ts +116 -0
- package/tests/protocol.test.ts +4793 -0
- package/tests/publishingpipeline.test.ts +314 -0
- package/tests/quickactions.test.ts +164 -0
- package/tests/readiness.test.ts +78 -0
- package/tests/recipes.test.ts +163 -0
- package/tests/redactshots.test.ts +216 -0
- package/tests/registernvidiakeys.ts +51 -0
- package/tests/relayserve.test.ts +304 -0
- package/tests/releasenotes.test.ts +276 -0
- package/tests/resilience.test.ts +467 -0
- package/tests/resourceaware.test.ts +187 -0
- package/tests/runbudget.test.ts +125 -0
- package/tests/runhistory.test.ts +299 -0
- package/tests/runreplay.test.ts +113 -0
- package/tests/runresume.test.ts +184 -0
- package/tests/runstate.test.ts +288 -0
- package/tests/runtimeadapters.test.ts +251 -0
- package/tests/safariskeleton.test.ts +115 -0
- package/tests/sandboxframe.test.ts +196 -0
- package/tests/sbom.test.ts +105 -0
- package/tests/secretvault.test.ts +188 -0
- package/tests/selcache.test.ts +111 -0
- package/tests/sessioninterface.test.ts +791 -0
- package/tests/sessions.test.ts +591 -0
- package/tests/siteprefs.test.ts +228 -0
- package/tests/snapshotdelta.test.ts +165 -0
- package/tests/statusviews.test.ts +237 -0
- package/tests/stepmeter.test.ts +200 -0
- package/tests/streamparse.test.ts +163 -0
- package/tests/stylepruning.test.ts +90 -0
- package/tests/surfaces.test.ts +282 -0
- package/tests/sweep.test.ts +78 -0
- package/tests/syncbridge.test.ts +164 -0
- package/tests/taskqueue.test.ts +206 -0
- package/tests/toolcalls.test.ts +336 -0
- package/tests/toolcatalog.test.ts +201 -0
- package/tests/torture-agent.test.ts +706 -0
- package/tests/torture-auth.test.ts +461 -0
- package/tests/torture-commands.test.ts +895 -0
- package/tests/torture-data.test.ts +923 -0
- package/tests/torture-environments.test.ts +285 -0
- package/tests/torture-export.test.ts +263 -0
- package/tests/torture-http.test.ts +1379 -0
- package/tests/torture-llm.test.ts +808 -0
- package/tests/torture-memory.test.ts +1084 -0
- package/tests/torture-plan.test.ts +829 -0
- package/tests/torture-run.test.ts +626 -0
- package/tests/torture-session.test.ts +928 -0
- package/tests/torture-swarm.test.ts +1245 -0
- package/tests/torture-tools.test.ts +964 -0
- package/tests/torture-workflow.test.ts +2354 -0
- package/tests/tourviews.test.ts +52 -0
- package/tests/transparency.test.ts +147 -0
- package/tests/trigger.test.ts +941 -0
- package/tests/v1sunset.test.ts +428 -0
- package/tests/virtlist.test.ts +94 -0
- package/tests/vision.test.ts +540 -0
- package/tests/vsixpack.test.ts +145 -0
- package/tests/webapi.test.ts +523 -0
- package/tests/workflow.test.ts +1785 -0
- package/tests/workfloweditor.test.ts +759 -0
- package/tests/xpipack.test.ts +128 -0
- package/tools.ts +734 -0
- package/types.ts +9908 -0
- package/umd.ts +9 -0
- package/utils.ts +249 -0
- package/version.ts +8 -0
- package/versionregistry.ts +1310 -0
- package/views.ts +2153 -0
- package/vitest.config.ts +12 -0
- package/web/App.tsx +78 -0
- package/web/README.md +47 -0
- package/web/capacitor.config.ts +46 -0
- package/web/const.ts +19 -0
- package/web/control.shell.tsx +66 -0
- package/web/dashboardpage.ts +554 -0
- package/web/db.ts +493 -0
- package/web/design.html +541 -0
- package/web/gatewayview/Gateway.tsx +345 -0
- package/web/gatewayview/config.ts +1042 -0
- package/web/gatewayview/definition.ts +174 -0
- package/web/icons.ts +15 -0
- package/{manifest.json → web/manifest.json} +1 -1
- package/web/optionspage.ts +691 -0
- package/web/popup.ts +1651 -0
- package/web/schema.prisma +176 -0
- package/web/sidepanel.ts +7941 -0
- package/web/sitemanifest.json +13 -0
- package/web/terminal-ui.tsx +622 -0
- package/web/transparencypage.ts +541 -0
- package/web/vite.config.ts +39 -0
- package/web/workspace.ts +23 -0
- package/workbenchmemory.ts +104 -0
- package/workbenchsession.ts +304 -0
- package/workflow.ts +4495 -0
- package/bridge.d.ts.map +0 -1
- package/bridge.js +0 -1877
- package/bun.d.ts.map +0 -1
- package/bun.js +0 -52329
- package/caps/background.json +0 -712
- package/caps/cli.json +0 -360
- package/caps/library.json +0 -3611
- package/caps/mcp.json +0 -126
- package/caps/pagebridge.json +0 -377
- package/caps/popup.json +0 -51
- package/caps/sidepanel.json +0 -522
- package/checksums.txt +0 -142
- package/cli.d.ts.map +0 -1
- package/companion.d.ts.map +0 -1
- package/companion.js +0 -389
- package/crossbrowser.d.ts.map +0 -1
- package/crossbrowser.js +0 -1191
- package/dashdone.d.ts.map +0 -1
- package/dashdone.js +0 -368
- package/deno.d.ts.map +0 -1
- package/deno.js +0 -52325
- package/devthink.umd.js +0 -52346
- package/fixtures/bun.ts +0 -7
- package/fixtures/cjs.js +0 -6
- package/fixtures/deno.ts +0 -6
- package/fixtures/example-org-pagestate.json +0 -22
- package/fixtures/importers/automa-workflow.json +0 -18
- package/fixtures/importers/selenium-side.json +0 -20
- package/fixtures/importers/tabular-plan.csv +0 -7
- package/fixtures/importers/uivision-macro.json +0 -10
- package/fixtures/importers/v1-plan.json +0 -13
- package/fixtures/mcp-client.mjs +0 -14
- package/fixtures/pages/checkout.html +0 -192
- package/fixtures/pages/dashboard.html +0 -110
- package/fixtures/pages/feed.html +0 -113
- package/fixtures/pages/product-grid.html +0 -150
- package/fixtures/plans/form-inventory-plan.json +0 -11
- package/fixtures/plans/release-notes-plan.json +0 -11
- package/fixtures/recipes/agentscompete.json +0 -11
- package/fixtures/recipes/agentsforms.json +0 -11
- package/fixtures/recipes/agentsmonitor.json +0 -11
- package/fixtures/recipes/agentsreview.json +0 -29
- package/fixtures/recipes/agentswarm.json +0 -11
- package/fixtures/recipes/fillcalendar.json +0 -12
- package/fixtures/recipes/fillcheckout.json +0 -13
- package/fixtures/recipes/filldependentdropdowns.json +0 -12
- package/fixtures/recipes/fillfromcsv.json +0 -13
- package/fixtures/recipes/fillloginform.json +0 -12
- package/fixtures/recipes/fillmultistepwizard.json +0 -13
- package/fixtures/recipes/fillregistration.json +0 -12
- package/fixtures/recipes/fillsearchfilters.json +0 -12
- package/fixtures/recipes/filltypeahead.json +0 -11
- package/fixtures/recipes/monitoralerts.json +0 -12
- package/fixtures/recipes/monitoravailability.json +0 -11
- package/fixtures/recipes/monitornetworkquiet.json +0 -12
- package/fixtures/recipes/monitorpagechanges.json +0 -11
- package/fixtures/recipes/monitorpricechange.json +0 -11
- package/fixtures/recipes/monitorschedule.json +0 -12
- package/fixtures/recipes/scrapedynamicprices.json +0 -13
- package/fixtures/recipes/scrapeimagegallery.json +0 -12
- package/fixtures/recipes/scrapeinfinitefeed.json +0 -13
- package/fixtures/recipes/scrapenestedlists.json +0 -12
- package/fixtures/recipes/scrapeproductgrid.json +0 -12
- package/fixtures/recipes/scrapereviews.json +0 -12
- package/fixtures/recipes/scrapesearchresults.json +0 -12
- package/fixtures/recipes/scrapetablepagination.json +0 -12
- package/fixtures/recipes/testaccessibility.json +0 -34
- package/fixtures/recipes/testconsoleerrors.json +0 -12
- package/fixtures/recipes/testdeeplinks.json +0 -12
- package/fixtures/recipes/testformvalidation.json +0 -13
- package/fixtures/recipes/testlayoutshift.json +0 -12
- package/fixtures/recipes/testlinkcheck.json +0 -12
- package/fixtures/recipes/testloadtiming.json +0 -12
- package/fixtures/recipes/testvisualdiff.json +0 -12
- package/fixtures/workflows/changelog-digest-workflow.json +0 -13
- package/fixtures/workflows/form-survey-workflow.json +0 -13
- package/gallery.json +0 -706
- package/hardening.d.ts.map +0 -1
- package/hardening.js +0 -188
- package/headless.d.ts.map +0 -1
- package/headless.js +0 -11522
- package/http.d.ts.map +0 -1
- package/http.js +0 -2165
- package/index.cjs +0 -54682
- package/index.d.ts.map +0 -1
- package/index.js +0 -52310
- package/index.neutral.js +0 -46343
- package/mcp.d.ts.map +0 -1
- package/mcp.js +0 -20515
- package/memory.d.ts.map +0 -1
- package/nativehost.template.json +0 -10
- package/node.cjs +0 -54686
- package/node.d.ts.map +0 -1
- package/pack.d.ts.map +0 -1
- package/pack.js +0 -805
- package/policy.d.ts.map +0 -1
- package/progress.d.ts.map +0 -1
- package/progress.js +0 -645
- package/protocol.d.ts.map +0 -1
- package/protocol.js +0 -8334
- package/schemas/audit.schema.json +0 -226
- package/schemas/capability.schema.json +0 -113
- package/schemas/envelope.schema.json +0 -162
- package/schemas/memory.schema.json +0 -51
- package/schemas/observation.schema.json +0 -113
- package/schemas/plan.schema.json +0 -208
- package/schemas/progress.schema.json +0 -126
- package/schemas/proposal.schema.json +0 -68
- package/schemas/session.schema.json +0 -82
- package/schemas/tool.schema.json +0 -94
- package/server.d.ts.map +0 -1
- package/server.js +0 -28877
- package/umd-example.html +0 -18
- package/umd.d.ts.map +0 -1
- /package/{bun.d.ts → dist/bun.d.ts} +0 -0
- /package/{cli.d.ts → dist/cli.d.ts} +0 -0
- /package/{companion.d.ts → dist/companion.d.ts} +0 -0
- /package/{crossbrowser.d.ts → dist/crossbrowser.d.ts} +0 -0
- /package/{dashdone.d.ts → dist/dashdone.d.ts} +0 -0
- /package/{deno.d.ts → dist/deno.d.ts} +0 -0
- /package/{hardening.d.ts → dist/hardening.d.ts} +0 -0
- /package/{headless.d.ts → dist/headless.d.ts} +0 -0
- /package/{http.d.ts → dist/http.d.ts} +0 -0
- /package/{index.d.ts → dist/index.d.ts} +0 -0
- /package/{mcp.d.ts → dist/mcp.d.ts} +0 -0
- /package/{memory.d.ts → dist/memory.d.ts} +0 -0
- /package/{node.d.ts → dist/node.d.ts} +0 -0
- /package/{pack.d.ts → dist/pack.d.ts} +0 -0
- /package/{policy.d.ts → dist/policy.d.ts} +0 -0
- /package/{progress.d.ts → dist/progress.d.ts} +0 -0
- /package/{protocol.d.ts → dist/protocol.d.ts} +0 -0
- /package/{server.d.ts → dist/server.d.ts} +0 -0
- /package/{umd.d.ts → dist/umd.d.ts} +0 -0
package/umd.ts
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Umd entry of the 1.1.67 family, restamped by the 1.1.81 library modes and sunset at 2.0.0.
|
|
3
|
+
* The shared core for script tag consumers: the build emits this entry as the global devthink bundle of the browser platform target, tree shakable imports, the whole library behind one script tag with the consent gates intact. The 2.0.0 sunset removed the deprecated uppercase Devthink global the deprecation window carried: the envelope exposes exactly the lowercase devthink surface the frozen library contract declares.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
export * from "./index.js";
|
|
7
|
+
import { stampbundle } from "./runtime.js";
|
|
8
|
+
|
|
9
|
+
stampbundle("umd", "devthink.umd.js");
|
package/utils.ts
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* utils — shared helpers for v1 v5 gateway replica
|
|
3
|
+
* all identifiers lowercase no underscore no emoji per skill
|
|
4
|
+
* related logics grouped in this one file 0 to 95 logics
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { randomInt } from "node:crypto";
|
|
8
|
+
|
|
9
|
+
/** cors headers — open cors for all gateway routes */
|
|
10
|
+
export const corsheaders: Record<string, string> = {
|
|
11
|
+
"access-control-allow-origin": "*",
|
|
12
|
+
"access-control-allow-methods":
|
|
13
|
+
"get,post,put,patch,delete,head,options,connect,trace,propfind,proppatch,mkcol,copy,move,lock,unlock,search,purge,link,unlink,report,checkout,checkin,checkout,version-control,label,merge,baseline-control,mkactivity,mkworkspace,update,subscribe,unsubscribe,notify,poll,bind,rebind,unbind,reindex",
|
|
14
|
+
"access-control-allow-headers":
|
|
15
|
+
"content-type,authorization,x-token,x-chat-id,x-user-id,x-session-id,x-request-id,x-thinking-level,x-model,x-tools,accept",
|
|
16
|
+
"access-control-max-age": "86400",
|
|
17
|
+
"access-control-expose-headers": "x-request-id,x-session-id",
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
/** content type constants */
|
|
21
|
+
export const ctjson = "application/json";
|
|
22
|
+
export const ctsse = "text/event-stream";
|
|
23
|
+
export const ctplain = "text/plain";
|
|
24
|
+
export const ctndjson = "application/x-ndjson";
|
|
25
|
+
export const ctoctet = "application/octet-stream";
|
|
26
|
+
|
|
27
|
+
/** max duration — near infinite 2 power 31 minus 1 */
|
|
28
|
+
export const maxdurationconst = 2147483647;
|
|
29
|
+
|
|
30
|
+
/** default max tokens — conservative per request 32768 */
|
|
31
|
+
export const defaultmaxtokens = 32768;
|
|
32
|
+
|
|
33
|
+
/** randombase36 — cryptographically secure base36 string of n chars
|
|
34
|
+
* node crypto randomint keeps every character uniformly distributed
|
|
35
|
+
* code scanning js insecure randomness safe — never math random */
|
|
36
|
+
export function randombase36(n: number): string {
|
|
37
|
+
const alphabet = "0123456789abcdefghijklmnopqrstuvwxyz";
|
|
38
|
+
let out = "";
|
|
39
|
+
for (let i = 0; i < n; i += 1) out += alphabet[randomInt(alphabet.length)];
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/** securerandom — cryptographically secure uniform float in 0 1
|
|
44
|
+
* replacement for math random in every security sensitive path
|
|
45
|
+
* jitter backoff session ids key selection all use this */
|
|
46
|
+
export function securerandom(): number {
|
|
47
|
+
return randomInt(1, 2 ** 48) / 2 ** 48;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
/** genid — generate a unique chatcmpl id
|
|
51
|
+
* timestamp plus 8 chars of secure base36 entropy */
|
|
52
|
+
export function genid(prefix = "chatcmpl"): string {
|
|
53
|
+
return `${prefix}-${Date.now().toString(36)}${randombase36(8)}`;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** getip — extract client ip from request headers */
|
|
57
|
+
export function getip(req: Request): string {
|
|
58
|
+
const headers = req.headers;
|
|
59
|
+
return (
|
|
60
|
+
headers.get("x-forwarded-for")?.split(",")[0]?.trim() ||
|
|
61
|
+
headers.get("x-real-ip") ||
|
|
62
|
+
headers.get("cf-connecting-ip") ||
|
|
63
|
+
headers.get("x-client-ip") ||
|
|
64
|
+
"unknown"
|
|
65
|
+
);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** handlecors — handle options preflight returns response or null */
|
|
69
|
+
export function handlecors(req: Request): Response | null {
|
|
70
|
+
if (req.method.toUpperCase() === "OPTIONS") {
|
|
71
|
+
return new Response(null, { status: 204, headers: corsheaders });
|
|
72
|
+
}
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** json headers */
|
|
77
|
+
export function jsonheaders(): Record<string, string> {
|
|
78
|
+
return { ...corsheaders, "content-type": ctjson };
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** detectcontenttype — read accept header returns format */
|
|
82
|
+
export function detectcontenttype(req: Request): "sse" | "ndjson" | "json" | "plain" | "octet" {
|
|
83
|
+
const accept = (req.headers.get("accept") || "").toLowerCase();
|
|
84
|
+
if (accept.includes(ctndjson)) return "ndjson";
|
|
85
|
+
if (accept.includes("text/event-stream")) return "sse";
|
|
86
|
+
if (accept.includes(ctplain)) return "plain";
|
|
87
|
+
if (accept.includes(ctoctet)) return "octet";
|
|
88
|
+
return "json";
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** clamp — bound a number between min and max
|
|
92
|
+
* only nan falls back: infinity is a boundable value (plus infinity clamps
|
|
93
|
+
* to max minus infinity to min) — treating it like nan silently replaced
|
|
94
|
+
* extreme inputs with the fallback */
|
|
95
|
+
export function clamp(n: unknown, min: number, max: number, fallback = 0): number {
|
|
96
|
+
const v = typeof n === "string" ? parseFloat(n) : typeof n === "number" ? n : fallback;
|
|
97
|
+
if (Number.isNaN(v)) return fallback;
|
|
98
|
+
if (!Number.isFinite(v)) return v > 0 ? max : min;
|
|
99
|
+
return Math.max(min, Math.min(max, v));
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** automaxtokens — clamp max tokens 1 to 98304 */
|
|
103
|
+
export function automaxtokens(n: unknown, fallback = defaultmaxtokens): number {
|
|
104
|
+
const v = typeof n === "string" ? parseInt(n, 10) : typeof n === "number" ? n : fallback;
|
|
105
|
+
if (!Number.isFinite(v) || v === 0) return fallback;
|
|
106
|
+
return clamp(v, 1, 98304, fallback);
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/** autotemp — clamp temperature 0 to 2 */
|
|
110
|
+
export function autotemp(n: unknown, fallback = 0.7): number {
|
|
111
|
+
return clamp(n, 0, 2, fallback);
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/** autotopp — clamp top p 0 to 1 */
|
|
115
|
+
export function autotopp(n: unknown, fallback = 0.9): number {
|
|
116
|
+
return clamp(n, 0, 1, fallback);
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
/** autofrequencypenalty */
|
|
120
|
+
export function autofrequencypenalty(n: unknown, fallback = 0): number {
|
|
121
|
+
return clamp(n, -2, 2, fallback);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
/** autopresencepenalty */
|
|
125
|
+
export function autopresencepenalty(n: unknown, fallback = 0): number {
|
|
126
|
+
return clamp(n, -2, 2, fallback);
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
/** auton — clamp n 1 to 10 */
|
|
130
|
+
export function auton(n: unknown, fallback = 1): number {
|
|
131
|
+
return clamp(n, 1, 10, fallback);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
/** autoseed — nonnegative int bounded
|
|
135
|
+
* absolute value floors toward zero: abs before floor — floor before abs
|
|
136
|
+
* rounded negatives away from zero (-12.9 became 13 while 12.9 was 12) */
|
|
137
|
+
export function autoseed(n: unknown, fallback = 0): number {
|
|
138
|
+
const v = typeof n === "string" ? parseInt(n, 10) : typeof n === "number" ? n : fallback;
|
|
139
|
+
if (!Number.isFinite(v)) return fallback;
|
|
140
|
+
return clamp(Math.floor(Math.abs(v)), 0, 2147483647, fallback);
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
/** autothinking — normalize thinking level string to canonical 7 level */
|
|
144
|
+
export function autothinking(level?: unknown): "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max" {
|
|
145
|
+
if (!level || typeof level !== "string") return "high";
|
|
146
|
+
const l = String(level).toLowerCase().trim();
|
|
147
|
+
if (l in thinkingbudgets) return l as "none" | "minimal" | "low" | "medium" | "high" | "xhigh" | "max";
|
|
148
|
+
if (l === "disabled" || l === "off" || l === "false") return "none";
|
|
149
|
+
if (l === "minimum") return "minimal";
|
|
150
|
+
if (l === "med" || l === "mid") return "medium";
|
|
151
|
+
if (l === "extra" || l === "ultra") return "xhigh";
|
|
152
|
+
if (l === "maximum" || l === "full" || l === "all") return "max";
|
|
153
|
+
return "high";
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** thinking budgets — 7 level thinking token budgets */
|
|
157
|
+
export const thinkingbudgets: Record<string, number> = {
|
|
158
|
+
none: 0,
|
|
159
|
+
minimal: 1400,
|
|
160
|
+
low: 5500,
|
|
161
|
+
medium: 17000,
|
|
162
|
+
high: 68000,
|
|
163
|
+
xhigh: 68000,
|
|
164
|
+
max: 68000,
|
|
165
|
+
};
|
|
166
|
+
|
|
167
|
+
/** thinkingbudget — get token budget for a level */
|
|
168
|
+
export function thinkingbudget(level?: string): number {
|
|
169
|
+
return thinkingbudgets[autothinking(level)] ?? 68000;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** makethinker — create a thinking budget object */
|
|
173
|
+
export function makethinker(level?: string) {
|
|
174
|
+
const lvl = autothinking(level);
|
|
175
|
+
if (lvl === "none") return { type: "disabled" as const };
|
|
176
|
+
return { type: "enabled" as const, budget: thinkingbudgets[lvl] };
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
/** safestringify — json stringify that never throws */
|
|
180
|
+
export function safestringify(obj: unknown): string {
|
|
181
|
+
try {
|
|
182
|
+
return JSON.stringify(obj);
|
|
183
|
+
} catch {
|
|
184
|
+
return String(obj);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/** safejsonparse — json parse that never throws returns null on failure */
|
|
189
|
+
export function safejsonparse<T = unknown>(s: string): T | null {
|
|
190
|
+
try {
|
|
191
|
+
return JSON.parse(s) as T;
|
|
192
|
+
} catch {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
/** levenshtein — fuzzy string distance for parameter name matching */
|
|
198
|
+
export function levenshtein(a: string, b: string): number {
|
|
199
|
+
const m = a.length;
|
|
200
|
+
const n = b.length;
|
|
201
|
+
if (m === 0) return n;
|
|
202
|
+
if (n === 0) return m;
|
|
203
|
+
const dp: number[][] = Array.from({ length: m + 1 }, () => new Array(n + 1).fill(0));
|
|
204
|
+
for (let i = 0; i <= m; i++) dp[i][0] = i;
|
|
205
|
+
for (let j = 0; j <= n; j++) dp[0][j] = j;
|
|
206
|
+
for (let i = 1; i <= m; i++) {
|
|
207
|
+
for (let j = 1; j <= n; j++) {
|
|
208
|
+
const cost = a[i - 1] === b[j - 1] ? 0 : 1;
|
|
209
|
+
dp[i][j] = Math.min(dp[i - 1][j] + 1, dp[i][j - 1] + 1, dp[i - 1][j - 1] + cost);
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
return dp[m][n];
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
/** esttokens — cjk aware token estimate */
|
|
216
|
+
export function esttokens(text: string): number {
|
|
217
|
+
if (!text) return 0;
|
|
218
|
+
let ascii = 0;
|
|
219
|
+
let cjk = 0;
|
|
220
|
+
for (const ch of text) {
|
|
221
|
+
const code = ch.codePointAt(0) || 0;
|
|
222
|
+
if (code >= 0x3000 && code <= 0x9fff) cjk++;
|
|
223
|
+
else if (code >= 0x4e00 && code <= 0x9fff) cjk++;
|
|
224
|
+
else if (code >= 0xac00 && code <= 0xd7af) cjk++;
|
|
225
|
+
else ascii++;
|
|
226
|
+
}
|
|
227
|
+
return Math.ceil(ascii / 4 + cjk / 2);
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/** truncatemessages — truncate message history to fit context window */
|
|
231
|
+
export function truncatemessages(messages: unknown[], maxtokens: number): unknown[] {
|
|
232
|
+
const result: unknown[] = [];
|
|
233
|
+
let total = 0;
|
|
234
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
235
|
+
const msg = messages[i] as Record<string, unknown>;
|
|
236
|
+
const content = typeof msg.content === "string" ? msg.content : safestringify(msg.content);
|
|
237
|
+
const tokens = esttokens(content) + 4;
|
|
238
|
+
if (total + tokens > maxtokens) break;
|
|
239
|
+
result.unshift(msg);
|
|
240
|
+
total += tokens;
|
|
241
|
+
}
|
|
242
|
+
return result;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// the devthink meta-model identity and the intelligencerank interface
|
|
246
|
+
// previously lived here as helpers for the deleted gatewayvN.ts files —
|
|
247
|
+
// that context now lives exactly once: the type surface in types.ts
|
|
248
|
+
// (intelligencerank, modeldef.rank) and the user definitions in
|
|
249
|
+
// web/config.ts (one context one file — nothing duplicated in utils)
|
package/version.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Canonical package version synchronized from package.json. */
|
|
2
|
+
export const packageversion = "2.0.15" as const;
|
|
3
|
+
|
|
4
|
+
/** The frozen protocolv2 major of the 1.1.91 api freeze: the wire speaks major two from this release on, the deprecation window closed at 2.0.0 and every major above two refuses until a future major bump. */
|
|
5
|
+
export const protocolmajor = 2 as const;
|
|
6
|
+
|
|
7
|
+
/** The lowest protocol major this build accepts: the deprecation window closed at 2.0.0, so the line speaks major two only — a client that declares major one answers the refusal below the floor while version one assets ride the migrateplan command and the migration guide. */
|
|
8
|
+
export const protocolfloormajor = 2 as const;
|