@vibgrate/cli 2026.801.1 → 2026.803.3
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/dist/agent-JTA4YWMQ.js +24 -0
- package/dist/{agent-4DAECASW.js.map → agent-JTA4YWMQ.js.map} +1 -1
- package/dist/baseline-2V7PKA7Q.js +9 -0
- package/dist/{baseline-4BDH4F2W.js.map → baseline-2V7PKA7Q.js.map} +1 -1
- package/dist/{chunk-76TDXGGF.js → chunk-3Q3ZXJZP.js} +218 -51
- package/dist/chunk-3Q3ZXJZP.js.map +1 -0
- package/dist/{chunk-G7W4MFPZ.js → chunk-4ACXDVON.js} +4 -4
- package/dist/{chunk-G7W4MFPZ.js.map → chunk-4ACXDVON.js.map} +1 -1
- package/dist/{chunk-E6H2F2XF.js → chunk-6DFV4WCQ.js} +3 -3
- package/dist/{chunk-E6H2F2XF.js.map → chunk-6DFV4WCQ.js.map} +1 -1
- package/dist/{chunk-FF5ZQ6KI.js → chunk-6JP7HGIF.js} +4 -4
- package/dist/{chunk-FF5ZQ6KI.js.map → chunk-6JP7HGIF.js.map} +1 -1
- package/dist/chunk-7KNFG44U.js +6 -0
- package/dist/{chunk-TGDHOAXX.js.map → chunk-7KNFG44U.js.map} +1 -1
- package/dist/{chunk-T6DRYOMT.js → chunk-CPLG4GFB.js} +4 -4
- package/dist/{chunk-T6DRYOMT.js.map → chunk-CPLG4GFB.js.map} +1 -1
- package/dist/{chunk-SDG242R4.js → chunk-HC44772H.js} +132 -365
- package/dist/chunk-HC44772H.js.map +1 -0
- package/dist/{chunk-MPP4S4OE.js → chunk-K6Q6HTFD.js} +32 -11
- package/dist/chunk-K6Q6HTFD.js.map +1 -0
- package/dist/{chunk-7G5S5KZN.js → chunk-KUZLILN3.js} +16 -3
- package/dist/chunk-KUZLILN3.js.map +1 -0
- package/dist/{chunk-XEJJGDGX.js → chunk-KYX2YCXT.js} +134 -9
- package/dist/chunk-KYX2YCXT.js.map +1 -0
- package/dist/{chunk-V2QK3IUY.js → chunk-L5PUNO3T.js} +4 -4
- package/dist/{chunk-V2QK3IUY.js.map → chunk-L5PUNO3T.js.map} +1 -1
- package/dist/{chunk-7PVCHLR2.js → chunk-M452MRWI.js} +109 -10
- package/dist/chunk-M452MRWI.js.map +1 -0
- package/dist/{chunk-WIDZ5IE7.js → chunk-M7773OUN.js} +14 -7
- package/dist/chunk-M7773OUN.js.map +1 -0
- package/dist/{chunk-XRN7DQGR.js → chunk-NJFQCDGA.js} +3 -3
- package/dist/{chunk-XRN7DQGR.js.map → chunk-NJFQCDGA.js.map} +1 -1
- package/dist/{chunk-BNEHDLVZ.js → chunk-NSWEJPLV.js} +129 -20
- package/dist/chunk-NSWEJPLV.js.map +1 -0
- package/dist/{chunk-JLWI2JGA.js → chunk-NUZM7UOR.js} +117 -6
- package/dist/chunk-NUZM7UOR.js.map +1 -0
- package/dist/{chunk-B3OMGYZZ.js → chunk-PXM3VZYR.js} +4 -4
- package/dist/{chunk-B3OMGYZZ.js.map → chunk-PXM3VZYR.js.map} +1 -1
- package/dist/chunk-QMME6TB4.js +457 -0
- package/dist/chunk-QMME6TB4.js.map +1 -0
- package/dist/{chunk-G25STLE7.js → chunk-SJFBXCII.js} +30 -3
- package/dist/chunk-SJFBXCII.js.map +1 -0
- package/dist/{chunk-A43I2AJ4.js → chunk-TM5XQY3L.js} +3 -3
- package/dist/{chunk-A43I2AJ4.js.map → chunk-TM5XQY3L.js.map} +1 -1
- package/dist/{chunk-KL65SSR7.js → chunk-TNADGCOX.js} +323 -152
- package/dist/chunk-TNADGCOX.js.map +1 -0
- package/dist/{chunk-V3X3DBZL.js → chunk-UXR7FBE3.js} +6 -6
- package/dist/{chunk-V3X3DBZL.js.map → chunk-UXR7FBE3.js.map} +1 -1
- package/dist/{chunk-IPICO2RV.js → chunk-VIWZ4QT7.js} +14 -3
- package/dist/chunk-VIWZ4QT7.js.map +1 -0
- package/dist/{chunk-IRCYOTRG.js → chunk-WGPS3NZQ.js} +240 -13
- package/dist/chunk-WGPS3NZQ.js.map +1 -0
- package/dist/{chunk-I6RBAIS3.js → chunk-XK5LKOBF.js} +4 -4
- package/dist/{chunk-I6RBAIS3.js.map → chunk-XK5LKOBF.js.map} +1 -1
- package/dist/cli.js +796 -359
- package/dist/cli.js.map +1 -1
- package/dist/ensure-map-TAVYMPEG.js +29 -0
- package/dist/{ensure-map-SMWHKOUY.js.map → ensure-map-TAVYMPEG.js.map} +1 -1
- package/dist/{graph-backend-I4I72J4W.js → graph-backend-WF4LGBGD.js} +5 -5
- package/dist/{graph-backend-I4I72J4W.js.map → graph-backend-WF4LGBGD.js.map} +1 -1
- package/dist/index.d.ts +143 -7
- package/dist/index.js +17 -16
- package/dist/index.js.map +1 -1
- package/dist/{interactive-TMQR6TXM.js → interactive-6PN237LX.js} +49 -32
- package/dist/interactive-6PN237LX.js.map +1 -0
- package/dist/load-T2FOJUPI.js +10 -0
- package/dist/{load-E3OTM7BS.js.map → load-T2FOJUPI.js.map} +1 -1
- package/dist/model-manager-GJ2YSTSK.js +1 -1
- package/dist/{run-outcome-QWLNBASF.js → run-outcome-AMIKAASL.js} +6 -6
- package/dist/{run-outcome-QWLNBASF.js.map → run-outcome-AMIKAASL.js.map} +1 -1
- package/dist/runtime-session-QAVOPSSH.js +20 -0
- package/dist/{runtime-session-UQ7UVAPL.js.map → runtime-session-QAVOPSSH.js.map} +1 -1
- package/dist/session-SCHQQTHN.js +15 -0
- package/dist/{session-MG6BJVAG.js.map → session-SCHQQTHN.js.map} +1 -1
- package/dist/session-store-F7NX7SZN.js +4 -0
- package/dist/{session-store-SQECEXUU.js.map → session-store-F7NX7SZN.js.map} +1 -1
- package/dist/{stream-json-GM44SP7L.js → stream-json-A6K2MONY.js} +48 -16
- package/dist/stream-json-A6K2MONY.js.map +1 -0
- package/dist/{vg-mcp-bridge-3WFC7LGE.js → vg-mcp-bridge-3TSFOL4V.js} +13 -11
- package/dist/vg-mcp-bridge-3TSFOL4V.js.map +1 -0
- package/dist/{vgd-ZUSBEVUL.js → vgd-B67JCNJP.js} +9 -9
- package/dist/vgd-B67JCNJP.js.map +1 -0
- package/package.json +1 -1
- package/dist/agent-4DAECASW.js +0 -22
- package/dist/baseline-4BDH4F2W.js +0 -9
- package/dist/chunk-76TDXGGF.js.map +0 -1
- package/dist/chunk-7G5S5KZN.js.map +0 -1
- package/dist/chunk-7PVCHLR2.js.map +0 -1
- package/dist/chunk-BNEHDLVZ.js.map +0 -1
- package/dist/chunk-G25STLE7.js.map +0 -1
- package/dist/chunk-IPICO2RV.js.map +0 -1
- package/dist/chunk-IRCYOTRG.js.map +0 -1
- package/dist/chunk-JLWI2JGA.js.map +0 -1
- package/dist/chunk-KL65SSR7.js.map +0 -1
- package/dist/chunk-MPP4S4OE.js.map +0 -1
- package/dist/chunk-SDG242R4.js.map +0 -1
- package/dist/chunk-TGDHOAXX.js +0 -6
- package/dist/chunk-WIDZ5IE7.js.map +0 -1
- package/dist/chunk-XEJJGDGX.js.map +0 -1
- package/dist/chunk-ZKNB4YH4.js +0 -102
- package/dist/chunk-ZKNB4YH4.js.map +0 -1
- package/dist/ensure-map-SMWHKOUY.js +0 -28
- package/dist/interactive-TMQR6TXM.js.map +0 -1
- package/dist/load-E3OTM7BS.js +0 -10
- package/dist/runtime-session-UQ7UVAPL.js +0 -20
- package/dist/session-MG6BJVAG.js +0 -13
- package/dist/session-store-SQECEXUU.js +0 -4
- package/dist/stream-json-GM44SP7L.js.map +0 -1
- package/dist/vg-mcp-bridge-3WFC7LGE.js.map +0 -1
- package/dist/vgd-ZUSBEVUL.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { cacheDir } from './chunk-
|
|
1
|
+
import { cacheDir, bigramConsumedTokens, WEAK_TERMS, expandConcepts } from './chunk-QMME6TB4.js';
|
|
2
2
|
import { hashString } from './chunk-JFGYT6BI.js';
|
|
3
3
|
import * as fs2 from 'fs';
|
|
4
4
|
import { createRequire } from 'module';
|
|
@@ -436,350 +436,6 @@ function safe(id) {
|
|
|
436
436
|
return id.replace(/[^a-z0-9.-]+/gi, "_");
|
|
437
437
|
}
|
|
438
438
|
|
|
439
|
-
// src/engine/concepts.ts
|
|
440
|
-
var WEAK_TERMS = /* @__PURE__ */ new Set([
|
|
441
|
-
"add",
|
|
442
|
-
"adds",
|
|
443
|
-
"added",
|
|
444
|
-
"adding",
|
|
445
|
-
"create",
|
|
446
|
-
"creates",
|
|
447
|
-
"created",
|
|
448
|
-
"creating",
|
|
449
|
-
"make",
|
|
450
|
-
"makes",
|
|
451
|
-
"making",
|
|
452
|
-
"made",
|
|
453
|
-
"new",
|
|
454
|
-
"newly",
|
|
455
|
-
"remove",
|
|
456
|
-
"removes",
|
|
457
|
-
"removed",
|
|
458
|
-
"removing",
|
|
459
|
-
"delete",
|
|
460
|
-
"deletes",
|
|
461
|
-
"deleted",
|
|
462
|
-
"deleting",
|
|
463
|
-
"update",
|
|
464
|
-
"updates",
|
|
465
|
-
"updated",
|
|
466
|
-
"updating",
|
|
467
|
-
"change",
|
|
468
|
-
"changes",
|
|
469
|
-
"changed",
|
|
470
|
-
"changing",
|
|
471
|
-
"set",
|
|
472
|
-
"sets",
|
|
473
|
-
"setting",
|
|
474
|
-
"setup",
|
|
475
|
-
"get",
|
|
476
|
-
"gets",
|
|
477
|
-
"getting",
|
|
478
|
-
"use",
|
|
479
|
-
"uses",
|
|
480
|
-
"used",
|
|
481
|
-
"using",
|
|
482
|
-
"want",
|
|
483
|
-
"wants",
|
|
484
|
-
"wanted",
|
|
485
|
-
"do",
|
|
486
|
-
"does",
|
|
487
|
-
"doing",
|
|
488
|
-
"done",
|
|
489
|
-
"support",
|
|
490
|
-
"supports",
|
|
491
|
-
"supported",
|
|
492
|
-
"supporting",
|
|
493
|
-
"enable",
|
|
494
|
-
"enables",
|
|
495
|
-
"enabled",
|
|
496
|
-
"enabling",
|
|
497
|
-
"disable",
|
|
498
|
-
"disables",
|
|
499
|
-
"disabled",
|
|
500
|
-
"disabling",
|
|
501
|
-
"allow",
|
|
502
|
-
"allows",
|
|
503
|
-
"allowed",
|
|
504
|
-
"implement",
|
|
505
|
-
"implements",
|
|
506
|
-
"implemented",
|
|
507
|
-
"implementing",
|
|
508
|
-
"build",
|
|
509
|
-
"builds",
|
|
510
|
-
"building",
|
|
511
|
-
"built",
|
|
512
|
-
"via",
|
|
513
|
-
"through",
|
|
514
|
-
"into",
|
|
515
|
-
"onto",
|
|
516
|
-
"way",
|
|
517
|
-
"ways",
|
|
518
|
-
"thing",
|
|
519
|
-
"things",
|
|
520
|
-
"stuff",
|
|
521
|
-
"feature",
|
|
522
|
-
"features",
|
|
523
|
-
"functionality",
|
|
524
|
-
"method",
|
|
525
|
-
"methods",
|
|
526
|
-
"option",
|
|
527
|
-
"options",
|
|
528
|
-
"ability",
|
|
529
|
-
"help",
|
|
530
|
-
"start",
|
|
531
|
-
"begin",
|
|
532
|
-
"work",
|
|
533
|
-
"works",
|
|
534
|
-
"working",
|
|
535
|
-
"also",
|
|
536
|
-
"currently",
|
|
537
|
-
"properly",
|
|
538
|
-
"correctly",
|
|
539
|
-
"please",
|
|
540
|
-
"happens",
|
|
541
|
-
"happen",
|
|
542
|
-
"something",
|
|
543
|
-
"somewhere",
|
|
544
|
-
"step",
|
|
545
|
-
"steps",
|
|
546
|
-
"flow",
|
|
547
|
-
"process",
|
|
548
|
-
"you",
|
|
549
|
-
"can"
|
|
550
|
-
]);
|
|
551
|
-
var CONCEPTS = {
|
|
552
|
-
// ---- payments / billing ----
|
|
553
|
-
payment: ["stripe", "billing", "invoice", "checkout", "charge", "subscription", "refund", "payout", "card", "debit", "mandate"],
|
|
554
|
-
pay: ["payment", "stripe", "charge", "billing", "invoice"],
|
|
555
|
-
paid: ["payment", "invoice", "charge"],
|
|
556
|
-
billing: ["invoice", "payment", "subscription", "stripe", "charge", "renewal"],
|
|
557
|
-
checkout: ["stripe", "payment", "cart", "session"],
|
|
558
|
-
debit: ["mandate", "sepa", "bacs", "ach", "bank", "payment"],
|
|
559
|
-
mandate: ["sepa", "bacs", "debit"],
|
|
560
|
-
sepa: ["mandate", "debit", "iban", "bank"],
|
|
561
|
-
bacs: ["mandate", "debit", "bank"],
|
|
562
|
-
ach: ["mandate", "debit", "bank"],
|
|
563
|
-
stripe: ["payment", "billing", "checkout", "webhook", "charge", "card"],
|
|
564
|
-
refund: ["payment", "invoice", "stripe", "charge"],
|
|
565
|
-
invoice: ["billing", "payment", "refund", "subscription"],
|
|
566
|
-
subscription: ["billing", "renewal", "invoice", "plan", "recurring"],
|
|
567
|
-
recurring: ["subscription", "renewal", "mandate", "debit"],
|
|
568
|
-
renewal: ["subscription", "billing", "renew"],
|
|
569
|
-
card: ["payment", "charge", "stripe"],
|
|
570
|
-
credit: ["card", "payment", "charge"],
|
|
571
|
-
bank: ["debit", "mandate", "sepa", "iban", "account"],
|
|
572
|
-
charge: ["payment", "card", "stripe"],
|
|
573
|
-
webhook: ["event", "handler", "callback"],
|
|
574
|
-
price: ["payment", "billing", "plan"],
|
|
575
|
-
customer: ["billing", "account", "user"],
|
|
576
|
-
// ---- auth ----
|
|
577
|
-
auth: ["login", "session", "token", "oauth", "password", "credential"],
|
|
578
|
-
authentication: ["auth", "login", "session", "token", "password"],
|
|
579
|
-
authenticated: ["auth", "login", "session"],
|
|
580
|
-
login: ["auth", "session", "password", "signin", "oauth"],
|
|
581
|
-
signin: ["login", "auth", "session"],
|
|
582
|
-
signup: ["register", "onboard", "account"],
|
|
583
|
-
logout: ["session", "auth", "signout"],
|
|
584
|
-
password: ["auth", "login", "credential", "hash"],
|
|
585
|
-
session: ["auth", "login", "token"],
|
|
586
|
-
token: ["session", "auth", "jwt"],
|
|
587
|
-
oauth: ["auth", "login", "callback", "provider"],
|
|
588
|
-
google: ["oauth", "login", "auth"],
|
|
589
|
-
github: ["oauth", "login", "auth"],
|
|
590
|
-
sso: ["oauth", "auth", "saml", "login"],
|
|
591
|
-
credential: ["auth", "password", "token", "secret"],
|
|
592
|
-
// ---- dependencies / supply chain ----
|
|
593
|
-
dependency: ["package", "audit", "vulnerability", "advisory", "lockfile", "version"],
|
|
594
|
-
package: ["dependency", "audit", "vulnerability", "advisory", "lockfile"],
|
|
595
|
-
vulnerability: ["advisory", "cve", "osv", "audit", "vulnerable"],
|
|
596
|
-
vulnerable: ["vulnerability", "advisory", "audit", "cve"],
|
|
597
|
-
advisory: ["vulnerability", "cve", "osv", "audit"],
|
|
598
|
-
cve: ["vulnerability", "advisory", "osv"],
|
|
599
|
-
risk: ["vulnerability", "audit", "advisory"],
|
|
600
|
-
security: ["vulnerability", "audit", "advisory"],
|
|
601
|
-
audit: ["dependency", "vulnerability", "advisory"],
|
|
602
|
-
scan: ["audit", "vulnerability", "scanner"],
|
|
603
|
-
// ---- notifications / messaging ----
|
|
604
|
-
email: ["mail", "smtp", "sender", "template", "message"],
|
|
605
|
-
mail: ["email", "smtp", "sender"],
|
|
606
|
-
notification: ["notify", "email", "sms", "push", "alert"],
|
|
607
|
-
notify: ["notification", "email", "alert"],
|
|
608
|
-
sms: ["notification", "message", "twilio"],
|
|
609
|
-
// ---- e-commerce ----
|
|
610
|
-
cart: ["checkout", "order", "shop", "basket", "discount"],
|
|
611
|
-
basket: ["cart", "checkout", "order"],
|
|
612
|
-
order: ["cart", "shipment", "fulfillment", "shop", "checkout"],
|
|
613
|
-
ship: ["order", "fulfillment", "delivery", "shipment"],
|
|
614
|
-
shipment: ["order", "fulfillment", "delivery", "track"],
|
|
615
|
-
shipping: ["order", "fulfillment", "delivery", "shipment"],
|
|
616
|
-
shipped: ["order", "fulfillment", "shipment"],
|
|
617
|
-
inventory: ["stock", "product", "catalog", "restock"],
|
|
618
|
-
stock: ["inventory", "product", "restock"],
|
|
619
|
-
product: ["catalog", "inventory", "shop"],
|
|
620
|
-
discount: ["coupon", "promo", "cart", "price"],
|
|
621
|
-
coupon: ["discount", "promo", "code"],
|
|
622
|
-
// ---- chat / social ----
|
|
623
|
-
chat: ["message", "room", "conversation", "presence"],
|
|
624
|
-
message: ["chat", "sms", "notification", "thread"],
|
|
625
|
-
conversation: ["chat", "message", "thread"],
|
|
626
|
-
presence: ["online", "typing", "status"],
|
|
627
|
-
online: ["presence", "status"],
|
|
628
|
-
typing: ["presence", "indicator", "broadcast"],
|
|
629
|
-
// ---- media / streaming ----
|
|
630
|
-
video: ["media", "transcode", "playback", "stream", "thumbnail"],
|
|
631
|
-
stream: ["video", "playback", "manifest", "media"],
|
|
632
|
-
streaming: ["video", "playback", "manifest", "media"],
|
|
633
|
-
playback: ["video", "stream", "media", "watch"],
|
|
634
|
-
transcode: ["video", "media", "encode"],
|
|
635
|
-
thumbnail: ["video", "image", "media"],
|
|
636
|
-
media: ["video", "stream", "playback", "asset"],
|
|
637
|
-
// ---- analytics ----
|
|
638
|
-
analytics: ["event", "track", "metric", "funnel", "report"],
|
|
639
|
-
event: ["track", "analytics", "webhook"],
|
|
640
|
-
track: ["event", "analytics"],
|
|
641
|
-
funnel: ["conversion", "analytics", "event"],
|
|
642
|
-
conversion: ["funnel", "analytics"],
|
|
643
|
-
report: ["metrics", "export", "analytics"],
|
|
644
|
-
// ---- content / CMS ----
|
|
645
|
-
article: ["publish", "content", "post", "cms"],
|
|
646
|
-
publish: ["article", "release", "post", "content"],
|
|
647
|
-
post: ["article", "publish", "message"],
|
|
648
|
-
blog: ["article", "publish", "post", "cms"],
|
|
649
|
-
content: ["cms", "article", "markdown"],
|
|
650
|
-
markdown: ["render", "article", "content"],
|
|
651
|
-
cms: ["article", "content", "publish"],
|
|
652
|
-
// ---- CI / deployment ----
|
|
653
|
-
deploy: ["release", "rollback", "pipeline", "deployment"],
|
|
654
|
-
deployment: ["deploy", "release", "rollback", "pipeline"],
|
|
655
|
-
release: ["deploy", "version", "rollback"],
|
|
656
|
-
rollback: ["deploy", "release", "deployment"],
|
|
657
|
-
pipeline: ["stage", "deploy", "runner", "ci"],
|
|
658
|
-
canary: ["deploy", "rollout", "release"],
|
|
659
|
-
// ---- mobile ----
|
|
660
|
-
push: ["notification", "device", "token", "mobile"],
|
|
661
|
-
device: ["push", "token", "mobile", "register"],
|
|
662
|
-
deeplink: ["link", "route", "universal"],
|
|
663
|
-
mobile: ["push", "device", "deeplink", "app"],
|
|
664
|
-
ios: ["mobile", "universal", "link", "app"],
|
|
665
|
-
android: ["mobile", "push", "device", "app"],
|
|
666
|
-
// ---- batch / ETL / mainframe ----
|
|
667
|
-
batch: ["settlement", "job", "etl", "reconcile"],
|
|
668
|
-
settlement: ["batch", "reconcile", "ledger", "clearing"],
|
|
669
|
-
reconcile: ["ledger", "settlement", "batch"],
|
|
670
|
-
ledger: ["settlement", "reconcile", "balance", "journal"],
|
|
671
|
-
mainframe: ["batch", "settlement", "ebcdic", "cobol", "fixed"],
|
|
672
|
-
ebcdic: ["mainframe", "record", "convert", "legacy"],
|
|
673
|
-
cobol: ["mainframe", "batch", "ebcdic"],
|
|
674
|
-
etl: ["batch", "pipeline", "extract", "load", "transform"],
|
|
675
|
-
nightly: ["batch", "cron", "schedule", "job"],
|
|
676
|
-
// ---- geo / maps ----
|
|
677
|
-
geocode: ["address", "location", "map", "geo"],
|
|
678
|
-
address: ["geocode", "location"],
|
|
679
|
-
map: ["geo", "route", "location"],
|
|
680
|
-
route: ["distance", "path", "planner", "geo"],
|
|
681
|
-
distance: ["route", "haversine", "geo"],
|
|
682
|
-
location: ["geo", "geocode", "map"],
|
|
683
|
-
arrival: ["route", "eta", "estimate"],
|
|
684
|
-
// ---- i18n ----
|
|
685
|
-
translation: ["locale", "i18n", "language", "translate"],
|
|
686
|
-
translate: ["translation", "locale", "language"],
|
|
687
|
-
locale: ["translation", "i18n", "language", "format"],
|
|
688
|
-
i18n: ["translation", "locale", "language"],
|
|
689
|
-
language: ["locale", "translation", "i18n"],
|
|
690
|
-
localized: ["locale", "translation", "format"],
|
|
691
|
-
// ---- observability ----
|
|
692
|
-
metric: ["counter", "prometheus", "telemetry", "export"],
|
|
693
|
-
prometheus: ["metric", "exporter", "monitoring"],
|
|
694
|
-
trace: ["span", "telemetry", "observability"],
|
|
695
|
-
span: ["trace", "telemetry"],
|
|
696
|
-
monitoring: ["metric", "trace", "alert", "observability"],
|
|
697
|
-
telemetry: ["metric", "trace", "span"],
|
|
698
|
-
counter: ["metric", "increment"],
|
|
699
|
-
// ---- feature flags / experimentation ----
|
|
700
|
-
flag: ["feature", "rollout", "toggle", "experiment"],
|
|
701
|
-
rollout: ["flag", "percentage", "release", "experiment"],
|
|
702
|
-
toggle: ["flag", "feature", "switch"],
|
|
703
|
-
experiment: ["variant", "assign", "flag", "exposure"],
|
|
704
|
-
variant: ["experiment", "assign"],
|
|
705
|
-
// ---- generic infrastructure ----
|
|
706
|
-
database: ["schema", "migration", "sql", "query", "orm"],
|
|
707
|
-
db: ["database", "schema", "migration", "sql"],
|
|
708
|
-
migration: ["database", "schema", "migrate", "sql"],
|
|
709
|
-
cache: ["redis", "ttl", "store"],
|
|
710
|
-
queue: ["job", "worker", "task", "batch"],
|
|
711
|
-
job: ["queue", "worker", "cron"],
|
|
712
|
-
upload: ["file", "storage", "blob", "asset"],
|
|
713
|
-
storage: ["file", "upload", "bucket", "blob"],
|
|
714
|
-
permission: ["role", "rbac", "acl", "access", "grant"],
|
|
715
|
-
role: ["permission", "rbac", "access"],
|
|
716
|
-
error: ["exception", "failure", "handler"],
|
|
717
|
-
config: ["settings", "env", "configuration"]
|
|
718
|
-
};
|
|
719
|
-
var BIGRAM_CONCEPTS = {
|
|
720
|
-
"direct debit": ["debit", "mandate", "sepa", "bacs", "bank"],
|
|
721
|
-
"direct debits": ["debit", "mandate", "sepa", "bacs", "bank"],
|
|
722
|
-
"sign in": ["login", "signin", "auth", "session"],
|
|
723
|
-
"signs in": ["login", "signin", "auth", "session"],
|
|
724
|
-
"log in": ["login", "auth", "session"],
|
|
725
|
-
"logs in": ["login", "auth", "session"],
|
|
726
|
-
"logged in": ["login", "auth", "session"],
|
|
727
|
-
"sign up": ["signup", "register", "account"],
|
|
728
|
-
"credit card": ["card", "payment", "charge", "stripe"],
|
|
729
|
-
"credit cards": ["card", "payment", "charge", "stripe"],
|
|
730
|
-
"bank transfer": ["bank", "payment", "sepa", "transfer"],
|
|
731
|
-
"rate limit": ["ratelimit", "throttle", "quota"],
|
|
732
|
-
"two factor": ["totp", "mfa", "otp", "auth"],
|
|
733
|
-
"payment method": ["payment", "stripe", "card", "debit"],
|
|
734
|
-
"payment methods": ["payment", "stripe", "card", "debit"],
|
|
735
|
-
"push notification": ["push", "device", "token", "notification"],
|
|
736
|
-
"push notifications": ["push", "device", "token", "notification"],
|
|
737
|
-
"deep link": ["deeplink", "link", "route"],
|
|
738
|
-
"deep links": ["deeplink", "link", "route"],
|
|
739
|
-
"universal link": ["deeplink", "link", "universal"],
|
|
740
|
-
"universal links": ["deeplink", "link", "universal"],
|
|
741
|
-
"feature flag": ["flag", "rollout", "toggle", "experiment"],
|
|
742
|
-
"feature flags": ["flag", "rollout", "toggle", "experiment"],
|
|
743
|
-
"shopping cart": ["cart", "checkout", "order"],
|
|
744
|
-
"roll back": ["rollback", "deploy", "release"],
|
|
745
|
-
"rolled back": ["rollback", "deploy", "release"],
|
|
746
|
-
"ab test": ["experiment", "variant"],
|
|
747
|
-
"sign out": ["logout", "session", "auth"],
|
|
748
|
-
"fixed width": ["record", "export", "mainframe", "batch"]
|
|
749
|
-
};
|
|
750
|
-
function lexiconKey(token) {
|
|
751
|
-
if (token in CONCEPTS) return token;
|
|
752
|
-
if (token.endsWith("ies")) {
|
|
753
|
-
const singular = token.slice(0, -3) + "y";
|
|
754
|
-
if (singular in CONCEPTS) return singular;
|
|
755
|
-
}
|
|
756
|
-
if (token.endsWith("s")) {
|
|
757
|
-
const singular = token.slice(0, -1);
|
|
758
|
-
if (singular in CONCEPTS) return singular;
|
|
759
|
-
}
|
|
760
|
-
return null;
|
|
761
|
-
}
|
|
762
|
-
function expandConcepts(orderedTokens) {
|
|
763
|
-
const present = new Set(orderedTokens);
|
|
764
|
-
const out = [];
|
|
765
|
-
const emitted = /* @__PURE__ */ new Set();
|
|
766
|
-
const emit = (term, from) => {
|
|
767
|
-
if (present.has(term) || emitted.has(term)) return;
|
|
768
|
-
emitted.add(term);
|
|
769
|
-
out.push({ term, from });
|
|
770
|
-
};
|
|
771
|
-
for (let i = 0; i + 1 < orderedTokens.length; i++) {
|
|
772
|
-
const bigram = `${orderedTokens[i]} ${orderedTokens[i + 1]}`;
|
|
773
|
-
const terms = BIGRAM_CONCEPTS[bigram];
|
|
774
|
-
if (terms) for (const t of terms) emit(t, bigram);
|
|
775
|
-
}
|
|
776
|
-
for (const token of orderedTokens) {
|
|
777
|
-
const key = lexiconKey(token);
|
|
778
|
-
if (key) for (const t of CONCEPTS[key]) emit(t, token);
|
|
779
|
-
}
|
|
780
|
-
return out;
|
|
781
|
-
}
|
|
782
|
-
|
|
783
439
|
// src/engine/query.ts
|
|
784
440
|
var STOPWORDS = /* @__PURE__ */ new Set([
|
|
785
441
|
"the",
|
|
@@ -931,7 +587,7 @@ function queryGraph(graph, question, options = {}) {
|
|
|
931
587
|
const limit = options.limit ?? 12;
|
|
932
588
|
const literals = extractLiteralNeedles(question);
|
|
933
589
|
const forTokens = literals.length > 0 ? stripLiteralNeedles(question) : question;
|
|
934
|
-
const prep = prepareTerms(forTokens);
|
|
590
|
+
const prep = prepareTerms(forTokens, options.relevance, priorResidual(options.priorQuestion));
|
|
935
591
|
const weightOf = termWeights(graph, prep.terms.map((t) => t.term));
|
|
936
592
|
const index = indexFor(graph);
|
|
937
593
|
const scored = [];
|
|
@@ -939,7 +595,14 @@ function queryGraph(graph, question, options = {}) {
|
|
|
939
595
|
for (const node of graph.nodes) {
|
|
940
596
|
if (node.kind === "file" || node.kind === "external") continue;
|
|
941
597
|
const { score, why } = scoreNode(node, prep.terms, weightOf);
|
|
942
|
-
if (score > 0)
|
|
598
|
+
if (score > 0) {
|
|
599
|
+
const affinity = topicAffinity(node.id, options.relevance, options.topicTags);
|
|
600
|
+
scored.push({
|
|
601
|
+
node,
|
|
602
|
+
score: round(score * affinity.boost * (1 + IMPORTANCE_WEIGHT * node.importance)),
|
|
603
|
+
why: why + affinity.label
|
|
604
|
+
});
|
|
605
|
+
}
|
|
943
606
|
}
|
|
944
607
|
scored.sort((a, b) => b.score - a.score || a.node.qualifiedName.localeCompare(b.node.qualifiedName));
|
|
945
608
|
}
|
|
@@ -947,18 +610,22 @@ function queryGraph(graph, question, options = {}) {
|
|
|
947
610
|
const { context, tokensEstimate } = buildContext(graph, index, question, seeds, budget, literals);
|
|
948
611
|
return { question, matches: seeds, context, tokensEstimate };
|
|
949
612
|
}
|
|
613
|
+
var RRF_K = 60;
|
|
614
|
+
function ranksOf(scores, nameOf) {
|
|
615
|
+
const ids = [...scores.entries()].filter(([, s]) => s > 0).sort((a, b) => b[1] - a[1] || nameOf(a[0]).localeCompare(nameOf(b[0]))).map(([id]) => id);
|
|
616
|
+
return new Map(ids.map((id, i) => [id, i + 1]));
|
|
617
|
+
}
|
|
950
618
|
async function queryGraphSemantic(graph, question, options) {
|
|
951
619
|
const budget = options.budget ?? 2e3;
|
|
952
620
|
const limit = options.limit ?? 12;
|
|
953
621
|
const literals = extractLiteralNeedles(question);
|
|
954
622
|
const forTokens = literals.length > 0 ? stripLiteralNeedles(question) : question;
|
|
955
|
-
const prep = prepareTerms(forTokens);
|
|
623
|
+
const prep = prepareTerms(forTokens, options.relevance, priorResidual(options.priorQuestion));
|
|
956
624
|
const terms = prep.terms.map((t) => t.term);
|
|
957
625
|
const weightOf = termWeights(graph, terms);
|
|
958
626
|
const index = indexFor(graph);
|
|
959
627
|
const queryVec = await options.embedder.embedQuery(forTokens || question);
|
|
960
628
|
const lexRaw = /* @__PURE__ */ new Map();
|
|
961
|
-
let lexMax = 0;
|
|
962
629
|
const whyById = /* @__PURE__ */ new Map();
|
|
963
630
|
if (prep.hasContent) {
|
|
964
631
|
for (const node of graph.nodes) {
|
|
@@ -966,21 +633,32 @@ async function queryGraphSemantic(graph, question, options) {
|
|
|
966
633
|
const { score, why } = scoreNode(node, prep.terms, weightOf);
|
|
967
634
|
lexRaw.set(node.id, score);
|
|
968
635
|
whyById.set(node.id, why);
|
|
969
|
-
if (score > lexMax) lexMax = score;
|
|
970
636
|
}
|
|
971
637
|
}
|
|
972
638
|
const scored = [];
|
|
973
639
|
if (terms.length > 0 || literals.length === 0) {
|
|
640
|
+
const semRaw = /* @__PURE__ */ new Map();
|
|
641
|
+
const nodeById = /* @__PURE__ */ new Map();
|
|
974
642
|
for (const node of graph.nodes) {
|
|
975
643
|
if (node.kind === "file" || node.kind === "external") continue;
|
|
976
|
-
|
|
644
|
+
nodeById.set(node.id, node);
|
|
977
645
|
const vec = options.nodeVectors.get(node.id);
|
|
978
646
|
const sem = vec && terms.length > 0 ? Math.max(0, cosine(queryVec, vec)) : 0;
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
647
|
+
if (sem > 0) semRaw.set(node.id, sem);
|
|
648
|
+
}
|
|
649
|
+
const nameOf = (id) => nodeById.get(id)?.qualifiedName ?? id;
|
|
650
|
+
const lexRanks = ranksOf(lexRaw, nameOf);
|
|
651
|
+
const semRanks = ranksOf(semRaw, nameOf);
|
|
652
|
+
for (const [id, node] of nodeById) {
|
|
653
|
+
const lr = lexRanks.get(id);
|
|
654
|
+
const sr = semRanks.get(id);
|
|
655
|
+
if (lr === void 0 && sr === void 0) continue;
|
|
656
|
+
const fused = (lr !== void 0 ? 1 / (RRF_K + lr) : 0) + (sr !== void 0 ? 1 / (RRF_K + sr) : 0);
|
|
657
|
+
const sem = semRaw.get(id) ?? 0;
|
|
658
|
+
const lexWhy = whyById.get(id);
|
|
659
|
+
const affinity = topicAffinity(id, options.relevance, options.topicTags);
|
|
660
|
+
const why = (lexWhy || (sem > 0.3 ? `semantic match (${sem.toFixed(2)})` : "weak match")) + affinity.label;
|
|
661
|
+
scored.push({ node, score: round(fused * affinity.boost * (1 + IMPORTANCE_WEIGHT * node.importance)), why });
|
|
984
662
|
}
|
|
985
663
|
scored.sort((a, b) => b.score - a.score || a.node.qualifiedName.localeCompare(b.node.qualifiedName));
|
|
986
664
|
}
|
|
@@ -1001,18 +679,90 @@ function tokenizeOrdered(q) {
|
|
|
1001
679
|
var WEAK_TERM_WEIGHT = 0.25;
|
|
1002
680
|
var EXPANSION_WEIGHT = 0.7;
|
|
1003
681
|
var COVERAGE_BONUS = 0.35;
|
|
1004
|
-
|
|
682
|
+
var CARRY_WEIGHT = 0.5;
|
|
683
|
+
function prepareTerms(forTokens, relevance, prior) {
|
|
1005
684
|
const base = tokenize(forTokens);
|
|
1006
685
|
const ordered = tokenizeOrdered(forTokens);
|
|
1007
686
|
const baseSet = new Set(base);
|
|
1008
|
-
const
|
|
687
|
+
const consumed = bigramConsumedTokens(ordered);
|
|
688
|
+
const terms = base.map((t) => ({ term: t, weak: WEAK_TERMS.has(t) || consumed.has(t) }));
|
|
689
|
+
const have = new Set(base);
|
|
1009
690
|
for (const e of expandConcepts(ordered)) {
|
|
1010
691
|
if (baseSet.has(e.term)) continue;
|
|
1011
692
|
terms.push({ term: e.term, weak: false, from: e.from });
|
|
693
|
+
have.add(e.term);
|
|
694
|
+
}
|
|
695
|
+
for (const e of relevance?.expansions ?? []) {
|
|
696
|
+
if (have.has(e.term)) continue;
|
|
697
|
+
terms.push({ term: e.term, weak: false, from: e.from, providerWeight: e.weight });
|
|
698
|
+
have.add(e.term);
|
|
699
|
+
}
|
|
700
|
+
if (prior?.trim()) {
|
|
701
|
+
const priorOrdered = tokenizeOrdered(prior);
|
|
702
|
+
const priorConsumed = bigramConsumedTokens(priorOrdered);
|
|
703
|
+
for (const t of tokenize(prior)) {
|
|
704
|
+
if (have.has(t) || WEAK_TERMS.has(t) || priorConsumed.has(t)) continue;
|
|
705
|
+
terms.push({ term: t, weak: false, carried: true });
|
|
706
|
+
have.add(t);
|
|
707
|
+
}
|
|
708
|
+
for (const e of expandConcepts(priorOrdered)) {
|
|
709
|
+
if (have.has(e.term)) continue;
|
|
710
|
+
terms.push({ term: e.term, weak: false, from: e.from, carried: true });
|
|
711
|
+
have.add(e.term);
|
|
712
|
+
}
|
|
1012
713
|
}
|
|
1013
714
|
const hasContent = terms.some((t) => !t.weak);
|
|
1014
715
|
return { terms, hasContent };
|
|
1015
716
|
}
|
|
717
|
+
function priorResidual(prior) {
|
|
718
|
+
const raw = prior?.trim();
|
|
719
|
+
if (!raw) return null;
|
|
720
|
+
return extractLiteralNeedles(raw).length > 0 ? stripLiteralNeedles(raw) : raw;
|
|
721
|
+
}
|
|
722
|
+
function conceptMapLines(question, relevance, priorQuestion) {
|
|
723
|
+
const cap = (xs) => [...new Set(xs)].slice(0, 8).join(", ");
|
|
724
|
+
const literals = extractLiteralNeedles(question);
|
|
725
|
+
const residual = literals.length > 0 ? stripLiteralNeedles(question) : question;
|
|
726
|
+
const lines = [];
|
|
727
|
+
const byFrom = /* @__PURE__ */ new Map();
|
|
728
|
+
for (const e of expandConcepts(tokenizeOrdered(residual))) {
|
|
729
|
+
const list = byFrom.get(e.from) ?? [];
|
|
730
|
+
list.push(e.term);
|
|
731
|
+
byFrom.set(e.from, list);
|
|
732
|
+
}
|
|
733
|
+
for (const [from, terms] of byFrom) {
|
|
734
|
+
lines.push(`- "${from}" in the ask implies these codebase identifiers: ${cap(terms)}.`);
|
|
735
|
+
}
|
|
736
|
+
if (relevance?.topics?.length) {
|
|
737
|
+
const topicVocab = /* @__PURE__ */ new Map();
|
|
738
|
+
for (const e of relevance.expansions ?? []) {
|
|
739
|
+
const list = topicVocab.get(e.from) ?? [];
|
|
740
|
+
list.push(e.term);
|
|
741
|
+
topicVocab.set(e.from, list);
|
|
742
|
+
}
|
|
743
|
+
for (const t of relevance.topics.slice(0, 3)) {
|
|
744
|
+
const vocab = topicVocab.get(t.id);
|
|
745
|
+
lines.push(
|
|
746
|
+
vocab?.length ? `- The ask is about the "${t.id}" domain; code for it typically uses: ${cap(vocab)}.` : `- The ask is about the "${t.id}" domain.`
|
|
747
|
+
);
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
const priorText = priorResidual(priorQuestion);
|
|
751
|
+
if (priorText) {
|
|
752
|
+
const current = new Set(tokenize(residual));
|
|
753
|
+
const consumed = bigramConsumedTokens(tokenizeOrdered(priorText));
|
|
754
|
+
const carried = tokenize(priorText).filter((t) => !current.has(t) && !WEAK_TERMS.has(t) && !consumed.has(t));
|
|
755
|
+
if (carried.length) {
|
|
756
|
+
lines.push(`- This is a follow-up; topic words carried from the previous ask: ${cap(carried)}.`);
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
if (lines.length) {
|
|
760
|
+
lines.push(
|
|
761
|
+
'- Seed notation below: `a\u2192b` = ask term "a" implied identifier "b"; `~t` = word-form match; `\u21A9t` = carried from the previous ask.'
|
|
762
|
+
);
|
|
763
|
+
}
|
|
764
|
+
return lines;
|
|
765
|
+
}
|
|
1016
766
|
function scoreNode(node, terms, weightOf = () => 1) {
|
|
1017
767
|
let score = 0;
|
|
1018
768
|
let contentHits = 0;
|
|
@@ -1022,9 +772,10 @@ function scoreNode(node, terms, weightOf = () => 1) {
|
|
|
1022
772
|
const file = node.file.toLowerCase();
|
|
1023
773
|
const dirSegments = new Set(file.split("/").slice(0, -1));
|
|
1024
774
|
const nameParts = identifierParts(node.name);
|
|
1025
|
-
for (const { term: t, weak, from } of terms) {
|
|
1026
|
-
const
|
|
1027
|
-
const
|
|
775
|
+
for (const { term: t, weak, from, providerWeight, carried } of terms) {
|
|
776
|
+
const expansionW = providerWeight !== void 0 ? Math.min(providerWeight, EXPANSION_WEIGHT) : from ? EXPANSION_WEIGHT : 1;
|
|
777
|
+
const w = weightOf(t) * (weak ? WEAK_TERM_WEIGHT : 1) * expansionW * (carried ? CARRY_WEIGHT : 1);
|
|
778
|
+
const label = (carried ? "\u21A9" : "") + (from ? `${from}\u2192${t}` : t);
|
|
1028
779
|
let contribution = 0;
|
|
1029
780
|
if (name === t) {
|
|
1030
781
|
contribution = 10 * w;
|
|
@@ -1040,7 +791,7 @@ function scoreNode(node, terms, weightOf = () => 1) {
|
|
|
1040
791
|
hits.push(label);
|
|
1041
792
|
} else if (fuzzyPartMatch(t, nameParts)) {
|
|
1042
793
|
contribution = 2 * w;
|
|
1043
|
-
hits.push(from ? `~${from}\u2192${t}` : `~${t}`);
|
|
794
|
+
hits.push((carried ? "\u21A9" : "") + (from ? `~${from}\u2192${t}` : `~${t}`));
|
|
1044
795
|
} else if (dirSegments.has(t)) {
|
|
1045
796
|
contribution = 2 * w;
|
|
1046
797
|
hits.push(label);
|
|
@@ -1058,6 +809,22 @@ function scoreNode(node, terms, weightOf = () => 1) {
|
|
|
1058
809
|
return { score, why: hits.length ? `matched: ${hits.join(", ")}` : "" };
|
|
1059
810
|
}
|
|
1060
811
|
var IMPORTANCE_WEIGHT = 0.4;
|
|
812
|
+
var TOPIC_AFFINITY_WEIGHT = 0.3;
|
|
813
|
+
function topicAffinity(nodeId, relevance, topicTags) {
|
|
814
|
+
if (!relevance?.topics?.length || !topicTags) return { boost: 1, label: "" };
|
|
815
|
+
const tags = topicTags.get(nodeId);
|
|
816
|
+
if (!tags?.length) return { boost: 1, label: "" };
|
|
817
|
+
let affinity = 0;
|
|
818
|
+
const matched = [];
|
|
819
|
+
for (const t of relevance.topics) {
|
|
820
|
+
if (tags.includes(t.id)) {
|
|
821
|
+
affinity += t.score;
|
|
822
|
+
matched.push(t.id);
|
|
823
|
+
}
|
|
824
|
+
}
|
|
825
|
+
if (affinity <= 0) return { boost: 1, label: "" };
|
|
826
|
+
return { boost: 1 + TOPIC_AFFINITY_WEIGHT * Math.min(affinity, 1), label: `, topic:${matched.sort().join("+")}` };
|
|
827
|
+
}
|
|
1061
828
|
function termWeights(graph, terms) {
|
|
1062
829
|
if (terms.length === 0) return () => 1;
|
|
1063
830
|
const df = /* @__PURE__ */ new Map();
|
|
@@ -1193,6 +960,6 @@ function round2(x) {
|
|
|
1193
960
|
return Math.round(x * 1e6) / 1e6;
|
|
1194
961
|
}
|
|
1195
962
|
|
|
1196
|
-
export { GraphIndex, acquireLock, clearModelCache, cosine, countPending, embeddingsCached, extractLiteralNeedles, getNodeEmbeddings, identifierParts, impactOf, indexFor, isLocateOnlyInstruction, isModelReady, loadEmbedder, modelCacheInfo, nodeEmbedText, queryGraph, queryGraphSemantic, releaseLock, residualForSymbolSearch, resolveEmbedModel, unavailableMessage, withTimeout };
|
|
1197
|
-
//# sourceMappingURL=chunk-
|
|
1198
|
-
//# sourceMappingURL=chunk-
|
|
963
|
+
export { GraphIndex, acquireLock, clearModelCache, conceptMapLines, cosine, countPending, embeddingsCached, extractLiteralNeedles, getNodeEmbeddings, identifierParts, impactOf, indexFor, isLocateOnlyInstruction, isModelReady, loadEmbedder, modelCacheInfo, nodeEmbedText, queryGraph, queryGraphSemantic, releaseLock, residualForSymbolSearch, resolveEmbedModel, unavailableMessage, withTimeout };
|
|
964
|
+
//# sourceMappingURL=chunk-HC44772H.js.map
|
|
965
|
+
//# sourceMappingURL=chunk-HC44772H.js.map
|