@taurgis/bonsai 4.0.0 → 4.1.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/README.md +24 -3
- package/agents/agents/official-docs-researcher.agent.md +102 -0
- package/agents/agents/salesforce-docs-researcher.agent.md +16 -14
- package/agents/hooks/README.md +18 -2
- package/agents/hooks/claude-code/hooks/bonsai-web-fetch.sh +1 -1
- package/agents/hooks/codex/hooks/bonsai-user-prompt-context.sh +1 -1
- package/agents/hooks/codex/hooks/bonsai-web-fetch.sh +1 -1
- package/agents/hooks/cursor/hooks/bonsai-web-fetch.sh +1 -1
- package/agents/hooks/github-copilot/bonsai-web-fetch.sh +1 -1
- package/agents/instructions/salesforce-research.instructions.md +5 -4
- package/agents/instructions/web-research.instructions.md +45 -0
- package/agents/skills/web-research/SKILL.md +139 -0
- package/bin/cli.mjs +0 -11
- package/dist/base-command.d.ts +5 -0
- package/dist/base-command.js +9 -0
- package/dist/commands/config/get.d.ts +1 -1
- package/dist/commands/config/get.js +1 -1
- package/dist/commands/config/list.d.ts +1 -1
- package/dist/commands/config/list.js +1 -1
- package/dist/commands/config/set.d.ts +1 -1
- package/dist/commands/config/set.js +1 -1
- package/dist/commands/config/unset.d.ts +1 -1
- package/dist/commands/config/unset.js +1 -1
- package/dist/commands/context.d.ts +20 -0
- package/dist/commands/context.js +65 -0
- package/dist/commands/list.d.ts +12 -3
- package/dist/commands/list.js +61 -100
- package/dist/commands/search.d.ts +43 -0
- package/dist/commands/search.js +233 -0
- package/dist/commands/setup.d.ts +27 -0
- package/dist/commands/setup.js +148 -0
- package/dist/commands.d.ts +6 -0
- package/dist/commands.js +6 -0
- package/dist/lib/argv.js +4 -1
- package/dist/lib/cli-flag-manifest.d.ts +2 -2
- package/dist/lib/cli-flag-manifest.js +15 -7
- package/dist/lib/cli-presentation.d.ts +19 -0
- package/dist/lib/cli-presentation.js +27 -0
- package/dist/lib/cli-result-types.d.ts +59 -0
- package/dist/lib/color.d.ts +2 -0
- package/dist/lib/color.js +6 -0
- package/dist/lib/common-metadata-filter-flags.d.ts +14 -0
- package/dist/lib/common-metadata-filter-flags.js +37 -0
- package/dist/{commands/config/base.d.ts → lib/config-command.d.ts} +7 -9
- package/dist/{commands/config/base.js → lib/config-command.js} +9 -20
- package/dist/lib/next-command.d.ts +15 -0
- package/dist/lib/next-command.js +40 -0
- package/dist/lib/research/context-dashboard.d.ts +19 -0
- package/dist/lib/research/context-dashboard.js +43 -0
- package/dist/lib/research/fetch-command-service.js +10 -0
- package/dist/lib/research/fetch-result.d.ts +1 -0
- package/dist/lib/research/fetch-result.js +4 -0
- package/dist/lib/research/fetcher.d.ts +11 -0
- package/dist/lib/research/fetcher.js +26 -0
- package/dist/lib/research/list-row.d.ts +15 -0
- package/dist/lib/research/list-row.js +31 -0
- package/dist/lib/research/metadata-filters.d.ts +22 -1
- package/dist/lib/research/metadata-filters.js +34 -0
- package/dist/lib/research/regression.js +6 -1
- package/dist/lib/research/schema.d.ts +2 -0
- package/dist/lib/research/schema.js +4 -0
- package/dist/lib/research/search-match.d.ts +39 -0
- package/dist/lib/research/search-match.js +134 -0
- package/dist/lib/scope-flags.d.ts +19 -0
- package/dist/lib/scope-flags.js +27 -0
- package/dist/lib/setup/agents.d.ts +16 -0
- package/dist/lib/setup/agents.js +20 -0
- package/dist/lib/setup/bin-command.d.ts +14 -0
- package/dist/lib/setup/bin-command.js +42 -0
- package/dist/lib/setup/hook-file-io.d.ts +37 -0
- package/dist/lib/setup/hook-file-io.js +80 -0
- package/dist/lib/text.d.ts +6 -0
- package/dist/lib/text.js +11 -0
- package/dist/lib/value-flags.d.ts +2 -0
- package/dist/lib/value-flags.js +11 -3
- package/dist/sites/salesforce-developer/fetch-page.d.ts +1 -1
- package/dist/sites/salesforce-developer/fetch-page.js +3 -1
- package/dist/sites/salesforce-developer/route-markdown.d.ts +3 -2
- package/dist/sites/salesforce-developer/route-markdown.js +8 -6
- package/dist/sites/salesforce-doc-fetch.d.ts +23 -11
- package/dist/sites/salesforce-doc-fetch.js +89 -27
- package/dist/sites/salesforce-dom-probe.d.ts +6 -0
- package/dist/sites/salesforce-dom-probe.js +40 -0
- package/oclif.manifest.json +428 -54
- package/package.json +8 -13
package/oclif.manifest.json
CHANGED
|
@@ -1,5 +1,60 @@
|
|
|
1
1
|
{
|
|
2
2
|
"commands": {
|
|
3
|
+
"context": {
|
|
4
|
+
"aliases": [],
|
|
5
|
+
"args": {},
|
|
6
|
+
"description": "Print a short summary of the current research cache: total entries, a freshness breakdown, and the most recently touched pages. This is what `bonsai setup` wires into a SessionStart hook, so a session starts with the cache's state already visible.",
|
|
7
|
+
"examples": [
|
|
8
|
+
{
|
|
9
|
+
"description": "preview what a SessionStart hook would show",
|
|
10
|
+
"command": "<%= config.bin %> context"
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"description": "get the dashboard as JSON",
|
|
14
|
+
"command": "<%= config.bin %> context --json"
|
|
15
|
+
}
|
|
16
|
+
],
|
|
17
|
+
"flags": {
|
|
18
|
+
"json": {
|
|
19
|
+
"description": "Format output as json.",
|
|
20
|
+
"helpGroup": "GLOBAL",
|
|
21
|
+
"name": "json",
|
|
22
|
+
"allowNo": false,
|
|
23
|
+
"type": "boolean"
|
|
24
|
+
},
|
|
25
|
+
"read-only": {
|
|
26
|
+
"aliases": [
|
|
27
|
+
"plan"
|
|
28
|
+
],
|
|
29
|
+
"description": "(alias: --plan) block filesystem writes/deletes; network fetches still run; also honored via BONSAI_READ_ONLY/BONSAI_PLAN_MODE",
|
|
30
|
+
"name": "read-only",
|
|
31
|
+
"allowNo": false,
|
|
32
|
+
"type": "boolean"
|
|
33
|
+
},
|
|
34
|
+
"toon": {
|
|
35
|
+
"description": "emit the same envelope as --json, encoded as TOON (fewer tokens); cannot be combined with --json",
|
|
36
|
+
"name": "toon",
|
|
37
|
+
"allowNo": false,
|
|
38
|
+
"type": "boolean"
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
"hasDynamicHelp": false,
|
|
42
|
+
"hiddenAliases": [],
|
|
43
|
+
"id": "context",
|
|
44
|
+
"pluginAlias": "@taurgis/bonsai",
|
|
45
|
+
"pluginName": "@taurgis/bonsai",
|
|
46
|
+
"pluginType": "core",
|
|
47
|
+
"strict": true,
|
|
48
|
+
"summary": "Show a compact cache dashboard for ambient session context",
|
|
49
|
+
"enableJsonFlag": true,
|
|
50
|
+
"stdoutIsPrimaryData": true,
|
|
51
|
+
"isESM": true,
|
|
52
|
+
"relativePath": [
|
|
53
|
+
"dist",
|
|
54
|
+
"commands",
|
|
55
|
+
"context.js"
|
|
56
|
+
]
|
|
57
|
+
},
|
|
3
58
|
"fetch": {
|
|
4
59
|
"aliases": [],
|
|
5
60
|
"args": {
|
|
@@ -150,7 +205,13 @@
|
|
|
150
205
|
"strict": false,
|
|
151
206
|
"summary": "Fetch and cache URL research Markdown",
|
|
152
207
|
"enableJsonFlag": true,
|
|
153
|
-
"stdoutIsPrimaryData": true
|
|
208
|
+
"stdoutIsPrimaryData": true,
|
|
209
|
+
"isESM": true,
|
|
210
|
+
"relativePath": [
|
|
211
|
+
"dist",
|
|
212
|
+
"commands",
|
|
213
|
+
"fetch.js"
|
|
214
|
+
]
|
|
154
215
|
},
|
|
155
216
|
"import": {
|
|
156
217
|
"aliases": [],
|
|
@@ -300,7 +361,13 @@
|
|
|
300
361
|
"strict": true,
|
|
301
362
|
"summary": "Import agent-supplied Markdown into cache",
|
|
302
363
|
"enableJsonFlag": true,
|
|
303
|
-
"stdoutIsPrimaryData": true
|
|
364
|
+
"stdoutIsPrimaryData": true,
|
|
365
|
+
"isESM": true,
|
|
366
|
+
"relativePath": [
|
|
367
|
+
"dist",
|
|
368
|
+
"commands",
|
|
369
|
+
"import.js"
|
|
370
|
+
]
|
|
304
371
|
},
|
|
305
372
|
"inspect": {
|
|
306
373
|
"aliases": [],
|
|
@@ -359,7 +426,13 @@
|
|
|
359
426
|
"strict": false,
|
|
360
427
|
"summary": "Inspect cached research metadata for a URL",
|
|
361
428
|
"enableJsonFlag": true,
|
|
362
|
-
"stdoutIsPrimaryData": true
|
|
429
|
+
"stdoutIsPrimaryData": true,
|
|
430
|
+
"isESM": true,
|
|
431
|
+
"relativePath": [
|
|
432
|
+
"dist",
|
|
433
|
+
"commands",
|
|
434
|
+
"inspect.js"
|
|
435
|
+
]
|
|
363
436
|
},
|
|
364
437
|
"list": {
|
|
365
438
|
"aliases": [],
|
|
@@ -472,9 +545,9 @@
|
|
|
472
545
|
"type": "option"
|
|
473
546
|
},
|
|
474
547
|
"limit": {
|
|
475
|
-
"description": "result count (max 100)",
|
|
548
|
+
"description": "result count (max 100, default 10)",
|
|
476
549
|
"name": "limit",
|
|
477
|
-
"default":
|
|
550
|
+
"default": 10,
|
|
478
551
|
"hasDynamicHelp": false,
|
|
479
552
|
"multiple": false,
|
|
480
553
|
"type": "option"
|
|
@@ -484,6 +557,12 @@
|
|
|
484
557
|
"name": "full",
|
|
485
558
|
"allowNo": false,
|
|
486
559
|
"type": "boolean"
|
|
560
|
+
},
|
|
561
|
+
"identity": {
|
|
562
|
+
"hidden": true,
|
|
563
|
+
"name": "identity",
|
|
564
|
+
"allowNo": false,
|
|
565
|
+
"type": "boolean"
|
|
487
566
|
}
|
|
488
567
|
},
|
|
489
568
|
"hasDynamicHelp": false,
|
|
@@ -495,7 +574,13 @@
|
|
|
495
574
|
"strict": true,
|
|
496
575
|
"summary": "List cached research artifacts by metadata",
|
|
497
576
|
"enableJsonFlag": true,
|
|
498
|
-
"stdoutIsPrimaryData": true
|
|
577
|
+
"stdoutIsPrimaryData": true,
|
|
578
|
+
"isESM": true,
|
|
579
|
+
"relativePath": [
|
|
580
|
+
"dist",
|
|
581
|
+
"commands",
|
|
582
|
+
"list.js"
|
|
583
|
+
]
|
|
499
584
|
},
|
|
500
585
|
"prune": {
|
|
501
586
|
"aliases": [],
|
|
@@ -615,30 +700,34 @@
|
|
|
615
700
|
"strict": true,
|
|
616
701
|
"summary": "Prune cached research artifacts",
|
|
617
702
|
"enableJsonFlag": true,
|
|
618
|
-
"stdoutIsPrimaryData": true
|
|
703
|
+
"stdoutIsPrimaryData": true,
|
|
704
|
+
"isESM": true,
|
|
705
|
+
"relativePath": [
|
|
706
|
+
"dist",
|
|
707
|
+
"commands",
|
|
708
|
+
"prune.js"
|
|
709
|
+
]
|
|
619
710
|
},
|
|
620
|
-
"
|
|
711
|
+
"search": {
|
|
621
712
|
"aliases": [],
|
|
622
|
-
"args": {
|
|
623
|
-
|
|
624
|
-
"description": "URL to check",
|
|
625
|
-
"name": "url",
|
|
626
|
-
"required": true
|
|
627
|
-
}
|
|
628
|
-
},
|
|
629
|
-
"description": "Report cache hit/miss state, freshness, and the action the URL shorthand would take.",
|
|
713
|
+
"args": {},
|
|
714
|
+
"description": "Rank cached page-level artifacts by a --query matched against topic, tags, summary, and compressed content, plus the same metadata filters as `list` (topic, tags, URL, freshness, artifact type, capture method). Reads only the token-cheap indexed summary/compressed text, never the full detailed body, so ranking a large cache stays fast. Pass --full for every metadata field.",
|
|
630
715
|
"examples": [
|
|
631
716
|
{
|
|
632
|
-
"description": "
|
|
633
|
-
"command": "<%= config.bin %>
|
|
717
|
+
"description": "search content and tags for a keyword",
|
|
718
|
+
"command": "<%= config.bin %> search --query \"suspense boundary\""
|
|
634
719
|
},
|
|
635
720
|
{
|
|
636
|
-
"description": "
|
|
637
|
-
"command": "<%= config.bin %>
|
|
721
|
+
"description": "match any of several terms instead of requiring all",
|
|
722
|
+
"command": "<%= config.bin %> search --query \"suspense streaming\" --match-any"
|
|
638
723
|
},
|
|
639
724
|
{
|
|
640
|
-
"description": "
|
|
641
|
-
"command": "<%= config.bin %>
|
|
725
|
+
"description": "combine a query with metadata filters",
|
|
726
|
+
"command": "<%= config.bin %> search --query cache --tags react --freshness fresh"
|
|
727
|
+
},
|
|
728
|
+
{
|
|
729
|
+
"description": "filter by tags/topic alone, ranked like list (no --query)",
|
|
730
|
+
"command": "<%= config.bin %> search --tags node --json"
|
|
642
731
|
}
|
|
643
732
|
],
|
|
644
733
|
"flags": {
|
|
@@ -664,57 +753,135 @@
|
|
|
664
753
|
"allowNo": false,
|
|
665
754
|
"type": "boolean"
|
|
666
755
|
},
|
|
667
|
-
"
|
|
668
|
-
"
|
|
669
|
-
"
|
|
756
|
+
"query": {
|
|
757
|
+
"char": "q",
|
|
758
|
+
"description": "keyword(s) to search across topic, tags, summary, and compressed content (case-insensitive); every term must match somewhere unless --match-any is set",
|
|
759
|
+
"name": "query",
|
|
760
|
+
"hasDynamicHelp": false,
|
|
761
|
+
"multiple": false,
|
|
762
|
+
"type": "option"
|
|
763
|
+
},
|
|
764
|
+
"match-any": {
|
|
765
|
+
"description": "match any query term instead of requiring all of them (OR instead of AND)",
|
|
766
|
+
"name": "match-any",
|
|
767
|
+
"allowNo": false,
|
|
768
|
+
"type": "boolean"
|
|
769
|
+
},
|
|
770
|
+
"topic": {
|
|
771
|
+
"char": "t",
|
|
772
|
+
"description": "exact topic (case-insensitive)",
|
|
773
|
+
"name": "topic",
|
|
774
|
+
"hasDynamicHelp": false,
|
|
775
|
+
"multiple": false,
|
|
776
|
+
"type": "option"
|
|
777
|
+
},
|
|
778
|
+
"tags": {
|
|
779
|
+
"char": "g",
|
|
780
|
+
"description": "tags to require (must match all)",
|
|
781
|
+
"name": "tags",
|
|
782
|
+
"hasDynamicHelp": false,
|
|
783
|
+
"multiple": true,
|
|
784
|
+
"type": "option"
|
|
785
|
+
},
|
|
786
|
+
"url": {
|
|
787
|
+
"description": "source URL glob (case-insensitive, supports * wildcard)",
|
|
788
|
+
"name": "url",
|
|
789
|
+
"hasDynamicHelp": false,
|
|
790
|
+
"multiple": false,
|
|
791
|
+
"type": "option"
|
|
792
|
+
},
|
|
793
|
+
"freshness": {
|
|
794
|
+
"description": "freshness state",
|
|
795
|
+
"name": "freshness",
|
|
670
796
|
"hasDynamicHelp": false,
|
|
671
797
|
"multiple": false,
|
|
672
798
|
"options": [
|
|
673
|
-
"
|
|
674
|
-
"
|
|
675
|
-
"
|
|
799
|
+
"fresh",
|
|
800
|
+
"stale_grace",
|
|
801
|
+
"stale_expired"
|
|
676
802
|
],
|
|
677
803
|
"type": "option"
|
|
678
804
|
},
|
|
679
|
-
"
|
|
680
|
-
"
|
|
681
|
-
"
|
|
682
|
-
"name": "ttl",
|
|
805
|
+
"artifact-type": {
|
|
806
|
+
"description": "artifact type; section children are omitted from search - use inspect to see them",
|
|
807
|
+
"name": "artifact-type",
|
|
683
808
|
"hasDynamicHelp": false,
|
|
684
809
|
"multiple": false,
|
|
810
|
+
"options": [
|
|
811
|
+
"source",
|
|
812
|
+
"research_note",
|
|
813
|
+
"index"
|
|
814
|
+
],
|
|
685
815
|
"type": "option"
|
|
686
816
|
},
|
|
687
|
-
"
|
|
688
|
-
"description": "
|
|
689
|
-
"name": "
|
|
817
|
+
"capture-method": {
|
|
818
|
+
"description": "capture method",
|
|
819
|
+
"name": "capture-method",
|
|
820
|
+
"hasDynamicHelp": false,
|
|
821
|
+
"multiple": false,
|
|
822
|
+
"options": [
|
|
823
|
+
"static_fetch",
|
|
824
|
+
"browser_fallback",
|
|
825
|
+
"agent_supplied",
|
|
826
|
+
"route_markdown",
|
|
827
|
+
"github_source"
|
|
828
|
+
],
|
|
829
|
+
"type": "option"
|
|
830
|
+
},
|
|
831
|
+
"limit": {
|
|
832
|
+
"description": "result count (max 100, default 10)",
|
|
833
|
+
"name": "limit",
|
|
834
|
+
"default": 10,
|
|
690
835
|
"hasDynamicHelp": false,
|
|
691
836
|
"multiple": false,
|
|
692
837
|
"type": "option"
|
|
838
|
+
},
|
|
839
|
+
"full": {
|
|
840
|
+
"description": "include every metadata field (cache key, path, artifact type, tags, capture method, quality notes, timestamps) alongside score/matchedFields/snippet; default output is a minimal row (source URLs, topic, freshness, token estimate, score, matchedFields, snippet)",
|
|
841
|
+
"name": "full",
|
|
842
|
+
"allowNo": false,
|
|
843
|
+
"type": "boolean"
|
|
693
844
|
}
|
|
694
845
|
},
|
|
695
846
|
"hasDynamicHelp": false,
|
|
696
847
|
"hiddenAliases": [],
|
|
697
|
-
"id": "
|
|
848
|
+
"id": "search",
|
|
698
849
|
"pluginAlias": "@taurgis/bonsai",
|
|
699
850
|
"pluginName": "@taurgis/bonsai",
|
|
700
851
|
"pluginType": "core",
|
|
701
|
-
"strict":
|
|
702
|
-
"summary": "
|
|
852
|
+
"strict": true,
|
|
853
|
+
"summary": "Search cached research artifacts by tags and content",
|
|
703
854
|
"enableJsonFlag": true,
|
|
704
|
-
"stdoutIsPrimaryData": true
|
|
855
|
+
"stdoutIsPrimaryData": true,
|
|
856
|
+
"isESM": true,
|
|
857
|
+
"relativePath": [
|
|
858
|
+
"dist",
|
|
859
|
+
"commands",
|
|
860
|
+
"search.js"
|
|
861
|
+
]
|
|
705
862
|
},
|
|
706
|
-
"
|
|
863
|
+
"setup": {
|
|
707
864
|
"aliases": [],
|
|
708
|
-
"args": {
|
|
709
|
-
|
|
865
|
+
"args": {
|
|
866
|
+
"agent": {
|
|
867
|
+
"description": "agent to install the hook for (claude-code, codex)",
|
|
868
|
+
"name": "agent",
|
|
869
|
+
"required": true
|
|
870
|
+
}
|
|
871
|
+
},
|
|
872
|
+
"description": "Writes (or repairs) a SessionStart hook entry that runs `bonsai context` at the start of every session, so the agent sees the cache state before doing anything. Project-scoped by default (shareable via version control); pass --global for a user-level, machine-only install. Re-running is idempotent: an unchanged install is a no-op, and a stale executable path is repaired.",
|
|
710
873
|
"examples": [
|
|
711
874
|
{
|
|
712
|
-
"description": "
|
|
713
|
-
"command": "<%= config.bin %>
|
|
875
|
+
"description": "install the hook for this project (Claude Code)",
|
|
876
|
+
"command": "<%= config.bin %> setup claude-code"
|
|
714
877
|
},
|
|
715
878
|
{
|
|
716
|
-
"description": "
|
|
717
|
-
"command": "<%= config.bin %>
|
|
879
|
+
"description": "install the hook for this project (Codex)",
|
|
880
|
+
"command": "<%= config.bin %> setup codex"
|
|
881
|
+
},
|
|
882
|
+
{
|
|
883
|
+
"description": "preview a user-level install without writing anything",
|
|
884
|
+
"command": "<%= config.bin %> setup claude-code --global --dry-run --json"
|
|
718
885
|
}
|
|
719
886
|
],
|
|
720
887
|
"flags": {
|
|
@@ -739,18 +906,141 @@
|
|
|
739
906
|
"name": "toon",
|
|
740
907
|
"allowNo": false,
|
|
741
908
|
"type": "boolean"
|
|
909
|
+
},
|
|
910
|
+
"global": {
|
|
911
|
+
"char": "g",
|
|
912
|
+
"description": "install to the user-level config instead of the project (default: project)",
|
|
913
|
+
"name": "global",
|
|
914
|
+
"allowNo": false,
|
|
915
|
+
"type": "boolean"
|
|
916
|
+
},
|
|
917
|
+
"local": {
|
|
918
|
+
"aliases": [
|
|
919
|
+
"project"
|
|
920
|
+
],
|
|
921
|
+
"charAliases": [
|
|
922
|
+
"p"
|
|
923
|
+
],
|
|
924
|
+
"description": "install to the project config (default; explicit form of the default)",
|
|
925
|
+
"name": "local",
|
|
926
|
+
"allowNo": false,
|
|
927
|
+
"type": "boolean"
|
|
928
|
+
},
|
|
929
|
+
"dry-run": {
|
|
930
|
+
"description": "preview the install without writing anything",
|
|
931
|
+
"name": "dry-run",
|
|
932
|
+
"allowNo": false,
|
|
933
|
+
"type": "boolean"
|
|
742
934
|
}
|
|
743
935
|
},
|
|
744
936
|
"hasDynamicHelp": false,
|
|
745
937
|
"hiddenAliases": [],
|
|
746
|
-
"id": "
|
|
938
|
+
"id": "setup",
|
|
747
939
|
"pluginAlias": "@taurgis/bonsai",
|
|
748
940
|
"pluginName": "@taurgis/bonsai",
|
|
749
941
|
"pluginType": "core",
|
|
750
942
|
"strict": true,
|
|
751
|
-
"summary": "
|
|
943
|
+
"summary": "Install a SessionStart hook that shows live cache context",
|
|
944
|
+
"enableJsonFlag": true,
|
|
945
|
+
"stdoutIsPrimaryData": true,
|
|
946
|
+
"isESM": true,
|
|
947
|
+
"relativePath": [
|
|
948
|
+
"dist",
|
|
949
|
+
"commands",
|
|
950
|
+
"setup.js"
|
|
951
|
+
]
|
|
952
|
+
},
|
|
953
|
+
"status": {
|
|
954
|
+
"aliases": [],
|
|
955
|
+
"args": {
|
|
956
|
+
"url": {
|
|
957
|
+
"description": "URL to check",
|
|
958
|
+
"name": "url",
|
|
959
|
+
"required": true
|
|
960
|
+
}
|
|
961
|
+
},
|
|
962
|
+
"description": "Report cache hit/miss state, freshness, and the action the URL shorthand would take.",
|
|
963
|
+
"examples": [
|
|
964
|
+
{
|
|
965
|
+
"description": "check whether a URL is cached",
|
|
966
|
+
"command": "<%= config.bin %> <%= command.id %> https://example.com/docs"
|
|
967
|
+
},
|
|
968
|
+
{
|
|
969
|
+
"description": "evaluate status with a specific tier and TTL",
|
|
970
|
+
"command": "<%= config.bin %> <%= command.id %> https://example.com/docs --tier volatile --ttl 2h"
|
|
971
|
+
},
|
|
972
|
+
{
|
|
973
|
+
"description": "check multiple URLs in one batch (space-separated)",
|
|
974
|
+
"command": "<%= config.bin %> <%= command.id %> https://example.com/docs https://example.com/api"
|
|
975
|
+
}
|
|
976
|
+
],
|
|
977
|
+
"flags": {
|
|
978
|
+
"json": {
|
|
979
|
+
"description": "Format output as json.",
|
|
980
|
+
"helpGroup": "GLOBAL",
|
|
981
|
+
"name": "json",
|
|
982
|
+
"allowNo": false,
|
|
983
|
+
"type": "boolean"
|
|
984
|
+
},
|
|
985
|
+
"read-only": {
|
|
986
|
+
"aliases": [
|
|
987
|
+
"plan"
|
|
988
|
+
],
|
|
989
|
+
"description": "(alias: --plan) block filesystem writes/deletes; network fetches still run; also honored via BONSAI_READ_ONLY/BONSAI_PLAN_MODE",
|
|
990
|
+
"name": "read-only",
|
|
991
|
+
"allowNo": false,
|
|
992
|
+
"type": "boolean"
|
|
993
|
+
},
|
|
994
|
+
"toon": {
|
|
995
|
+
"description": "emit the same envelope as --json, encoded as TOON (fewer tokens); cannot be combined with --json",
|
|
996
|
+
"name": "toon",
|
|
997
|
+
"allowNo": false,
|
|
998
|
+
"type": "boolean"
|
|
999
|
+
},
|
|
1000
|
+
"tier": {
|
|
1001
|
+
"description": "freshness tier policy to evaluate; when omitted, uses the cached entry's own tier",
|
|
1002
|
+
"name": "tier",
|
|
1003
|
+
"hasDynamicHelp": false,
|
|
1004
|
+
"multiple": false,
|
|
1005
|
+
"options": [
|
|
1006
|
+
"stable",
|
|
1007
|
+
"standard",
|
|
1008
|
+
"volatile"
|
|
1009
|
+
],
|
|
1010
|
+
"type": "option"
|
|
1011
|
+
},
|
|
1012
|
+
"ttl": {
|
|
1013
|
+
"char": "l",
|
|
1014
|
+
"description": "TTL duration to evaluate freshness (e.g. \"2h\", \"7d\", \"6m\")",
|
|
1015
|
+
"name": "ttl",
|
|
1016
|
+
"hasDynamicHelp": false,
|
|
1017
|
+
"multiple": false,
|
|
1018
|
+
"type": "option"
|
|
1019
|
+
},
|
|
1020
|
+
"max-age": {
|
|
1021
|
+
"description": "maximum cache age to accept (e.g. \"2h\", \"7d\", \"6m\")",
|
|
1022
|
+
"name": "max-age",
|
|
1023
|
+
"hasDynamicHelp": false,
|
|
1024
|
+
"multiple": false,
|
|
1025
|
+
"type": "option"
|
|
1026
|
+
}
|
|
1027
|
+
},
|
|
1028
|
+
"hasDynamicHelp": false,
|
|
1029
|
+
"hiddenAliases": [],
|
|
1030
|
+
"id": "status",
|
|
1031
|
+
"pluginAlias": "@taurgis/bonsai",
|
|
1032
|
+
"pluginName": "@taurgis/bonsai",
|
|
1033
|
+
"pluginType": "core",
|
|
1034
|
+
"strict": false,
|
|
1035
|
+
"summary": "Check cache status without fetching or writing",
|
|
752
1036
|
"enableJsonFlag": true,
|
|
753
|
-
"stdoutIsPrimaryData": true
|
|
1037
|
+
"stdoutIsPrimaryData": true,
|
|
1038
|
+
"isESM": true,
|
|
1039
|
+
"relativePath": [
|
|
1040
|
+
"dist",
|
|
1041
|
+
"commands",
|
|
1042
|
+
"status.js"
|
|
1043
|
+
]
|
|
754
1044
|
},
|
|
755
1045
|
"config:get": {
|
|
756
1046
|
"aliases": [],
|
|
@@ -823,7 +1113,70 @@
|
|
|
823
1113
|
"pluginType": "core",
|
|
824
1114
|
"strict": true,
|
|
825
1115
|
"summary": "Get a research configuration value",
|
|
826
|
-
"stdoutIsPrimaryData": true
|
|
1116
|
+
"stdoutIsPrimaryData": true,
|
|
1117
|
+
"isESM": true,
|
|
1118
|
+
"relativePath": [
|
|
1119
|
+
"dist",
|
|
1120
|
+
"commands",
|
|
1121
|
+
"config",
|
|
1122
|
+
"get.js"
|
|
1123
|
+
]
|
|
1124
|
+
},
|
|
1125
|
+
"config": {
|
|
1126
|
+
"aliases": [],
|
|
1127
|
+
"args": {},
|
|
1128
|
+
"description": "Show config subcommands for reading and writing Bonsai research cache configuration.",
|
|
1129
|
+
"examples": [
|
|
1130
|
+
{
|
|
1131
|
+
"description": "get a configuration value",
|
|
1132
|
+
"command": "<%= config.bin %> <%= command.id %> get storage"
|
|
1133
|
+
},
|
|
1134
|
+
{
|
|
1135
|
+
"description": "set project storage mode",
|
|
1136
|
+
"command": "<%= config.bin %> <%= command.id %> set storage project --local"
|
|
1137
|
+
}
|
|
1138
|
+
],
|
|
1139
|
+
"flags": {
|
|
1140
|
+
"json": {
|
|
1141
|
+
"description": "Format output as json.",
|
|
1142
|
+
"helpGroup": "GLOBAL",
|
|
1143
|
+
"name": "json",
|
|
1144
|
+
"allowNo": false,
|
|
1145
|
+
"type": "boolean"
|
|
1146
|
+
},
|
|
1147
|
+
"read-only": {
|
|
1148
|
+
"aliases": [
|
|
1149
|
+
"plan"
|
|
1150
|
+
],
|
|
1151
|
+
"description": "(alias: --plan) block filesystem writes/deletes; network fetches still run; also honored via BONSAI_READ_ONLY/BONSAI_PLAN_MODE",
|
|
1152
|
+
"name": "read-only",
|
|
1153
|
+
"allowNo": false,
|
|
1154
|
+
"type": "boolean"
|
|
1155
|
+
},
|
|
1156
|
+
"toon": {
|
|
1157
|
+
"description": "emit the same envelope as --json, encoded as TOON (fewer tokens); cannot be combined with --json",
|
|
1158
|
+
"name": "toon",
|
|
1159
|
+
"allowNo": false,
|
|
1160
|
+
"type": "boolean"
|
|
1161
|
+
}
|
|
1162
|
+
},
|
|
1163
|
+
"hasDynamicHelp": false,
|
|
1164
|
+
"hiddenAliases": [],
|
|
1165
|
+
"id": "config",
|
|
1166
|
+
"pluginAlias": "@taurgis/bonsai",
|
|
1167
|
+
"pluginName": "@taurgis/bonsai",
|
|
1168
|
+
"pluginType": "core",
|
|
1169
|
+
"strict": true,
|
|
1170
|
+
"summary": "Manage research cache configuration",
|
|
1171
|
+
"enableJsonFlag": true,
|
|
1172
|
+
"stdoutIsPrimaryData": true,
|
|
1173
|
+
"isESM": true,
|
|
1174
|
+
"relativePath": [
|
|
1175
|
+
"dist",
|
|
1176
|
+
"commands",
|
|
1177
|
+
"config",
|
|
1178
|
+
"index.js"
|
|
1179
|
+
]
|
|
827
1180
|
},
|
|
828
1181
|
"config:list": {
|
|
829
1182
|
"aliases": [],
|
|
@@ -890,7 +1243,14 @@
|
|
|
890
1243
|
"pluginType": "core",
|
|
891
1244
|
"strict": true,
|
|
892
1245
|
"summary": "List research configuration values",
|
|
893
|
-
"stdoutIsPrimaryData": true
|
|
1246
|
+
"stdoutIsPrimaryData": true,
|
|
1247
|
+
"isESM": true,
|
|
1248
|
+
"relativePath": [
|
|
1249
|
+
"dist",
|
|
1250
|
+
"commands",
|
|
1251
|
+
"config",
|
|
1252
|
+
"list.js"
|
|
1253
|
+
]
|
|
894
1254
|
},
|
|
895
1255
|
"config:set": {
|
|
896
1256
|
"aliases": [],
|
|
@@ -974,7 +1334,14 @@
|
|
|
974
1334
|
"pluginType": "core",
|
|
975
1335
|
"strict": true,
|
|
976
1336
|
"summary": "Set a research configuration key",
|
|
977
|
-
"stdoutIsPrimaryData": true
|
|
1337
|
+
"stdoutIsPrimaryData": true,
|
|
1338
|
+
"isESM": true,
|
|
1339
|
+
"relativePath": [
|
|
1340
|
+
"dist",
|
|
1341
|
+
"commands",
|
|
1342
|
+
"config",
|
|
1343
|
+
"set.js"
|
|
1344
|
+
]
|
|
978
1345
|
},
|
|
979
1346
|
"config:unset": {
|
|
980
1347
|
"aliases": [],
|
|
@@ -1053,8 +1420,15 @@
|
|
|
1053
1420
|
"pluginType": "core",
|
|
1054
1421
|
"strict": true,
|
|
1055
1422
|
"summary": "Remove a research configuration key",
|
|
1056
|
-
"stdoutIsPrimaryData": true
|
|
1423
|
+
"stdoutIsPrimaryData": true,
|
|
1424
|
+
"isESM": true,
|
|
1425
|
+
"relativePath": [
|
|
1426
|
+
"dist",
|
|
1427
|
+
"commands",
|
|
1428
|
+
"config",
|
|
1429
|
+
"unset.js"
|
|
1430
|
+
]
|
|
1057
1431
|
}
|
|
1058
1432
|
},
|
|
1059
|
-
"version": "4.
|
|
1433
|
+
"version": "4.1.1"
|
|
1060
1434
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taurgis/bonsai",
|
|
3
|
-
"version": "4.
|
|
3
|
+
"version": "4.1.1",
|
|
4
4
|
"description": "Bonsai is a standalone local research cache CLI for AI agents",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -35,27 +35,23 @@
|
|
|
35
35
|
},
|
|
36
36
|
"dependencies": {
|
|
37
37
|
"@mozilla/readability": "^0.5.0",
|
|
38
|
-
"@oclif/core": "^
|
|
39
|
-
"@oclif/plugin-autocomplete": "^
|
|
38
|
+
"@oclif/core": "^5.1.8",
|
|
39
|
+
"@oclif/plugin-autocomplete": "^4.0.4",
|
|
40
40
|
"@toon-format/toon": "^4.0.0",
|
|
41
|
-
"linkedom": "^0.18.
|
|
41
|
+
"linkedom": "^0.18.13",
|
|
42
42
|
"turndown": "^7.2.0",
|
|
43
|
-
"undici": "^8.
|
|
44
|
-
"update-notifier": "^7.3.1"
|
|
43
|
+
"undici": "^8.12.2"
|
|
45
44
|
},
|
|
46
45
|
"devDependencies": {
|
|
47
46
|
"@changesets/cli": "^2.31.0",
|
|
48
|
-
"@types/jsdom": "^21.1.7",
|
|
49
|
-
"@types/mozilla-readability": "^0.2.1",
|
|
50
47
|
"@types/node": "^22.10.0",
|
|
51
48
|
"@types/turndown": "^5.0.5",
|
|
52
49
|
"@vitest/coverage-istanbul": "^4.0.18",
|
|
53
50
|
"eslint": "^10.7.0",
|
|
54
51
|
"fallow": "^2.102.0",
|
|
55
52
|
"husky": "^9.1.7",
|
|
56
|
-
"jsdom": "^26.0.0",
|
|
57
53
|
"lint-staged": "^16.2.7",
|
|
58
|
-
"oclif": "^
|
|
54
|
+
"oclif": "^6.0.8",
|
|
59
55
|
"prettier": "^3.8.1",
|
|
60
56
|
"typescript": "^5.9.3",
|
|
61
57
|
"typescript-eslint": "^8.64.0",
|
|
@@ -78,9 +74,8 @@
|
|
|
78
74
|
"@oclif/plugin-autocomplete"
|
|
79
75
|
],
|
|
80
76
|
"commands": {
|
|
81
|
-
"strategy": "
|
|
82
|
-
"target": "./dist/commands
|
|
83
|
-
"identifier": "commands"
|
|
77
|
+
"strategy": "pattern",
|
|
78
|
+
"target": "./dist/commands"
|
|
84
79
|
},
|
|
85
80
|
"topicSeparator": " ",
|
|
86
81
|
"hooks": {
|