@vibgrate/cli 2026.731.3 → 2026.801.1
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-6XOI7RVW.js → agent-4DAECASW.js} +8 -8
- package/dist/{agent-6XOI7RVW.js.map → agent-4DAECASW.js.map} +1 -1
- package/dist/{baseline-PY6TETA5.js → baseline-4BDH4F2W.js} +3 -3
- package/dist/{baseline-PY6TETA5.js.map → baseline-4BDH4F2W.js.map} +1 -1
- package/dist/{chunk-X634FZVG.js → chunk-3LOWJSAF.js} +11 -16
- package/dist/{chunk-X634FZVG.js.map → chunk-3LOWJSAF.js.map} +1 -1
- package/dist/{chunk-AVCBKQKA.js → chunk-76TDXGGF.js} +3 -3
- package/dist/{chunk-AVCBKQKA.js.map → chunk-76TDXGGF.js.map} +1 -1
- package/dist/{chunk-RIWLXMMT.js → chunk-7PVCHLR2.js} +4 -4
- package/dist/{chunk-RIWLXMMT.js.map → chunk-7PVCHLR2.js.map} +1 -1
- package/dist/{chunk-RGEVBSLK.js → chunk-A43I2AJ4.js} +3 -3
- package/dist/{chunk-RGEVBSLK.js.map → chunk-A43I2AJ4.js.map} +1 -1
- package/dist/{chunk-Z7VH4RPO.js → chunk-B3OMGYZZ.js} +3 -3
- package/dist/{chunk-Z7VH4RPO.js.map → chunk-B3OMGYZZ.js.map} +1 -1
- package/dist/{chunk-B6S2DSBS.js → chunk-BNEHDLVZ.js} +8 -8
- package/dist/{chunk-B6S2DSBS.js.map → chunk-BNEHDLVZ.js.map} +1 -1
- package/dist/{chunk-PHGAUWWF.js → chunk-E6H2F2XF.js} +3 -3
- package/dist/{chunk-PHGAUWWF.js.map → chunk-E6H2F2XF.js.map} +1 -1
- package/dist/{chunk-TRKRRX2S.js → chunk-G25STLE7.js} +7 -5
- package/dist/chunk-G25STLE7.js.map +1 -0
- package/dist/{chunk-SCTLOFNH.js → chunk-G7W4MFPZ.js} +4 -4
- package/dist/{chunk-SCTLOFNH.js.map → chunk-G7W4MFPZ.js.map} +1 -1
- package/dist/{chunk-FHJBGPJZ.js → chunk-I6RBAIS3.js} +3 -3
- package/dist/{chunk-FHJBGPJZ.js.map → chunk-I6RBAIS3.js.map} +1 -1
- package/dist/{chunk-3VSU7G75.js → chunk-IRCYOTRG.js} +7 -7
- package/dist/{chunk-3VSU7G75.js.map → chunk-IRCYOTRG.js.map} +1 -1
- package/dist/{chunk-EVLS2M5G.js → chunk-JFE7XCAE.js} +3 -3
- package/dist/{chunk-EVLS2M5G.js.map → chunk-JFE7XCAE.js.map} +1 -1
- package/dist/{chunk-BMUTNUB7.js → chunk-JLWI2JGA.js} +4 -4
- package/dist/{chunk-BMUTNUB7.js.map → chunk-JLWI2JGA.js.map} +1 -1
- package/dist/{chunk-5IA2TA57.js → chunk-KL65SSR7.js} +7 -7
- package/dist/{chunk-5IA2TA57.js.map → chunk-KL65SSR7.js.map} +1 -1
- package/dist/{chunk-US2DAKCM.js → chunk-MPP4S4OE.js} +4 -4
- package/dist/{chunk-US2DAKCM.js.map → chunk-MPP4S4OE.js.map} +1 -1
- package/dist/{chunk-EETK7S43.js → chunk-SDG242R4.js} +399 -23
- package/dist/chunk-SDG242R4.js.map +1 -0
- package/dist/{chunk-MOLBANFB.js → chunk-T6DRYOMT.js} +3 -3
- package/dist/{chunk-MOLBANFB.js.map → chunk-T6DRYOMT.js.map} +1 -1
- package/dist/chunk-TGDHOAXX.js +6 -0
- package/dist/{chunk-DEKGSQHL.js.map → chunk-TGDHOAXX.js.map} +1 -1
- package/dist/{chunk-WK52LWRX.js → chunk-V2QK3IUY.js} +5 -5
- package/dist/{chunk-WK52LWRX.js.map → chunk-V2QK3IUY.js.map} +1 -1
- package/dist/{chunk-5XIEVZLW.js → chunk-V3X3DBZL.js} +5 -5
- package/dist/{chunk-5XIEVZLW.js.map → chunk-V3X3DBZL.js.map} +1 -1
- package/dist/{chunk-KLO2XBUX.js → chunk-WIDZ5IE7.js} +4 -4
- package/dist/{chunk-KLO2XBUX.js.map → chunk-WIDZ5IE7.js.map} +1 -1
- package/dist/{chunk-LTTVCI5C.js → chunk-XEJJGDGX.js} +7 -7
- package/dist/{chunk-LTTVCI5C.js.map → chunk-XEJJGDGX.js.map} +1 -1
- package/dist/cli.js +41 -41
- package/dist/{ensure-map-UQL7SM34.js → ensure-map-SMWHKOUY.js} +11 -11
- package/dist/{ensure-map-UQL7SM34.js.map → ensure-map-SMWHKOUY.js.map} +1 -1
- package/dist/{graph-backend-G5Y6QQV4.js → graph-backend-I4I72J4W.js} +4 -4
- package/dist/{graph-backend-G5Y6QQV4.js.map → graph-backend-I4I72J4W.js.map} +1 -1
- package/dist/index.d.ts +11 -4
- package/dist/index.js +10 -10
- package/dist/{interactive-QWT7ERXJ.js → interactive-TMQR6TXM.js} +22 -22
- package/dist/{interactive-QWT7ERXJ.js.map → interactive-TMQR6TXM.js.map} +1 -1
- package/dist/{llm-host-DZBD5D36.js → llm-host-XFYFOAAX.js} +4 -4
- package/dist/{llm-host-DZBD5D36.js.map → llm-host-XFYFOAAX.js.map} +1 -1
- package/dist/load-E3OTM7BS.js +10 -0
- package/dist/{load-WA53B3GW.js.map → load-E3OTM7BS.js.map} +1 -1
- package/dist/{run-outcome-J2IDIVYI.js → run-outcome-QWLNBASF.js} +5 -5
- package/dist/{run-outcome-J2IDIVYI.js.map → run-outcome-QWLNBASF.js.map} +1 -1
- package/dist/runtime-session-UQ7UVAPL.js +20 -0
- package/dist/{runtime-session-52P2Y5LX.js.map → runtime-session-UQ7UVAPL.js.map} +1 -1
- package/dist/{session-L7SJNE55.js → session-MG6BJVAG.js} +6 -6
- package/dist/{session-L7SJNE55.js.map → session-MG6BJVAG.js.map} +1 -1
- package/dist/{stream-json-TSGYC2MQ.js → stream-json-GM44SP7L.js} +8 -8
- package/dist/{stream-json-TSGYC2MQ.js.map → stream-json-GM44SP7L.js.map} +1 -1
- package/dist/{vg-mcp-bridge-IFAXEQMZ.js → vg-mcp-bridge-3WFC7LGE.js} +6 -6
- package/dist/{vg-mcp-bridge-IFAXEQMZ.js.map → vg-mcp-bridge-3WFC7LGE.js.map} +1 -1
- package/dist/{vgd-PNR7UKLL.js → vgd-ZUSBEVUL.js} +8 -8
- package/dist/vgd-ZUSBEVUL.js.map +1 -0
- package/package.json +4 -2
- package/dist/chunk-DEKGSQHL.js +0 -6
- package/dist/chunk-EETK7S43.js.map +0 -1
- package/dist/chunk-TRKRRX2S.js.map +0 -1
- package/dist/load-WA53B3GW.js +0 -10
- package/dist/runtime-session-52P2Y5LX.js +0 -20
- package/dist/vgd-PNR7UKLL.js.map +0 -1
|
@@ -436,6 +436,350 @@ 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
|
+
|
|
439
783
|
// src/engine/query.ts
|
|
440
784
|
var STOPWORDS = /* @__PURE__ */ new Set([
|
|
441
785
|
"the",
|
|
@@ -587,14 +931,14 @@ function queryGraph(graph, question, options = {}) {
|
|
|
587
931
|
const limit = options.limit ?? 12;
|
|
588
932
|
const literals = extractLiteralNeedles(question);
|
|
589
933
|
const forTokens = literals.length > 0 ? stripLiteralNeedles(question) : question;
|
|
590
|
-
const
|
|
591
|
-
const weightOf = termWeights(graph, terms);
|
|
934
|
+
const prep = prepareTerms(forTokens);
|
|
935
|
+
const weightOf = termWeights(graph, prep.terms.map((t) => t.term));
|
|
592
936
|
const index = indexFor(graph);
|
|
593
937
|
const scored = [];
|
|
594
|
-
if (
|
|
938
|
+
if (prep.hasContent) {
|
|
595
939
|
for (const node of graph.nodes) {
|
|
596
940
|
if (node.kind === "file" || node.kind === "external") continue;
|
|
597
|
-
const { score, why } = scoreNode(node, terms, weightOf);
|
|
941
|
+
const { score, why } = scoreNode(node, prep.terms, weightOf);
|
|
598
942
|
if (score > 0) scored.push({ node, score: round(score * (1 + IMPORTANCE_WEIGHT * node.importance)), why });
|
|
599
943
|
}
|
|
600
944
|
scored.sort((a, b) => b.score - a.score || a.node.qualifiedName.localeCompare(b.node.qualifiedName));
|
|
@@ -608,17 +952,18 @@ async function queryGraphSemantic(graph, question, options) {
|
|
|
608
952
|
const limit = options.limit ?? 12;
|
|
609
953
|
const literals = extractLiteralNeedles(question);
|
|
610
954
|
const forTokens = literals.length > 0 ? stripLiteralNeedles(question) : question;
|
|
611
|
-
const
|
|
955
|
+
const prep = prepareTerms(forTokens);
|
|
956
|
+
const terms = prep.terms.map((t) => t.term);
|
|
612
957
|
const weightOf = termWeights(graph, terms);
|
|
613
958
|
const index = indexFor(graph);
|
|
614
959
|
const queryVec = await options.embedder.embedQuery(forTokens || question);
|
|
615
960
|
const lexRaw = /* @__PURE__ */ new Map();
|
|
616
961
|
let lexMax = 0;
|
|
617
962
|
const whyById = /* @__PURE__ */ new Map();
|
|
618
|
-
if (
|
|
963
|
+
if (prep.hasContent) {
|
|
619
964
|
for (const node of graph.nodes) {
|
|
620
965
|
if (node.kind === "file" || node.kind === "external") continue;
|
|
621
|
-
const { score, why } = scoreNode(node, terms, weightOf);
|
|
966
|
+
const { score, why } = scoreNode(node, prep.terms, weightOf);
|
|
622
967
|
lexRaw.set(node.id, score);
|
|
623
968
|
whyById.set(node.id, why);
|
|
624
969
|
if (score > lexMax) lexMax = score;
|
|
@@ -650,35 +995,66 @@ function tokenize(q) {
|
|
|
650
995
|
)
|
|
651
996
|
];
|
|
652
997
|
}
|
|
998
|
+
function tokenizeOrdered(q) {
|
|
999
|
+
return q.toLowerCase().split(/[^\p{L}\p{N}]+/u).filter((t) => t.length >= 1);
|
|
1000
|
+
}
|
|
1001
|
+
var WEAK_TERM_WEIGHT = 0.25;
|
|
1002
|
+
var EXPANSION_WEIGHT = 0.7;
|
|
1003
|
+
var COVERAGE_BONUS = 0.35;
|
|
1004
|
+
function prepareTerms(forTokens) {
|
|
1005
|
+
const base = tokenize(forTokens);
|
|
1006
|
+
const ordered = tokenizeOrdered(forTokens);
|
|
1007
|
+
const baseSet = new Set(base);
|
|
1008
|
+
const terms = base.map((t) => ({ term: t, weak: WEAK_TERMS.has(t) }));
|
|
1009
|
+
for (const e of expandConcepts(ordered)) {
|
|
1010
|
+
if (baseSet.has(e.term)) continue;
|
|
1011
|
+
terms.push({ term: e.term, weak: false, from: e.from });
|
|
1012
|
+
}
|
|
1013
|
+
const hasContent = terms.some((t) => !t.weak);
|
|
1014
|
+
return { terms, hasContent };
|
|
1015
|
+
}
|
|
653
1016
|
function scoreNode(node, terms, weightOf = () => 1) {
|
|
654
1017
|
let score = 0;
|
|
1018
|
+
let contentHits = 0;
|
|
655
1019
|
const hits = [];
|
|
656
1020
|
const name = node.name.toLowerCase();
|
|
657
1021
|
const qn = node.qualifiedName.toLowerCase();
|
|
658
1022
|
const file = node.file.toLowerCase();
|
|
1023
|
+
const dirSegments = new Set(file.split("/").slice(0, -1));
|
|
659
1024
|
const nameParts = identifierParts(node.name);
|
|
660
|
-
for (const t of terms) {
|
|
661
|
-
const w = weightOf(t);
|
|
1025
|
+
for (const { term: t, weak, from } of terms) {
|
|
1026
|
+
const w = weightOf(t) * (weak ? WEAK_TERM_WEIGHT : 1) * (from ? EXPANSION_WEIGHT : 1);
|
|
1027
|
+
const label = from ? `${from}\u2192${t}` : t;
|
|
1028
|
+
let contribution = 0;
|
|
662
1029
|
if (name === t) {
|
|
663
|
-
|
|
664
|
-
hits.push(
|
|
1030
|
+
contribution = 10 * w;
|
|
1031
|
+
hits.push(label);
|
|
665
1032
|
} else if (nameParts.has(t)) {
|
|
666
|
-
|
|
667
|
-
hits.push(
|
|
1033
|
+
contribution = 6 * w;
|
|
1034
|
+
hits.push(label);
|
|
668
1035
|
} else if (name.includes(t)) {
|
|
669
|
-
|
|
670
|
-
hits.push(
|
|
1036
|
+
contribution = 4 * w;
|
|
1037
|
+
hits.push(label);
|
|
671
1038
|
} else if (qn.includes(t)) {
|
|
672
|
-
|
|
673
|
-
hits.push(
|
|
1039
|
+
contribution = 3 * w;
|
|
1040
|
+
hits.push(label);
|
|
674
1041
|
} else if (fuzzyPartMatch(t, nameParts)) {
|
|
675
|
-
|
|
676
|
-
hits.push(`~${t}`);
|
|
1042
|
+
contribution = 2 * w;
|
|
1043
|
+
hits.push(from ? `~${from}\u2192${t}` : `~${t}`);
|
|
1044
|
+
} else if (dirSegments.has(t)) {
|
|
1045
|
+
contribution = 2 * w;
|
|
1046
|
+
hits.push(label);
|
|
677
1047
|
} else if (file.includes(t)) {
|
|
678
|
-
|
|
679
|
-
hits.push(
|
|
1048
|
+
contribution = 1 * w;
|
|
1049
|
+
hits.push(label);
|
|
1050
|
+
}
|
|
1051
|
+
if (contribution > 0) {
|
|
1052
|
+
score += contribution;
|
|
1053
|
+
if (!weak) contentHits += 1;
|
|
680
1054
|
}
|
|
681
1055
|
}
|
|
1056
|
+
if (contentHits === 0) return { score: 0, why: "" };
|
|
1057
|
+
score *= 1 + COVERAGE_BONUS * Math.min(contentHits - 1, 4);
|
|
682
1058
|
return { score, why: hits.length ? `matched: ${hits.join(", ")}` : "" };
|
|
683
1059
|
}
|
|
684
1060
|
var IMPORTANCE_WEIGHT = 0.4;
|
|
@@ -818,5 +1194,5 @@ function round2(x) {
|
|
|
818
1194
|
}
|
|
819
1195
|
|
|
820
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 };
|
|
821
|
-
//# sourceMappingURL=chunk-
|
|
822
|
-
//# sourceMappingURL=chunk-
|
|
1197
|
+
//# sourceMappingURL=chunk-SDG242R4.js.map
|
|
1198
|
+
//# sourceMappingURL=chunk-SDG242R4.js.map
|