letsfg 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -21
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,36 +1,34 @@
|
|
|
1
|
-
#
|
|
1
|
+
# LetsFG — Agent-Native Flight Search & Booking (Node.js)
|
|
2
2
|
|
|
3
|
-
Search 400+ airlines at raw airline prices — **$
|
|
4
|
-
|
|
5
|
-
> 🎥 **[Watch the demo](https://github.com/Boosted-Chat/LetsFG#demo-boostedtravel-vs-default-agent-search)** — side-by-side comparison of default agent search vs BoostedTravel CLI.
|
|
3
|
+
Search 400+ airlines at raw airline prices — **$50 cheaper** than Booking.com, Kayak, and other OTAs. Zero dependencies. Built for autonomous AI agents — works with Claude, Cursor, Windsurf, and any MCP-compatible client.
|
|
6
4
|
|
|
7
5
|
## Install
|
|
8
6
|
|
|
9
7
|
```bash
|
|
10
|
-
npm install
|
|
8
|
+
npm install letsfg
|
|
11
9
|
```
|
|
12
10
|
|
|
13
11
|
## Quick Start (SDK)
|
|
14
12
|
|
|
15
13
|
```typescript
|
|
16
|
-
import {
|
|
14
|
+
import { LetsFG, cheapestOffer, offerSummary } from 'letsfg';
|
|
17
15
|
|
|
18
16
|
// Register (one-time)
|
|
19
|
-
const creds = await
|
|
17
|
+
const creds = await LetsFG.register('my-agent', 'agent@example.com');
|
|
20
18
|
console.log(creds.api_key); // Save this
|
|
21
19
|
|
|
22
20
|
// Use
|
|
23
|
-
const bt = new
|
|
21
|
+
const bt = new LetsFG({ apiKey: 'trav_...' });
|
|
24
22
|
|
|
25
23
|
// Search — FREE
|
|
26
24
|
const flights = await bt.search('GDN', 'BER', '2026-03-03');
|
|
27
25
|
const best = cheapestOffer(flights);
|
|
28
26
|
console.log(offerSummary(best));
|
|
29
27
|
|
|
30
|
-
// Unlock
|
|
28
|
+
// Unlock
|
|
31
29
|
const unlock = await bt.unlock(best.id);
|
|
32
30
|
|
|
33
|
-
// Book
|
|
31
|
+
// Book
|
|
34
32
|
const booking = await bt.book(
|
|
35
33
|
best.id,
|
|
36
34
|
[{
|
|
@@ -50,17 +48,17 @@ console.log(`PNR: ${booking.booking_reference}`);
|
|
|
50
48
|
## Quick Start (CLI)
|
|
51
49
|
|
|
52
50
|
```bash
|
|
53
|
-
export
|
|
51
|
+
export LETSFG_API_KEY=trav_...
|
|
54
52
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
letsfg search GDN BER 2026-03-03 --sort price
|
|
54
|
+
letsfg search LON BCN 2026-04-01 --json # Machine-readable
|
|
55
|
+
letsfg unlock off_xxx
|
|
56
|
+
letsfg book off_xxx -p '{"id":"pas_xxx","given_name":"John",...}' -e john@example.com
|
|
59
57
|
```
|
|
60
58
|
|
|
61
59
|
## API
|
|
62
60
|
|
|
63
|
-
### `new
|
|
61
|
+
### `new LetsFG({ apiKey, baseUrl?, timeout? })`
|
|
64
62
|
|
|
65
63
|
### `bt.search(origin, destination, dateFrom, options?)`
|
|
66
64
|
### `bt.resolveLocation(query)`
|
|
@@ -68,7 +66,7 @@ boostedtravel book off_xxx -p '{"id":"pas_xxx","given_name":"John",...}' -e john
|
|
|
68
66
|
### `bt.book(offerId, passengers, contactEmail, contactPhone?)`
|
|
69
67
|
### `bt.setupPayment(token?)`
|
|
70
68
|
### `bt.me()`
|
|
71
|
-
### `
|
|
69
|
+
### `LetsFG.register(agentName, email, baseUrl?, ownerName?, description?)`
|
|
72
70
|
|
|
73
71
|
### Helpers
|
|
74
72
|
- `offerSummary(offer)` — One-line string summary
|
|
@@ -76,10 +74,10 @@ boostedtravel book off_xxx -p '{"id":"pas_xxx","given_name":"John",...}' -e john
|
|
|
76
74
|
|
|
77
75
|
### `searchLocal(origin, destination, dateFrom, options?)`
|
|
78
76
|
|
|
79
|
-
Search 75 airline connectors locally (no API key needed). Requires Python + `
|
|
77
|
+
Search 75 airline connectors locally (no API key needed). Requires Python + `letsfg` installed.
|
|
80
78
|
|
|
81
79
|
```typescript
|
|
82
|
-
import { searchLocal } from '
|
|
80
|
+
import { searchLocal } from 'letsfg';
|
|
83
81
|
|
|
84
82
|
const result = await searchLocal('GDN', 'BCN', '2026-06-15');
|
|
85
83
|
console.log(result.total_results);
|
|
@@ -93,7 +91,7 @@ const result2 = await searchLocal('GDN', 'BCN', '2026-06-15', { maxBrowsers: 4 }
|
|
|
93
91
|
Get system resource profile and recommended concurrency settings.
|
|
94
92
|
|
|
95
93
|
```typescript
|
|
96
|
-
import { systemInfo } from '
|
|
94
|
+
import { systemInfo } from 'letsfg';
|
|
97
95
|
|
|
98
96
|
const info = await systemInfo();
|
|
99
97
|
console.log(info);
|
|
@@ -114,7 +112,13 @@ Local search auto-scales browser concurrency based on available RAM. Override wi
|
|
|
114
112
|
await searchLocal('LHR', 'BCN', '2026-04-15', { maxBrowsers: 4 });
|
|
115
113
|
```
|
|
116
114
|
|
|
117
|
-
Or set the `
|
|
115
|
+
Or set the `LETSFG_MAX_BROWSERS` environment variable globally.
|
|
116
|
+
|
|
117
|
+
## Also Available As
|
|
118
|
+
|
|
119
|
+
- **MCP Server**: `npx letsfg-mcp` — [npm](https://www.npmjs.com/package/letsfg-mcp)
|
|
120
|
+
- **Python SDK + CLI**: `pip install letsfg` — [PyPI](https://pypi.org/project/letsfg/)
|
|
121
|
+
- **GitHub**: [LetsFG/LetsFG](https://github.com/LetsFG/LetsFG)
|
|
118
122
|
|
|
119
123
|
## License
|
|
120
124
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "letsfg",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"description": "Agent-native flight search & booking. 75 airline connectors run locally + enterprise GDS/NDC APIs. Built for autonomous AI agents.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|