openmates 0.15.0-alpha.75 → 0.15.0-alpha.76
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/{chunk-U4XICRVH.js → chunk-YZ75YWCS.js} +250 -16
- package/dist/cli.d.ts +2 -1
- package/dist/cli.js +3 -1
- package/dist/index.d.ts +154 -9
- package/dist/index.js +1 -1
- package/package.json +1 -1
|
@@ -12951,7 +12951,7 @@ var APP_SKILL_METADATA = [
|
|
|
12951
12951
|
"app_namespace_py": "code",
|
|
12952
12952
|
"skill_method_py": "image_to_html",
|
|
12953
12953
|
"description_key": "app_skills.code.image_to_html.description",
|
|
12954
|
-
"description": "Turn an uploaded screenshot into one standalone index.html code embed with inline CSS and optional inline JavaScript. Use this when the user asks to convert a screenshot, mockup, UI image, or app screen into HTML. Do not use remote image URLs;
|
|
12954
|
+
"description": "Turn an uploaded screenshot into one standalone index.html code embed with inline CSS and optional inline JavaScript. Use this when the user asks to convert a screenshot, mockup, UI image, or app screen into HTML. Do not use remote image URLs; pass source_image with the uploaded image embed_ref in chat, or image_base64 for REST/API calls.",
|
|
12955
12955
|
"schema": {
|
|
12956
12956
|
"type": "object",
|
|
12957
12957
|
"properties": {
|
|
@@ -12963,7 +12963,11 @@ var APP_SKILL_METADATA = [
|
|
|
12963
12963
|
"properties": {
|
|
12964
12964
|
"image_base64": {
|
|
12965
12965
|
"type": "string",
|
|
12966
|
-
"description": "Base64-encoded PNG, JPEG, or WEBP image bytes."
|
|
12966
|
+
"description": "Base64-encoded PNG, JPEG, or WEBP image bytes. Use this for REST/API calls."
|
|
12967
|
+
},
|
|
12968
|
+
"source_image": {
|
|
12969
|
+
"type": "string",
|
|
12970
|
+
"description": "Uploaded image filename/embed_ref from the conversation. Use this in chat/CLI when the user references an attached screenshot or mockup."
|
|
12967
12971
|
},
|
|
12968
12972
|
"mime_type": {
|
|
12969
12973
|
"type": "string",
|
|
@@ -12972,7 +12976,7 @@ var APP_SKILL_METADATA = [
|
|
|
12972
12976
|
"image/jpeg",
|
|
12973
12977
|
"image/webp"
|
|
12974
12978
|
],
|
|
12975
|
-
"description": "MIME type for image_base64."
|
|
12979
|
+
"description": "MIME type for image_base64. Optional when using source_image because the server resolves it from the uploaded image."
|
|
12976
12980
|
},
|
|
12977
12981
|
"filename": {
|
|
12978
12982
|
"type": "string",
|
|
@@ -12985,11 +12989,7 @@ var APP_SKILL_METADATA = [
|
|
|
12985
12989
|
"default": 2,
|
|
12986
12990
|
"description": "Maximum E2B render-feedback correction passes."
|
|
12987
12991
|
}
|
|
12988
|
-
}
|
|
12989
|
-
"required": [
|
|
12990
|
-
"image_base64",
|
|
12991
|
-
"mime_type"
|
|
12992
|
-
]
|
|
12992
|
+
}
|
|
12993
12993
|
}
|
|
12994
12994
|
}
|
|
12995
12995
|
},
|
|
@@ -14576,6 +14576,106 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
|
|
|
14576
14576
|
]
|
|
14577
14577
|
}
|
|
14578
14578
|
},
|
|
14579
|
+
{
|
|
14580
|
+
"app_id": "plans",
|
|
14581
|
+
"skill_id": "create",
|
|
14582
|
+
"app_namespace_ts": "plans",
|
|
14583
|
+
"skill_method_ts": "create",
|
|
14584
|
+
"app_namespace_py": "plans",
|
|
14585
|
+
"skill_method_py": "create",
|
|
14586
|
+
"description_key": "plans.skills.create.description",
|
|
14587
|
+
"description": "Request creation of a user-visible plan. Durable plan content is client-side encrypted, so a capable connected client must apply the change.",
|
|
14588
|
+
"schema": {
|
|
14589
|
+
"type": "object",
|
|
14590
|
+
"properties": {
|
|
14591
|
+
"title": {
|
|
14592
|
+
"type": "string",
|
|
14593
|
+
"description": "Short user-facing plan title."
|
|
14594
|
+
},
|
|
14595
|
+
"summary": {
|
|
14596
|
+
"type": "string",
|
|
14597
|
+
"description": "Optional plan summary."
|
|
14598
|
+
},
|
|
14599
|
+
"goal": {
|
|
14600
|
+
"type": "string",
|
|
14601
|
+
"description": "Optional plan goal."
|
|
14602
|
+
}
|
|
14603
|
+
},
|
|
14604
|
+
"required": [
|
|
14605
|
+
"title"
|
|
14606
|
+
]
|
|
14607
|
+
}
|
|
14608
|
+
},
|
|
14609
|
+
{
|
|
14610
|
+
"app_id": "plans",
|
|
14611
|
+
"skill_id": "search",
|
|
14612
|
+
"app_namespace_ts": "plans",
|
|
14613
|
+
"skill_method_ts": "search",
|
|
14614
|
+
"app_namespace_py": "plans",
|
|
14615
|
+
"skill_method_py": "search",
|
|
14616
|
+
"description_key": "plans.skills.search.description",
|
|
14617
|
+
"description": "Search the user's encrypted plans through a connected capable client. Do not use server-visible metadata as a private plan-content fallback.",
|
|
14618
|
+
"schema": {
|
|
14619
|
+
"type": "object",
|
|
14620
|
+
"properties": {
|
|
14621
|
+
"query": {
|
|
14622
|
+
"type": "string",
|
|
14623
|
+
"description": "Private plan text to search for on a connected client."
|
|
14624
|
+
}
|
|
14625
|
+
},
|
|
14626
|
+
"required": [
|
|
14627
|
+
"query"
|
|
14628
|
+
]
|
|
14629
|
+
}
|
|
14630
|
+
},
|
|
14631
|
+
{
|
|
14632
|
+
"app_id": "projects",
|
|
14633
|
+
"skill_id": "create",
|
|
14634
|
+
"app_namespace_ts": "projects",
|
|
14635
|
+
"skill_method_ts": "create",
|
|
14636
|
+
"app_namespace_py": "projects",
|
|
14637
|
+
"skill_method_py": "create",
|
|
14638
|
+
"description_key": "projects.skills.create.description",
|
|
14639
|
+
"description": "Request creation of a user-visible project. Durable project content is client-side encrypted, so a capable connected client must apply the change.",
|
|
14640
|
+
"schema": {
|
|
14641
|
+
"type": "object",
|
|
14642
|
+
"properties": {
|
|
14643
|
+
"name": {
|
|
14644
|
+
"type": "string",
|
|
14645
|
+
"description": "Short user-facing project name."
|
|
14646
|
+
},
|
|
14647
|
+
"description": {
|
|
14648
|
+
"type": "string",
|
|
14649
|
+
"description": "Optional project description."
|
|
14650
|
+
}
|
|
14651
|
+
},
|
|
14652
|
+
"required": [
|
|
14653
|
+
"name"
|
|
14654
|
+
]
|
|
14655
|
+
}
|
|
14656
|
+
},
|
|
14657
|
+
{
|
|
14658
|
+
"app_id": "projects",
|
|
14659
|
+
"skill_id": "search",
|
|
14660
|
+
"app_namespace_ts": "projects",
|
|
14661
|
+
"skill_method_ts": "search",
|
|
14662
|
+
"app_namespace_py": "projects",
|
|
14663
|
+
"skill_method_py": "search",
|
|
14664
|
+
"description_key": "projects.skills.search.description",
|
|
14665
|
+
"description": "Search the user's encrypted projects through a connected capable client. Do not use server-visible metadata as a private project-content fallback.",
|
|
14666
|
+
"schema": {
|
|
14667
|
+
"type": "object",
|
|
14668
|
+
"properties": {
|
|
14669
|
+
"query": {
|
|
14670
|
+
"type": "string",
|
|
14671
|
+
"description": "Private project text to search for on a connected client."
|
|
14672
|
+
}
|
|
14673
|
+
},
|
|
14674
|
+
"required": [
|
|
14675
|
+
"query"
|
|
14676
|
+
]
|
|
14677
|
+
}
|
|
14678
|
+
},
|
|
14579
14679
|
{
|
|
14580
14680
|
"app_id": "reminder",
|
|
14581
14681
|
"skill_id": "set-reminder",
|
|
@@ -15259,7 +15359,7 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
|
|
|
15259
15359
|
"app_namespace_py": "travel",
|
|
15260
15360
|
"skill_method_py": "search_connections",
|
|
15261
15361
|
"description_key": "app_skills.travel.search_connections.description",
|
|
15262
|
-
"description": 'Search for flight or train connections for a particular date with details (airlines/operators, times, stops, durations, prices). Use when user asks about flights, train connections, or travel between cities on a specific date. Set transport_methods to ["airplane"] for flights or ["train"] for trains. If the user names a provider, set providers to one or more of: google_flights, deutsche_bahn, flix. If no provider is specified, all providers for the selected transport method are
|
|
15362
|
+
"description": 'Search for flight or train connections for a particular date with details (airlines/operators, times, stops, durations, prices). Use when user asks about flights, train connections, or travel between cities on a specific date. Set transport_methods to ["airplane"] for flights or ["train"] for trains. If the user names a provider, set providers to one or more of: google_flights, deutsche_bahn, flix, transitous. If no provider is specified, all providers for the selected transport method are searc',
|
|
15263
15363
|
"schema": {
|
|
15264
15364
|
"type": "object",
|
|
15265
15365
|
"properties": {
|
|
@@ -15313,13 +15413,14 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
|
|
|
15313
15413
|
},
|
|
15314
15414
|
"providers": {
|
|
15315
15415
|
"type": "array",
|
|
15316
|
-
"description": 'Optional provider IDs to search. Use "google_flights" for flights, "deutsche_bahn" for Deutsche Bahn / ICE / Bahn.de / Sparpreis train searches,
|
|
15416
|
+
"description": 'Optional provider IDs to search. Use "google_flights" for flights, "deutsche_bahn" for Deutsche Bahn / ICE / Bahn.de / Sparpreis train searches, "flix" for FlixBus / FlixTrain, and "transitous" only for timetable-only public transport routing. If omitted, priced providers for the selected transport method are used, then filtered by countries if provided.\n',
|
|
15317
15417
|
"items": {
|
|
15318
15418
|
"type": "string",
|
|
15319
15419
|
"enum": [
|
|
15320
15420
|
"google_flights",
|
|
15321
15421
|
"deutsche_bahn",
|
|
15322
|
-
"flix"
|
|
15422
|
+
"flix",
|
|
15423
|
+
"transitous"
|
|
15323
15424
|
]
|
|
15324
15425
|
}
|
|
15325
15426
|
},
|
|
@@ -15378,6 +15479,36 @@ Note: The 'id' field is auto-generated if not provided - you don't need to inclu
|
|
|
15378
15479
|
"type": "string"
|
|
15379
15480
|
}
|
|
15380
15481
|
},
|
|
15482
|
+
"owned_passes": {
|
|
15483
|
+
"type": "array",
|
|
15484
|
+
"description": 'Fare or mobility pass IDs the traveller already owns, such as "deutschland_ticket". Use for pass-aware train pricing when the user says they have a Deutschlandticket.\n',
|
|
15485
|
+
"items": {
|
|
15486
|
+
"type": "string"
|
|
15487
|
+
}
|
|
15488
|
+
},
|
|
15489
|
+
"pass_only": {
|
|
15490
|
+
"type": "boolean",
|
|
15491
|
+
"description": 'If true, prefer routes covered by owned fare passes when supported. Use with owned_passes ["deutschland_ticket"] for Deutschlandticket-only routing.\n',
|
|
15492
|
+
"default": false
|
|
15493
|
+
},
|
|
15494
|
+
"rail_products": {
|
|
15495
|
+
"type": "array",
|
|
15496
|
+
"description": "Stable rail product filters for train searches. Use high_speed for ICE/high-speed, intercity for IC/EC, regional_express for IRE/RE-like services, regional for RB/local, s_bahn for S-Bahn, subway, tram, bus, or ferry.\n",
|
|
15497
|
+
"items": {
|
|
15498
|
+
"type": "string",
|
|
15499
|
+
"enum": [
|
|
15500
|
+
"high_speed",
|
|
15501
|
+
"intercity",
|
|
15502
|
+
"regional_express",
|
|
15503
|
+
"regional",
|
|
15504
|
+
"s_bahn",
|
|
15505
|
+
"subway",
|
|
15506
|
+
"tram",
|
|
15507
|
+
"bus",
|
|
15508
|
+
"ferry"
|
|
15509
|
+
]
|
|
15510
|
+
}
|
|
15511
|
+
},
|
|
15381
15512
|
"min_departure_time": {
|
|
15382
15513
|
"type": "string",
|
|
15383
15514
|
"description": "Earliest acceptable local departure time in HH:MM format."
|
|
@@ -16296,7 +16427,7 @@ var CodeAppSkills = class {
|
|
|
16296
16427
|
return this.runSkill("code", "get_project_overview", input, options);
|
|
16297
16428
|
}
|
|
16298
16429
|
/**
|
|
16299
|
-
* Turn an uploaded screenshot into one standalone index.html code embed with inline CSS and optional inline JavaScript. Use this when the user asks to convert a screenshot, mockup, UI image, or app screen into HTML. Do not use remote image URLs;
|
|
16430
|
+
* Turn an uploaded screenshot into one standalone index.html code embed with inline CSS and optional inline JavaScript. Use this when the user asks to convert a screenshot, mockup, UI image, or app screen into HTML. Do not use remote image URLs; pass source_image with the uploaded image embed_ref in chat, or image_base64 for REST/API calls.
|
|
16300
16431
|
* Description key: app_skills.code.image_to_html.description
|
|
16301
16432
|
* Skill: code/image_to_html
|
|
16302
16433
|
*/
|
|
@@ -16592,6 +16723,50 @@ var PdfAppSkills = class {
|
|
|
16592
16723
|
return this.runSkill("pdf", "view", input, options);
|
|
16593
16724
|
}
|
|
16594
16725
|
};
|
|
16726
|
+
var PlansAppSkills = class {
|
|
16727
|
+
runSkill;
|
|
16728
|
+
constructor(runSkill) {
|
|
16729
|
+
this.runSkill = runSkill;
|
|
16730
|
+
}
|
|
16731
|
+
/**
|
|
16732
|
+
* Request creation of a user-visible plan. Durable plan content is client-side encrypted, so a capable connected client must apply the change.
|
|
16733
|
+
* Description key: plans.skills.create.description
|
|
16734
|
+
* Skill: plans/create
|
|
16735
|
+
*/
|
|
16736
|
+
async create(input, options) {
|
|
16737
|
+
return this.runSkill("plans", "create", input, options);
|
|
16738
|
+
}
|
|
16739
|
+
/**
|
|
16740
|
+
* Search the user's encrypted plans through a connected capable client. Do not use server-visible metadata as a private plan-content fallback.
|
|
16741
|
+
* Description key: plans.skills.search.description
|
|
16742
|
+
* Skill: plans/search
|
|
16743
|
+
*/
|
|
16744
|
+
async search(input, options) {
|
|
16745
|
+
return this.runSkill("plans", "search", input, options);
|
|
16746
|
+
}
|
|
16747
|
+
};
|
|
16748
|
+
var ProjectsAppSkills = class {
|
|
16749
|
+
runSkill;
|
|
16750
|
+
constructor(runSkill) {
|
|
16751
|
+
this.runSkill = runSkill;
|
|
16752
|
+
}
|
|
16753
|
+
/**
|
|
16754
|
+
* Request creation of a user-visible project. Durable project content is client-side encrypted, so a capable connected client must apply the change.
|
|
16755
|
+
* Description key: projects.skills.create.description
|
|
16756
|
+
* Skill: projects/create
|
|
16757
|
+
*/
|
|
16758
|
+
async create(input, options) {
|
|
16759
|
+
return this.runSkill("projects", "create", input, options);
|
|
16760
|
+
}
|
|
16761
|
+
/**
|
|
16762
|
+
* Search the user's encrypted projects through a connected capable client. Do not use server-visible metadata as a private project-content fallback.
|
|
16763
|
+
* Description key: projects.skills.search.description
|
|
16764
|
+
* Skill: projects/search
|
|
16765
|
+
*/
|
|
16766
|
+
async search(input, options) {
|
|
16767
|
+
return this.runSkill("projects", "search", input, options);
|
|
16768
|
+
}
|
|
16769
|
+
};
|
|
16595
16770
|
var ReminderAppSkills = class {
|
|
16596
16771
|
runSkill;
|
|
16597
16772
|
constructor(runSkill) {
|
|
@@ -16694,7 +16869,7 @@ var TravelAppSkills = class {
|
|
|
16694
16869
|
return this.runSkill("travel", "get_flight", input, options);
|
|
16695
16870
|
}
|
|
16696
16871
|
/**
|
|
16697
|
-
* Search for flight or train connections for a particular date with details (airlines/operators, times, stops, durations, prices). Use when user asks about flights, train connections, or travel between cities on a specific date. Set transport_methods to ["airplane"] for flights or ["train"] for trains. If the user names a provider, set providers to one or more of: google_flights, deutsche_bahn, flix. If no provider is specified, all providers for the selected transport method are
|
|
16872
|
+
* Search for flight or train connections for a particular date with details (airlines/operators, times, stops, durations, prices). Use when user asks about flights, train connections, or travel between cities on a specific date. Set transport_methods to ["airplane"] for flights or ["train"] for trains. If the user names a provider, set providers to one or more of: google_flights, deutsche_bahn, flix, transitous. If no provider is specified, all providers for the selected transport method are searc
|
|
16698
16873
|
* Description key: app_skills.travel.search_connections.description
|
|
16699
16874
|
* Skill: travel/search_connections
|
|
16700
16875
|
*/
|
|
@@ -16836,6 +17011,8 @@ var GeneratedAppSkills = class {
|
|
|
16836
17011
|
this.nutrition = new NutritionAppSkills(runSkill);
|
|
16837
17012
|
this.openmates = new OpenmatesAppSkills(runSkill);
|
|
16838
17013
|
this.pdf = new PdfAppSkills(runSkill);
|
|
17014
|
+
this.plans = new PlansAppSkills(runSkill);
|
|
17015
|
+
this.projects = new ProjectsAppSkills(runSkill);
|
|
16839
17016
|
this.reminder = new ReminderAppSkills(runSkill);
|
|
16840
17017
|
this.shopping = new ShoppingAppSkills(runSkill);
|
|
16841
17018
|
this.socialMedia = new SocialMediaAppSkills(runSkill);
|
|
@@ -16866,6 +17043,8 @@ var GeneratedAppSkills = class {
|
|
|
16866
17043
|
nutrition;
|
|
16867
17044
|
openmates;
|
|
16868
17045
|
pdf;
|
|
17046
|
+
plans;
|
|
17047
|
+
projects;
|
|
16869
17048
|
reminder;
|
|
16870
17049
|
shopping;
|
|
16871
17050
|
socialMedia;
|
|
@@ -22133,6 +22312,27 @@ function formatPrice(amount, currency) {
|
|
|
22133
22312
|
const cur = str(currency)?.toUpperCase() ?? "";
|
|
22134
22313
|
return cur ? `${cur} ${amount}` : String(amount);
|
|
22135
22314
|
}
|
|
22315
|
+
function fareNumberValue(value) {
|
|
22316
|
+
if (typeof value === "number" && Number.isFinite(value)) return value;
|
|
22317
|
+
if (typeof value !== "string" || !value.trim()) return null;
|
|
22318
|
+
const parsed = Number(value);
|
|
22319
|
+
return Number.isFinite(parsed) ? parsed : null;
|
|
22320
|
+
}
|
|
22321
|
+
function fareRecord(value) {
|
|
22322
|
+
return value && typeof value === "object" && !Array.isArray(value) ? value : null;
|
|
22323
|
+
}
|
|
22324
|
+
function formatFare(value) {
|
|
22325
|
+
const fare = fareRecord(value.fare);
|
|
22326
|
+
const confidence = str(fare?.confidence);
|
|
22327
|
+
if (confidence === "timetable_only") return "Timetable only";
|
|
22328
|
+
if (fare?.is_pass_only === true) return str(fare.summary) ?? "Covered by pass";
|
|
22329
|
+
const amount = fare?.amount ?? value.total_price ?? value.price;
|
|
22330
|
+
const currency = fare?.currency ?? value.currency;
|
|
22331
|
+
const price = formatPrice(amount, currency);
|
|
22332
|
+
if (!price) return confidence === "unknown" ? "Fare unknown" : "";
|
|
22333
|
+
if (fare?.is_partial === true || value.fare_is_partial === true) return `${price} (partial fare)`;
|
|
22334
|
+
return price;
|
|
22335
|
+
}
|
|
22136
22336
|
function trunc(s, max) {
|
|
22137
22337
|
return s.length > max ? s.slice(0, max) + "\u2026" : s;
|
|
22138
22338
|
}
|
|
@@ -22630,7 +22830,12 @@ async function renderTravelConnectionsPreview(c, ln, _client) {
|
|
|
22630
22830
|
}
|
|
22631
22831
|
if (count !== null) ln(`\x1B[2m${count} connections\x1B[0m`);
|
|
22632
22832
|
if (Array.isArray(results) && results.length > 0) {
|
|
22633
|
-
const prices = results.map((r) =>
|
|
22833
|
+
const prices = results.map((r) => {
|
|
22834
|
+
const fare = fareRecord(r.fare);
|
|
22835
|
+
const confidence = str(fare?.confidence);
|
|
22836
|
+
if (confidence && !["confirmed", "partial"].includes(confidence)) return null;
|
|
22837
|
+
return fareNumberValue(fare?.amount ?? r.total_price);
|
|
22838
|
+
}).filter((p) => p !== null);
|
|
22634
22839
|
if (prices.length > 0) {
|
|
22635
22840
|
const min = Math.min(...prices);
|
|
22636
22841
|
const currency = str(results[0].currency) ?? "EUR";
|
|
@@ -22652,7 +22857,7 @@ async function renderTravelConnectionsFullscreen(c, client) {
|
|
|
22652
22857
|
const dep = str(r.departure)?.slice(11, 16) ?? "";
|
|
22653
22858
|
const arr = str(r.arrival)?.slice(11, 16) ?? "";
|
|
22654
22859
|
const duration = str(r.duration) ?? "";
|
|
22655
|
-
const price =
|
|
22860
|
+
const price = formatFare(r);
|
|
22656
22861
|
const stops = typeof r.stops === "number" ? r.stops === 0 ? "Direct" : `${r.stops} stops` : "";
|
|
22657
22862
|
const carriers = Array.isArray(r.carriers) ? r.carriers.join(", ") : str(r.carrier) ?? "";
|
|
22658
22863
|
if (origin && dest)
|
|
@@ -23037,7 +23242,7 @@ function renderByDirectType(embed, c, ln) {
|
|
|
23037
23242
|
case "travel-connection": {
|
|
23038
23243
|
const origin = str(c.origin) ?? "";
|
|
23039
23244
|
const dest = str(c.destination) ?? "";
|
|
23040
|
-
const price =
|
|
23245
|
+
const price = formatFare(c);
|
|
23041
23246
|
const dep = str(c.departure)?.slice(11, 16) ?? "";
|
|
23042
23247
|
const arr = str(c.arrival)?.slice(11, 16) ?? "";
|
|
23043
23248
|
if (origin && dest) ln(`${origin} \u2192 ${dest}`);
|
|
@@ -70318,6 +70523,14 @@ function buildTravelConnectionsRequest(positionals, flags) {
|
|
|
70318
70523
|
};
|
|
70319
70524
|
const transport = stringFlag2(flags, "transport") ?? stringFlag2(flags, "transport-method");
|
|
70320
70525
|
if (transport) request.transport_methods = [transport];
|
|
70526
|
+
const providers = csvFlag(flags, "providers") ?? csvFlag(flags, "provider");
|
|
70527
|
+
if (providers) request.providers = providers;
|
|
70528
|
+
const ownedPasses = csvFlag(flags, "owned_passes") ?? csvFlag(flags, "owned-passes");
|
|
70529
|
+
if (ownedPasses) request.owned_passes = ownedPasses;
|
|
70530
|
+
const railProducts = csvFlag(flags, "rail_products") ?? csvFlag(flags, "rail-products");
|
|
70531
|
+
if (railProducts) request.rail_products = railProducts;
|
|
70532
|
+
const passOnly = booleanFlag(flags, "pass_only") ?? booleanFlag(flags, "pass-only");
|
|
70533
|
+
if (passOnly !== void 0) request.pass_only = passOnly;
|
|
70321
70534
|
return request;
|
|
70322
70535
|
}
|
|
70323
70536
|
function buildCodeImageToHtmlRequest(positionals, flags) {
|
|
@@ -70373,6 +70586,22 @@ function stringFlag2(flags, name) {
|
|
|
70373
70586
|
const raw = readFlag(flags, name);
|
|
70374
70587
|
return typeof raw === "string" && raw.trim() ? raw.trim() : void 0;
|
|
70375
70588
|
}
|
|
70589
|
+
function csvFlag(flags, name) {
|
|
70590
|
+
const raw = readFlag(flags, name);
|
|
70591
|
+
if (typeof raw !== "string" || !raw.trim()) return void 0;
|
|
70592
|
+
const values = raw.split(/[,\n]/).map((value) => value.trim()).filter(Boolean);
|
|
70593
|
+
return values.length > 0 ? values : void 0;
|
|
70594
|
+
}
|
|
70595
|
+
function booleanFlag(flags, name) {
|
|
70596
|
+
const raw = readFlag(flags, name);
|
|
70597
|
+
if (raw === void 0) return void 0;
|
|
70598
|
+
if (raw === true) return true;
|
|
70599
|
+
if (raw === false) return false;
|
|
70600
|
+
const normalized = raw.trim().toLowerCase();
|
|
70601
|
+
if (["1", "true", "yes", "on"].includes(normalized)) return true;
|
|
70602
|
+
if (["0", "false", "no", "off"].includes(normalized)) return false;
|
|
70603
|
+
return true;
|
|
70604
|
+
}
|
|
70376
70605
|
function coerceAppSkillFlagValue(name, raw, schema) {
|
|
70377
70606
|
if (schema.type === "boolean") return raw === true || raw === "true";
|
|
70378
70607
|
if (schema.type === "integer") {
|
|
@@ -70415,6 +70644,10 @@ ${command.description}
|
|
|
70415
70644
|
console.log(" --destination <place> Route destination for a typed connection search.");
|
|
70416
70645
|
console.log(" --date <YYYY-MM-DD> Departure date for a typed connection search.");
|
|
70417
70646
|
console.log(" --transport <mode> Optional transport mode, e.g. train or plane.");
|
|
70647
|
+
console.log(" --providers <csv> Optional providers, e.g. deutsche_bahn,transitous.");
|
|
70648
|
+
console.log(" --owned-passes <csv> Optional owned passes, e.g. deutschland_ticket.");
|
|
70649
|
+
console.log(" --pass-only Prefer pass-covered routes when supported.");
|
|
70650
|
+
console.log(" --rail-products <csv> Optional rail filters, e.g. high_speed,regional.");
|
|
70418
70651
|
}
|
|
70419
70652
|
if (command.app_id === "code" && command.skill_id === "image_to_html") {
|
|
70420
70653
|
console.log(" --file <path> Local PNG, JPEG, or WEBP screenshot to convert.");
|
|
@@ -76160,6 +76393,7 @@ export {
|
|
|
76160
76393
|
ASSISTANT_FEEDBACK_THANKS,
|
|
76161
76394
|
ASSISTANT_FEEDBACK_REPORT_TITLE,
|
|
76162
76395
|
buildAssistantFeedbackDecision,
|
|
76396
|
+
buildTravelConnectionsRequest,
|
|
76163
76397
|
serializeToYaml,
|
|
76164
76398
|
getExtForLang
|
|
76165
76399
|
};
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
+
declare function buildTravelConnectionsRequest(positionals: string[], flags: Record<string, string | boolean>): Record<string, unknown>;
|
|
2
3
|
/** Format a share duration for display */
|
|
3
4
|
/**
|
|
4
5
|
* Simple YAML serializer for chat export (no external dependency).
|
|
@@ -9,4 +10,4 @@ declare function serializeToYaml(data: Record<string, unknown>, indent?: number)
|
|
|
9
10
|
/** Map language identifier to file extension for code embed downloads. */
|
|
10
11
|
declare function getExtForLang(language: string): string;
|
|
11
12
|
|
|
12
|
-
export { getExtForLang, serializeToYaml };
|
|
13
|
+
export { buildTravelConnectionsRequest, getExtForLang, serializeToYaml };
|
package/dist/cli.js
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import {
|
|
3
|
+
buildTravelConnectionsRequest,
|
|
3
4
|
getExtForLang,
|
|
4
5
|
serializeToYaml
|
|
5
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-YZ75YWCS.js";
|
|
6
7
|
import "./chunk-MLWBMJEN.js";
|
|
7
8
|
export {
|
|
9
|
+
buildTravelConnectionsRequest,
|
|
8
10
|
getExtForLang,
|
|
9
11
|
serializeToYaml
|
|
10
12
|
};
|
package/dist/index.d.ts
CHANGED
|
@@ -2711,7 +2711,7 @@ declare const APP_SKILL_METADATA: readonly [{
|
|
|
2711
2711
|
readonly app_namespace_py: "code";
|
|
2712
2712
|
readonly skill_method_py: "image_to_html";
|
|
2713
2713
|
readonly description_key: "app_skills.code.image_to_html.description";
|
|
2714
|
-
readonly description: "Turn an uploaded screenshot into one standalone index.html code embed with inline CSS and optional inline JavaScript. Use this when the user asks to convert a screenshot, mockup, UI image, or app screen into HTML. Do not use remote image URLs;
|
|
2714
|
+
readonly description: "Turn an uploaded screenshot into one standalone index.html code embed with inline CSS and optional inline JavaScript. Use this when the user asks to convert a screenshot, mockup, UI image, or app screen into HTML. Do not use remote image URLs; pass source_image with the uploaded image embed_ref in chat, or image_base64 for REST/API calls.";
|
|
2715
2715
|
readonly schema: {
|
|
2716
2716
|
readonly type: "object";
|
|
2717
2717
|
readonly properties: {
|
|
@@ -2723,12 +2723,16 @@ declare const APP_SKILL_METADATA: readonly [{
|
|
|
2723
2723
|
readonly properties: {
|
|
2724
2724
|
readonly image_base64: {
|
|
2725
2725
|
readonly type: "string";
|
|
2726
|
-
readonly description: "Base64-encoded PNG, JPEG, or WEBP image bytes.";
|
|
2726
|
+
readonly description: "Base64-encoded PNG, JPEG, or WEBP image bytes. Use this for REST/API calls.";
|
|
2727
|
+
};
|
|
2728
|
+
readonly source_image: {
|
|
2729
|
+
readonly type: "string";
|
|
2730
|
+
readonly description: "Uploaded image filename/embed_ref from the conversation. Use this in chat/CLI when the user references an attached screenshot or mockup.";
|
|
2727
2731
|
};
|
|
2728
2732
|
readonly mime_type: {
|
|
2729
2733
|
readonly type: "string";
|
|
2730
2734
|
readonly enum: readonly ["image/png", "image/jpeg", "image/webp"];
|
|
2731
|
-
readonly description: "MIME type for image_base64.";
|
|
2735
|
+
readonly description: "MIME type for image_base64. Optional when using source_image because the server resolves it from the uploaded image.";
|
|
2732
2736
|
};
|
|
2733
2737
|
readonly filename: {
|
|
2734
2738
|
readonly type: "string";
|
|
@@ -2742,7 +2746,6 @@ declare const APP_SKILL_METADATA: readonly [{
|
|
|
2742
2746
|
readonly description: "Maximum E2B render-feedback correction passes.";
|
|
2743
2747
|
};
|
|
2744
2748
|
};
|
|
2745
|
-
readonly required: readonly ["image_base64", "mime_type"];
|
|
2746
2749
|
};
|
|
2747
2750
|
};
|
|
2748
2751
|
};
|
|
@@ -3991,6 +3994,94 @@ declare const APP_SKILL_METADATA: readonly [{
|
|
|
3991
3994
|
};
|
|
3992
3995
|
readonly required: readonly ["file_path", "pages", "query"];
|
|
3993
3996
|
};
|
|
3997
|
+
}, {
|
|
3998
|
+
readonly app_id: "plans";
|
|
3999
|
+
readonly skill_id: "create";
|
|
4000
|
+
readonly app_namespace_ts: "plans";
|
|
4001
|
+
readonly skill_method_ts: "create";
|
|
4002
|
+
readonly app_namespace_py: "plans";
|
|
4003
|
+
readonly skill_method_py: "create";
|
|
4004
|
+
readonly description_key: "plans.skills.create.description";
|
|
4005
|
+
readonly description: "Request creation of a user-visible plan. Durable plan content is client-side encrypted, so a capable connected client must apply the change.";
|
|
4006
|
+
readonly schema: {
|
|
4007
|
+
readonly type: "object";
|
|
4008
|
+
readonly properties: {
|
|
4009
|
+
readonly title: {
|
|
4010
|
+
readonly type: "string";
|
|
4011
|
+
readonly description: "Short user-facing plan title.";
|
|
4012
|
+
};
|
|
4013
|
+
readonly summary: {
|
|
4014
|
+
readonly type: "string";
|
|
4015
|
+
readonly description: "Optional plan summary.";
|
|
4016
|
+
};
|
|
4017
|
+
readonly goal: {
|
|
4018
|
+
readonly type: "string";
|
|
4019
|
+
readonly description: "Optional plan goal.";
|
|
4020
|
+
};
|
|
4021
|
+
};
|
|
4022
|
+
readonly required: readonly ["title"];
|
|
4023
|
+
};
|
|
4024
|
+
}, {
|
|
4025
|
+
readonly app_id: "plans";
|
|
4026
|
+
readonly skill_id: "search";
|
|
4027
|
+
readonly app_namespace_ts: "plans";
|
|
4028
|
+
readonly skill_method_ts: "search";
|
|
4029
|
+
readonly app_namespace_py: "plans";
|
|
4030
|
+
readonly skill_method_py: "search";
|
|
4031
|
+
readonly description_key: "plans.skills.search.description";
|
|
4032
|
+
readonly description: "Search the user's encrypted plans through a connected capable client. Do not use server-visible metadata as a private plan-content fallback.";
|
|
4033
|
+
readonly schema: {
|
|
4034
|
+
readonly type: "object";
|
|
4035
|
+
readonly properties: {
|
|
4036
|
+
readonly query: {
|
|
4037
|
+
readonly type: "string";
|
|
4038
|
+
readonly description: "Private plan text to search for on a connected client.";
|
|
4039
|
+
};
|
|
4040
|
+
};
|
|
4041
|
+
readonly required: readonly ["query"];
|
|
4042
|
+
};
|
|
4043
|
+
}, {
|
|
4044
|
+
readonly app_id: "projects";
|
|
4045
|
+
readonly skill_id: "create";
|
|
4046
|
+
readonly app_namespace_ts: "projects";
|
|
4047
|
+
readonly skill_method_ts: "create";
|
|
4048
|
+
readonly app_namespace_py: "projects";
|
|
4049
|
+
readonly skill_method_py: "create";
|
|
4050
|
+
readonly description_key: "projects.skills.create.description";
|
|
4051
|
+
readonly description: "Request creation of a user-visible project. Durable project content is client-side encrypted, so a capable connected client must apply the change.";
|
|
4052
|
+
readonly schema: {
|
|
4053
|
+
readonly type: "object";
|
|
4054
|
+
readonly properties: {
|
|
4055
|
+
readonly name: {
|
|
4056
|
+
readonly type: "string";
|
|
4057
|
+
readonly description: "Short user-facing project name.";
|
|
4058
|
+
};
|
|
4059
|
+
readonly description: {
|
|
4060
|
+
readonly type: "string";
|
|
4061
|
+
readonly description: "Optional project description.";
|
|
4062
|
+
};
|
|
4063
|
+
};
|
|
4064
|
+
readonly required: readonly ["name"];
|
|
4065
|
+
};
|
|
4066
|
+
}, {
|
|
4067
|
+
readonly app_id: "projects";
|
|
4068
|
+
readonly skill_id: "search";
|
|
4069
|
+
readonly app_namespace_ts: "projects";
|
|
4070
|
+
readonly skill_method_ts: "search";
|
|
4071
|
+
readonly app_namespace_py: "projects";
|
|
4072
|
+
readonly skill_method_py: "search";
|
|
4073
|
+
readonly description_key: "projects.skills.search.description";
|
|
4074
|
+
readonly description: "Search the user's encrypted projects through a connected capable client. Do not use server-visible metadata as a private project-content fallback.";
|
|
4075
|
+
readonly schema: {
|
|
4076
|
+
readonly type: "object";
|
|
4077
|
+
readonly properties: {
|
|
4078
|
+
readonly query: {
|
|
4079
|
+
readonly type: "string";
|
|
4080
|
+
readonly description: "Private project text to search for on a connected client.";
|
|
4081
|
+
};
|
|
4082
|
+
};
|
|
4083
|
+
readonly required: readonly ["query"];
|
|
4084
|
+
};
|
|
3994
4085
|
}, {
|
|
3995
4086
|
readonly app_id: "reminder";
|
|
3996
4087
|
readonly skill_id: "set-reminder";
|
|
@@ -4509,7 +4600,7 @@ declare const APP_SKILL_METADATA: readonly [{
|
|
|
4509
4600
|
readonly app_namespace_py: "travel";
|
|
4510
4601
|
readonly skill_method_py: "search_connections";
|
|
4511
4602
|
readonly description_key: "app_skills.travel.search_connections.description";
|
|
4512
|
-
readonly description: "Search for flight or train connections for a particular date with details (airlines/operators, times, stops, durations, prices). Use when user asks about flights, train connections, or travel between cities on a specific date. Set transport_methods to [\"airplane\"] for flights or [\"train\"] for trains. If the user names a provider, set providers to one or more of: google_flights, deutsche_bahn, flix. If no provider is specified, all providers for the selected transport method are
|
|
4603
|
+
readonly description: "Search for flight or train connections for a particular date with details (airlines/operators, times, stops, durations, prices). Use when user asks about flights, train connections, or travel between cities on a specific date. Set transport_methods to [\"airplane\"] for flights or [\"train\"] for trains. If the user names a provider, set providers to one or more of: google_flights, deutsche_bahn, flix, transitous. If no provider is specified, all providers for the selected transport method are searc";
|
|
4513
4604
|
readonly schema: {
|
|
4514
4605
|
readonly type: "object";
|
|
4515
4606
|
readonly properties: {
|
|
@@ -4552,10 +4643,10 @@ declare const APP_SKILL_METADATA: readonly [{
|
|
|
4552
4643
|
};
|
|
4553
4644
|
readonly providers: {
|
|
4554
4645
|
readonly type: "array";
|
|
4555
|
-
readonly description: "Optional provider IDs to search. Use \"google_flights\" for flights, \"deutsche_bahn\" for Deutsche Bahn / ICE / Bahn.de / Sparpreis train searches,
|
|
4646
|
+
readonly description: "Optional provider IDs to search. Use \"google_flights\" for flights, \"deutsche_bahn\" for Deutsche Bahn / ICE / Bahn.de / Sparpreis train searches, \"flix\" for FlixBus / FlixTrain, and \"transitous\" only for timetable-only public transport routing. If omitted, priced providers for the selected transport method are used, then filtered by countries if provided.\n";
|
|
4556
4647
|
readonly items: {
|
|
4557
4648
|
readonly type: "string";
|
|
4558
|
-
readonly enum: readonly ["google_flights", "deutsche_bahn", "flix"];
|
|
4649
|
+
readonly enum: readonly ["google_flights", "deutsche_bahn", "flix", "transitous"];
|
|
4559
4650
|
};
|
|
4560
4651
|
};
|
|
4561
4652
|
readonly countries: {
|
|
@@ -4608,6 +4699,26 @@ declare const APP_SKILL_METADATA: readonly [{
|
|
|
4608
4699
|
readonly type: "string";
|
|
4609
4700
|
};
|
|
4610
4701
|
};
|
|
4702
|
+
readonly owned_passes: {
|
|
4703
|
+
readonly type: "array";
|
|
4704
|
+
readonly description: "Fare or mobility pass IDs the traveller already owns, such as \"deutschland_ticket\". Use for pass-aware train pricing when the user says they have a Deutschlandticket.\n";
|
|
4705
|
+
readonly items: {
|
|
4706
|
+
readonly type: "string";
|
|
4707
|
+
};
|
|
4708
|
+
};
|
|
4709
|
+
readonly pass_only: {
|
|
4710
|
+
readonly type: "boolean";
|
|
4711
|
+
readonly description: "If true, prefer routes covered by owned fare passes when supported. Use with owned_passes [\"deutschland_ticket\"] for Deutschlandticket-only routing.\n";
|
|
4712
|
+
readonly default: false;
|
|
4713
|
+
};
|
|
4714
|
+
readonly rail_products: {
|
|
4715
|
+
readonly type: "array";
|
|
4716
|
+
readonly description: "Stable rail product filters for train searches. Use high_speed for ICE/high-speed, intercity for IC/EC, regional_express for IRE/RE-like services, regional for RB/local, s_bahn for S-Bahn, subway, tram, bus, or ferry.\n";
|
|
4717
|
+
readonly items: {
|
|
4718
|
+
readonly type: "string";
|
|
4719
|
+
readonly enum: readonly ["high_speed", "intercity", "regional_express", "regional", "s_bahn", "subway", "tram", "bus", "ferry"];
|
|
4720
|
+
};
|
|
4721
|
+
};
|
|
4611
4722
|
readonly min_departure_time: {
|
|
4612
4723
|
readonly type: "string";
|
|
4613
4724
|
readonly description: "Earliest acceptable local departure time in HH:MM format.";
|
|
@@ -5230,7 +5341,7 @@ declare class CodeAppSkills {
|
|
|
5230
5341
|
*/
|
|
5231
5342
|
getProjectOverview<T = unknown>(input: SkillInput, options?: AppSkillRunOptions): Promise<T>;
|
|
5232
5343
|
/**
|
|
5233
|
-
* Turn an uploaded screenshot into one standalone index.html code embed with inline CSS and optional inline JavaScript. Use this when the user asks to convert a screenshot, mockup, UI image, or app screen into HTML. Do not use remote image URLs;
|
|
5344
|
+
* Turn an uploaded screenshot into one standalone index.html code embed with inline CSS and optional inline JavaScript. Use this when the user asks to convert a screenshot, mockup, UI image, or app screen into HTML. Do not use remote image URLs; pass source_image with the uploaded image embed_ref in chat, or image_base64 for REST/API calls.
|
|
5234
5345
|
* Description key: app_skills.code.image_to_html.description
|
|
5235
5346
|
* Skill: code/image_to_html
|
|
5236
5347
|
*/
|
|
@@ -5444,6 +5555,38 @@ declare class PdfAppSkills {
|
|
|
5444
5555
|
*/
|
|
5445
5556
|
view<T = unknown>(input: SkillInput, options?: AppSkillRunOptions): Promise<T>;
|
|
5446
5557
|
}
|
|
5558
|
+
declare class PlansAppSkills {
|
|
5559
|
+
private readonly runSkill;
|
|
5560
|
+
constructor(runSkill: AppSkillRunner);
|
|
5561
|
+
/**
|
|
5562
|
+
* Request creation of a user-visible plan. Durable plan content is client-side encrypted, so a capable connected client must apply the change.
|
|
5563
|
+
* Description key: plans.skills.create.description
|
|
5564
|
+
* Skill: plans/create
|
|
5565
|
+
*/
|
|
5566
|
+
create<T = unknown>(input: SkillInput, options?: AppSkillRunOptions): Promise<T>;
|
|
5567
|
+
/**
|
|
5568
|
+
* Search the user's encrypted plans through a connected capable client. Do not use server-visible metadata as a private plan-content fallback.
|
|
5569
|
+
* Description key: plans.skills.search.description
|
|
5570
|
+
* Skill: plans/search
|
|
5571
|
+
*/
|
|
5572
|
+
search<T = unknown>(input: SkillInput, options?: AppSkillRunOptions): Promise<T>;
|
|
5573
|
+
}
|
|
5574
|
+
declare class ProjectsAppSkills {
|
|
5575
|
+
private readonly runSkill;
|
|
5576
|
+
constructor(runSkill: AppSkillRunner);
|
|
5577
|
+
/**
|
|
5578
|
+
* Request creation of a user-visible project. Durable project content is client-side encrypted, so a capable connected client must apply the change.
|
|
5579
|
+
* Description key: projects.skills.create.description
|
|
5580
|
+
* Skill: projects/create
|
|
5581
|
+
*/
|
|
5582
|
+
create<T = unknown>(input: SkillInput, options?: AppSkillRunOptions): Promise<T>;
|
|
5583
|
+
/**
|
|
5584
|
+
* Search the user's encrypted projects through a connected capable client. Do not use server-visible metadata as a private project-content fallback.
|
|
5585
|
+
* Description key: projects.skills.search.description
|
|
5586
|
+
* Skill: projects/search
|
|
5587
|
+
*/
|
|
5588
|
+
search<T = unknown>(input: SkillInput, options?: AppSkillRunOptions): Promise<T>;
|
|
5589
|
+
}
|
|
5447
5590
|
declare class ReminderAppSkills {
|
|
5448
5591
|
private readonly runSkill;
|
|
5449
5592
|
constructor(runSkill: AppSkillRunner);
|
|
@@ -5518,7 +5661,7 @@ declare class TravelAppSkills {
|
|
|
5518
5661
|
*/
|
|
5519
5662
|
getFlight<T = unknown>(input: SkillInput, options?: AppSkillRunOptions): Promise<T>;
|
|
5520
5663
|
/**
|
|
5521
|
-
* Search for flight or train connections for a particular date with details (airlines/operators, times, stops, durations, prices). Use when user asks about flights, train connections, or travel between cities on a specific date. Set transport_methods to ["airplane"] for flights or ["train"] for trains. If the user names a provider, set providers to one or more of: google_flights, deutsche_bahn, flix. If no provider is specified, all providers for the selected transport method are
|
|
5664
|
+
* Search for flight or train connections for a particular date with details (airlines/operators, times, stops, durations, prices). Use when user asks about flights, train connections, or travel between cities on a specific date. Set transport_methods to ["airplane"] for flights or ["train"] for trains. If the user names a provider, set providers to one or more of: google_flights, deutsche_bahn, flix, transitous. If no provider is specified, all providers for the selected transport method are searc
|
|
5522
5665
|
* Description key: app_skills.travel.search_connections.description
|
|
5523
5666
|
* Skill: travel/search_connections
|
|
5524
5667
|
*/
|
|
@@ -5628,6 +5771,8 @@ declare class GeneratedAppSkills {
|
|
|
5628
5771
|
readonly nutrition: NutritionAppSkills;
|
|
5629
5772
|
readonly openmates: OpenmatesAppSkills;
|
|
5630
5773
|
readonly pdf: PdfAppSkills;
|
|
5774
|
+
readonly plans: PlansAppSkills;
|
|
5775
|
+
readonly projects: ProjectsAppSkills;
|
|
5631
5776
|
readonly reminder: ReminderAppSkills;
|
|
5632
5777
|
readonly shopping: ShoppingAppSkills;
|
|
5633
5778
|
readonly socialMedia: SocialMediaAppSkills;
|
package/dist/index.js
CHANGED