openmates 0.11.0-alpha.32 → 0.11.0-alpha.34

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.
@@ -5254,6 +5254,9 @@ function printLogo() {
5254
5254
 
5255
5255
  // src/cli.ts
5256
5256
  import { createInterface as createInterface3 } from "readline/promises";
5257
+ import { realpathSync } from "fs";
5258
+ import { fileURLToPath } from "url";
5259
+ import { basename as basename3, dirname } from "path";
5257
5260
  import WebSocket2 from "ws";
5258
5261
 
5259
5262
  // ../secret-scanner/src/registry.ts
@@ -6460,8 +6463,11 @@ var str = (v) => typeof v === "string" && v.length > 0 ? v : null;
6460
6463
  var DIRECT_TYPES = /* @__PURE__ */ new Set([
6461
6464
  "code",
6462
6465
  "code-code",
6466
+ "code-application",
6467
+ "application",
6463
6468
  "docs-doc",
6464
6469
  "doc",
6470
+ "document",
6465
6471
  "sheets-sheet",
6466
6472
  "sheet",
6467
6473
  "pdf",
@@ -6484,8 +6490,11 @@ var DIRECT_TYPES = /* @__PURE__ */ new Set([
6484
6490
  var DIRECT_TYPE_LABELS = {
6485
6491
  "code": "code",
6486
6492
  "code-code": "code",
6493
+ "code-application": "application",
6494
+ "application": "application",
6487
6495
  "docs-doc": "document",
6488
6496
  "doc": "document",
6497
+ "document": "document",
6489
6498
  "sheets-sheet": "sheet",
6490
6499
  "sheet": "sheet",
6491
6500
  "pdf": "pdf",
@@ -7340,6 +7349,17 @@ function renderByDirectType(embed, c, ln) {
7340
7349
  }
7341
7350
  break;
7342
7351
  }
7352
+ case "code-application":
7353
+ case "application": {
7354
+ const name = str(c.name) ?? str(c.title) ?? "Generated application";
7355
+ const framework = str(c.framework) ?? "";
7356
+ const runtime = str(c.runtime) ?? "";
7357
+ ln(name);
7358
+ if (framework || runtime) {
7359
+ ln(`\x1B[2m${[framework, runtime].filter(Boolean).join(" ")}\x1B[0m`);
7360
+ }
7361
+ break;
7362
+ }
7343
7363
  case "docs-doc":
7344
7364
  case "doc": {
7345
7365
  const title = str(c.title) ?? str(c.filename) ?? "";
@@ -7348,6 +7368,13 @@ function renderByDirectType(embed, c, ln) {
7348
7368
  if (wordCount) ln(`\x1B[2m${wordCount} words\x1B[0m`);
7349
7369
  break;
7350
7370
  }
7371
+ case "document": {
7372
+ const title = str(c.title) ?? str(c.filename) ?? "";
7373
+ const wordCount = c.word_count;
7374
+ if (title) ln(title);
7375
+ if (wordCount) ln(`\x1B[2m${wordCount} words\x1B[0m`);
7376
+ break;
7377
+ }
7351
7378
  case "sheets-sheet":
7352
7379
  case "sheet": {
7353
7380
  const title = str(c.title) ?? "";
@@ -7486,12 +7513,37 @@ function renderDirectTypeFullscreen(embed, c) {
7486
7513
  if (code) console.log(code);
7487
7514
  break;
7488
7515
  }
7516
+ case "code-application":
7517
+ case "application": {
7518
+ const name = str(c.name) ?? str(c.title);
7519
+ const framework = str(c.framework);
7520
+ const runtime = str(c.runtime);
7521
+ if (name) process.stdout.write(`\x1B[1m${name}\x1B[0m
7522
+ `);
7523
+ if (framework) process.stdout.write(`\x1B[2mFramework:\x1B[0m ${framework}
7524
+ `);
7525
+ if (runtime) process.stdout.write(`\x1B[2mRuntime:\x1B[0m ${runtime}
7526
+ `);
7527
+ break;
7528
+ }
7489
7529
  case "docs-doc":
7490
7530
  case "doc": {
7491
7531
  const title = str(c.title);
7492
7532
  const html = str(c.html) ?? "";
7493
7533
  if (title) process.stdout.write(`\x1B[1m${title}\x1B[0m
7494
7534
 
7535
+ `);
7536
+ if (html) {
7537
+ const text = html.replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim();
7538
+ console.log(text);
7539
+ }
7540
+ break;
7541
+ }
7542
+ case "document": {
7543
+ const title = str(c.title);
7544
+ const html = str(c.html) ?? "";
7545
+ if (title) process.stdout.write(`\x1B[1m${title}\x1B[0m
7546
+
7495
7547
  `);
7496
7548
  if (html) {
7497
7549
  const text = html.replace(/<[^>]+>/g, " ").replace(/\s+/g, " ").trim();
@@ -11378,7 +11430,8 @@ skill_id: search`,
11378
11430
  metadata: {
11379
11431
  featured: true,
11380
11432
  order: 5,
11381
- app_skill_examples: ["web.search"]
11433
+ app_skill_examples: ["web.search"],
11434
+ content_embed_examples: ["web.website"]
11382
11435
  }
11383
11436
  };
11384
11437
 
@@ -13370,7 +13423,8 @@ var buildingMaintenanceEmailChat = {
13370
13423
  metadata: {
13371
13424
  featured: true,
13372
13425
  order: 8,
13373
- app_skill_examples: ["mail.search"]
13426
+ app_skill_examples: ["mail.search"],
13427
+ content_embed_examples: ["mail.email"]
13374
13428
  }
13375
13429
  };
13376
13430
 
@@ -16308,7 +16362,8 @@ skill_id: search`,
16308
16362
  metadata: {
16309
16363
  featured: true,
16310
16364
  order: 13,
16311
- app_skill_examples: ["videos.search"]
16365
+ app_skill_examples: ["videos.search"],
16366
+ content_embed_examples: ["videos.video"]
16312
16367
  }
16313
16368
  };
16314
16369
 
@@ -16667,7 +16722,8 @@ skill_id: search_repos`,
16667
16722
  metadata: {
16668
16723
  featured: true,
16669
16724
  order: 16,
16670
- app_skill_examples: ["code.search_repos"]
16725
+ app_skill_examples: ["code.search_repos"],
16726
+ content_embed_examples: ["code.repo", "sheets.sheet"]
16671
16727
  }
16672
16728
  };
16673
16729
 
@@ -16716,7 +16772,8 @@ var svelteRunesDocsChat = {
16716
16772
  metadata: {
16717
16773
  featured: true,
16718
16774
  order: 17,
16719
- app_skill_examples: ["code.get_docs"]
16775
+ app_skill_examples: ["code.get_docs"],
16776
+ content_embed_examples: ["code.code"]
16720
16777
  }
16721
16778
  };
16722
16779
 
@@ -19468,7 +19525,8 @@ line_count: 37`,
19468
19525
  ],
19469
19526
  metadata: {
19470
19527
  featured: true,
19471
- order: 2
19528
+ order: 2,
19529
+ content_embed_examples: ["code.application"]
19472
19530
  }
19473
19531
  };
19474
19532
 
@@ -19566,7 +19624,8 @@ var pdfViewPageLayoutChat = {
19566
19624
  metadata: {
19567
19625
  featured: true,
19568
19626
  order: 43,
19569
- app_skill_examples: ["pdf.view"]
19627
+ app_skill_examples: ["pdf.view"],
19628
+ content_embed_examples: ["pdf.pdf"]
19570
19629
  }
19571
19630
  };
19572
19631
 
@@ -19678,7 +19737,8 @@ var imageVectorizeOpenmatesHeaderChat = {
19678
19737
  metadata: {
19679
19738
  featured: true,
19680
19739
  order: 45,
19681
- app_skill_examples: ["images.vectorize"]
19740
+ app_skill_examples: ["images.vectorize"],
19741
+ content_embed_examples: ["images.image"]
19682
19742
  }
19683
19743
  };
19684
19744
 
@@ -19720,7 +19780,8 @@ var audioTranscribeVoiceNoteChat = {
19720
19780
  metadata: {
19721
19781
  featured: true,
19722
19782
  order: 46,
19723
- app_skill_examples: ["audio.transcribe"]
19783
+ app_skill_examples: ["audio.transcribe"],
19784
+ content_embed_examples: ["audio.recording"]
19724
19785
  }
19725
19786
  };
19726
19787
 
@@ -21593,21 +21654,6 @@ var memoryCodeCodingSetupChat = {
21593
21654
  }
21594
21655
  ],
21595
21656
  embeds: [
21596
- {
21597
- "embed_id": "7d40d5c4-1ee4-4aec-ba2a-d55734f769bc",
21598
- "type": "code",
21599
- "content": `type: code
21600
- app_id: code
21601
- skill_id: code
21602
- language: ""
21603
- code: "\\n\\n**Next Steps:**\\n* If you're using a specific language (like Python or C++), I can provide the exact **CLI debugger** flags for your setup.\\n* Would you like a template for a **reproduction shell script**?"
21604
- filename: null
21605
- embed_ref: code-7d40d5
21606
- status: finished
21607
- line_count: 5`,
21608
- "parent_embed_id": null,
21609
- "embed_ids": null
21610
- },
21611
21657
  {
21612
21658
  "embed_id": "2ff43224-0546-4f2f-ba70-3b305c2ed9f8",
21613
21659
  "type": "code",
@@ -22642,6 +22688,18 @@ var memoryMailWritingStylesChat = {
22642
22688
  "content": "example_chats.memory_mail_writing_styles.message_1",
22643
22689
  "created_at": 1781108210
22644
22690
  },
22691
+ {
22692
+ "id": "memory-mail-writing-styles-request",
22693
+ "role": "system",
22694
+ "content": '{"type":"app_settings_memories_request","user_message_id":"6391eb10-7e3e-41f7-81ff-91d58cf8db4e","request_id":"example-mail-writing-styles-request","requested_keys":["mail-writing_styles"],"categories":[{"appId":"mail","itemType":"writing_styles","entryCount":1}]}',
22695
+ "created_at": 1781108211
22696
+ },
22697
+ {
22698
+ "id": "memory-mail-writing-styles-response",
22699
+ "role": "system",
22700
+ "content": '{"type":"app_settings_memories_response","user_message_id":"6391eb10-7e3e-41f7-81ff-91d58cf8db4e","action":"included","categories":[{"appId":"mail","itemType":"writing_styles","entryCount":1}]}',
22701
+ "created_at": 1781108212
22702
+ },
22645
22703
  {
22646
22704
  "id": "e9d8de39-eba4-4cc6-a626-48c161f8b70d",
22647
22705
  "role": "assistant",
@@ -22654,8 +22712,17 @@ var memoryMailWritingStylesChat = {
22654
22712
  embeds: [
22655
22713
  {
22656
22714
  "embed_id": "45ef1cc5-abac-40cb-89ba-ee703709ce73",
22657
- "type": "code",
22658
- "content": 'type: code\napp_id: code\nskill_id: code\nlanguage: ""\ncode: "\\n\\n**Next Steps:**\\n* If you have a specific project in mind, tell me the name and I can fill in the placeholders.\\n* You can also view or edit your other [writing styles](/#settings/app_store/mail/settings_memories/writing_styles) at any time."\nfilename: null\nembed_ref: code-45ef1c\nstatus: finished\nline_count: 5',
22715
+ "type": "mail-email",
22716
+ "content": `type: mail-email
22717
+ app_id: mail
22718
+ skill_id: email
22719
+ receiver: "[Client Name]"
22720
+ subject: "Progress Update: [Project Name] | Friday, June 12"
22721
+ content: "Hi [Client Name],\\n\\nI hope you've had a productive week!\\n\\nWe've made some great progress on [Project Name] over the last few days. Specifically, we have successfully completed [Specific Task 1] and are currently finalizing the [Specific Task 2]. Everything is tracking well according to our timeline.\\n\\nNext steps:\\n- [Action Item 1] - Scheduled for completion by [Day]\\n- [Action Item 2] - Internal review of [Deliverable]\\n- [Action Item 3] - Follow-up meeting on [Date/Time]\\n\\nI'll keep you posted as these items progress. Have a wonderful weekend!"
22722
+ footer: "Best,\\nAlex"
22723
+ filename: Friday_Client_Update_Draft.eml
22724
+ embed_ref: mail-45ef1c
22725
+ status: finished`,
22659
22726
  "parent_embed_id": null,
22660
22727
  "embed_ids": null
22661
22728
  }
@@ -23895,6 +23962,251 @@ var memoryWebReadLaterChat = {
23895
23962
  }
23896
23963
  };
23897
23964
 
23965
+ // ../ui/src/demo_chats/data/example_chats/product-teaser-remotion-video.ts
23966
+ var remotionSource = `import React from "react";
23967
+ import { AbsoluteFill, Composition, Sequence, interpolate, useCurrentFrame } from "remotion";
23968
+
23969
+ const Scene: React.FC<{ label: string; accent: string }> = ({ label, accent }) => {
23970
+ const frame = useCurrentFrame();
23971
+ const opacity = interpolate(frame, [0, 18], [0, 1], { extrapolateRight: "clamp" });
23972
+ const y = interpolate(frame, [0, 45], [36, 0], { extrapolateRight: "clamp" });
23973
+
23974
+ return (
23975
+ <AbsoluteFill style={{
23976
+ alignItems: "center",
23977
+ justifyContent: "center",
23978
+ background: "linear-gradient(135deg, #07111f, #123f52)",
23979
+ color: "white",
23980
+ fontFamily: "Inter, sans-serif",
23981
+ }}>
23982
+ <div style={{
23983
+ border: \`2px solid \${accent}\`,
23984
+ borderRadius: 36,
23985
+ padding: "48px 72px",
23986
+ opacity,
23987
+ transform: \`translateY(\${y}px)\`,
23988
+ boxShadow: \`0 0 80px \${accent}55\`,
23989
+ }}>
23990
+ <h1 style={{ margin: 0, fontSize: 72 }}>{label}</h1>
23991
+ </div>
23992
+ </AbsoluteFill>
23993
+ );
23994
+ };
23995
+
23996
+ const LaunchTeaser: React.FC = () => (
23997
+ <AbsoluteFill>
23998
+ <Sequence from={0} durationInFrames={75}><Scene label="Private by default" accent="#7dd3fc" /></Sequence>
23999
+ <Sequence from={75} durationInFrames={75}><Scene label="Tools in one chat" accent="#86efac" /></Sequence>
24000
+ <Sequence from={150} durationInFrames={90}><Scene label="Launch with confidence" accent="#c4b5fd" /></Sequence>
24001
+ </AbsoluteFill>
24002
+ );
24003
+
24004
+ export const Root: React.FC = () => (
24005
+ <Composition id="LaunchTeaser" component={LaunchTeaser} durationInFrames={240} fps={30} width={1920} height={1080} />
24006
+ );`;
24007
+ var productTeaserRemotionVideoChat = {
24008
+ chat_id: "example-product-teaser-remotion-video",
24009
+ slug: "product-teaser-remotion-video",
24010
+ title: "Product Teaser Remotion Video",
24011
+ summary: "Create an editable Remotion source-backed launch teaser video from a short creative brief.",
24012
+ icon: "videos",
24013
+ category: "marketing_sales",
24014
+ keywords: ["Remotion", "rendered video", "product teaser", "motion graphics", "editable source"],
24015
+ follow_up_suggestions: [],
24016
+ messages: [
24017
+ {
24018
+ id: "0c9d7712-a144-43f4-9b85-899a1323aa01",
24019
+ role: "user",
24020
+ content: "Create a short Remotion launch teaser for a privacy-first AI workspace. Make it three clean scenes, 8 seconds total, with editable source code so I can rerender variants later.",
24021
+ created_at: 1781e6
24022
+ },
24023
+ {
24024
+ id: "fb1ea05d-6b40-4ef9-9fb6-3b843bb71028",
24025
+ role: "assistant",
24026
+ content: '```json\n{"type":"app_skill_use","embed_id":"e07d18e7-d814-4fa5-b13d-863d5560d012","app_id":"videos","skill_id":"create"}\n```\n\nI created a Remotion source-backed video with three scenes: privacy, unified tools, and launch confidence. The embed keeps the editable source attached, so you can inspect the timeline and rerender later.',
24027
+ created_at: 1781000072,
24028
+ category: "marketing_sales",
24029
+ model_name: "Gemini 3.1 Pro"
24030
+ }
24031
+ ],
24032
+ embeds: [
24033
+ {
24034
+ embed_id: "e07d18e7-d814-4fa5-b13d-863d5560d012",
24035
+ type: "app_skill_use",
24036
+ content: `app_id: videos
24037
+ skill_id: create
24038
+ type: remotion-video
24039
+ status: finished
24040
+ filename: LaunchTeaser.tsx
24041
+ summary: Editable three-scene product teaser video
24042
+ current_source_version: 1
24043
+ remotion_source: ${JSON.stringify(remotionSource)}
24044
+ render_metadata:
24045
+ renderer: remotion
24046
+ fps: 30
24047
+ width: 1920
24048
+ height: 1080
24049
+ duration_seconds: 8
24050
+ video_url: /store-examples/video-generate-1.mp4
24051
+ embed_ref: launch-teaser-e07d18`,
24052
+ parent_embed_id: null,
24053
+ embed_ids: null
24054
+ }
24055
+ ],
24056
+ metadata: {
24057
+ featured: true,
24058
+ order: 37,
24059
+ app_skill_examples: ["videos.create"],
24060
+ content_embed_examples: ["videos.rendered_video"]
24061
+ }
24062
+ };
24063
+
24064
+ // ../ui/src/demo_chats/data/example_chats/damped-sine-wave-plot.ts
24065
+ var dampedSineWavePlotChat = {
24066
+ chat_id: "example-damped-sine-wave-plot",
24067
+ slug: "damped-sine-wave-plot",
24068
+ title: "Damped Sine Wave Plot",
24069
+ summary: "Plot a damped sine wave and compare it with the positive and negative envelopes.",
24070
+ icon: "function",
24071
+ category: "science",
24072
+ keywords: ["math plot", "damped sine", "function graph", "envelope", "visualization"],
24073
+ follow_up_suggestions: [],
24074
+ messages: [
24075
+ {
24076
+ id: "08120f35-c67f-4da6-85f6-7621d14ae320",
24077
+ role: "user",
24078
+ content: "Plot a damped sine wave f(x) = exp(-0.2x) * sin(3x) from 0 to 12, and include the positive and negative exponential envelopes.",
24079
+ created_at: 1781000200
24080
+ },
24081
+ {
24082
+ id: "886d0941-5b50-4a76-a582-c7d9947db478",
24083
+ role: "assistant",
24084
+ content: '```json\n{"type":"math-plot","embed_id":"a7082ab8-8b27-4d43-b02d-351171c9a8cb","app_id":"math","skill_id":"plot"}\n```\n\nHere is the plot setup with the damped oscillation and both envelopes. Open the plot to inspect the full graph range.',
24085
+ created_at: 1781000261,
24086
+ category: "science",
24087
+ model_name: "Gemini 3.1 Pro"
24088
+ }
24089
+ ],
24090
+ embeds: [
24091
+ {
24092
+ embed_id: "a7082ab8-8b27-4d43-b02d-351171c9a8cb",
24093
+ type: "math-plot",
24094
+ content: 'type: math-plot\napp_id: math\nskill_id: plot\nplot_spec: "f(x) = exp(-0.2 * x) * sin(3 * x)\\ng(x) = exp(-0.2 * x)\\nh(x) = -exp(-0.2 * x)"\nembed_ref: damped-sine-a7082a\nstatus: finished',
24095
+ parent_embed_id: null,
24096
+ embed_ids: null
24097
+ }
24098
+ ],
24099
+ metadata: {
24100
+ featured: true,
24101
+ order: 38,
24102
+ content_embed_examples: ["math.plot"]
24103
+ }
24104
+ };
24105
+
24106
+ // ../ui/src/demo_chats/data/example_chats/berlin-central-station-map-location.ts
24107
+ var berlinCentralStationMapLocationChat = {
24108
+ chat_id: "example-berlin-central-station-map-location",
24109
+ slug: "berlin-central-station-map-location",
24110
+ title: "Berlin Central Station Map Location",
24111
+ summary: "Save Berlin Central Station as a reusable map location card with public address metadata.",
24112
+ icon: "maps",
24113
+ category: "general_knowledge",
24114
+ keywords: ["map location", "Berlin", "station", "travel planning", "public landmark"],
24115
+ follow_up_suggestions: [],
24116
+ messages: [
24117
+ {
24118
+ id: "e4096878-c418-4bb4-ab07-0379fa240810",
24119
+ role: "user",
24120
+ content: "Pin Berlin Central Station so I can refer to it while planning a train transfer.",
24121
+ created_at: 1781000400
24122
+ },
24123
+ {
24124
+ id: "7ea31c97-2ffe-4fe4-8d57-d63d2e4eb5ab",
24125
+ role: "assistant",
24126
+ content: '```json\n{"type":"maps","embed_id":"b66e28f5-a8e4-4d52-9cc5-5ef52c61d205","app_id":"maps","skill_id":"location"}\n```\n\nI pinned Berlin Central Station with its public address and coordinates so it can be reused in the trip plan.',
24127
+ created_at: 1781000468,
24128
+ category: "general_knowledge",
24129
+ model_name: "Gemini 3.1 Pro"
24130
+ }
24131
+ ],
24132
+ embeds: [
24133
+ {
24134
+ embed_id: "b66e28f5-a8e4-4d52-9cc5-5ef52c61d205",
24135
+ type: "maps",
24136
+ content: "type: maps\napp_id: maps\nskill_id: location\nname: Berlin Hauptbahnhof\naddress: Europaplatz 1, 10557 Berlin, Germany\nlocation_type: precise_location\nplace_type: railway\nlatitude: 52.525084\nlongitude: 13.369402\nembed_ref: berlin-hauptbahnhof-b66e28\nstatus: finished",
24137
+ parent_embed_id: null,
24138
+ embed_ids: null
24139
+ }
24140
+ ],
24141
+ metadata: {
24142
+ featured: true,
24143
+ order: 39,
24144
+ content_embed_examples: ["maps.location"]
24145
+ }
24146
+ };
24147
+
24148
+ // ../ui/src/demo_chats/data/example_chats/launch-readiness-checklist-doc.ts
24149
+ var launchReadinessChecklistDocChat = {
24150
+ chat_id: "example-launch-readiness-checklist-doc",
24151
+ slug: "launch-readiness-checklist-doc",
24152
+ title: "example_chats.launch_readiness_checklist_doc.title",
24153
+ summary: "example_chats.launch_readiness_checklist_doc.summary",
24154
+ icon: "docs",
24155
+ category: "business_development",
24156
+ keywords: ["document generation", "launch checklist", "docs embed", "product launch"],
24157
+ follow_up_suggestions: [],
24158
+ messages: [
24159
+ {
24160
+ "id": "f8cc3107-6bfa-41dd-8af0-9d2275ed6ff2",
24161
+ "role": "user",
24162
+ "content": "example_chats.launch_readiness_checklist_doc.message_1",
24163
+ "created_at": 1781209064
24164
+ },
24165
+ {
24166
+ "id": "53c6a860-062b-475d-bd47-cf8361b1a93d",
24167
+ "role": "assistant",
24168
+ "content": "example_chats.launch_readiness_checklist_doc.message_2",
24169
+ "created_at": 1781209083,
24170
+ "category": "general_knowledge",
24171
+ "model_name": "Gemini 3 Flash"
24172
+ }
24173
+ ],
24174
+ embeds: [
24175
+ {
24176
+ "embed_id": "a0f880c3-d136-41e5-8c37-bfe0f8d36c2e",
24177
+ "type": "document",
24178
+ "content": `type: document
24179
+ app_id: docs
24180
+ skill_id: document
24181
+ status: finished
24182
+ title: Launch Readiness Checklist
24183
+ filename: Launch_Readiness_Checklist.docx
24184
+ word_count: 84
24185
+ page_count: 1
24186
+ docx_model:
24187
+ title: Launch Readiness Checklist
24188
+ filename: Launch_Readiness_Checklist.docx
24189
+ blocks[3]:
24190
+ - type: heading
24191
+ level: 1
24192
+ text: Launch Readiness Checklist
24193
+ - type: paragraph
24194
+ runs[1]{text}:
24195
+ This checklist outlines the essential final steps required to ensure a smooth and successful product launch. Completing these tasks helps mitigate risks and aligns the team for the big day.
24196
+ - type: list
24197
+ ordered: false
24198
+ items[5]: Perform a final end-to-end QA sweep to catch any critical bugs or UX friction points.,"Verify that all marketing assets, including social posts and email campaigns, are approved and scheduled.",Conduct a briefing with the support team to ensure they have the necessary documentation to handle inquiries.,Execute a final server and infrastructure stress test to confirm the system can handle the expected traffic surge.,Host a final 'Go/No-Go' meeting with all stakeholders to confirm every department is ready for deployment.`,
24199
+ "parent_embed_id": null,
24200
+ "embed_ids": null
24201
+ }
24202
+ ],
24203
+ metadata: {
24204
+ featured: true,
24205
+ order: 80,
24206
+ content_embed_examples: ["docs.document"]
24207
+ }
24208
+ };
24209
+
23898
24210
  // ../ui/src/demo_chats/exampleChatData.ts
23899
24211
  var ALL_EXAMPLE_CHATS = [
23900
24212
  giganticAirplanesChat,
@@ -23974,7 +24286,11 @@ var ALL_EXAMPLE_CHATS = [
23974
24286
  memoryTvToWatchListChat,
23975
24287
  memoryVideosToWatchListChat,
23976
24288
  memoryWebBookmarksChat,
23977
- memoryWebReadLaterChat
24289
+ memoryWebReadLaterChat,
24290
+ productTeaserRemotionVideoChat,
24291
+ dampedSineWavePlotChat,
24292
+ berlinCentralStationMapLocationChat,
24293
+ launchReadinessChecklistDocChat
23978
24294
  ].sort((a, b) => a.metadata.order - b.metadata.order);
23979
24295
 
23980
24296
  // ../ui/src/i18n/locales/en.json
@@ -30881,6 +31197,20 @@ Taking control of a small, self-directed project is often the best antidote to t
30881
31197
  text: '```json\n{"type": "app_skill_use", "embed_id": "3a8114d9-0472-4627-9a73-8d331bef481f", "app_id": "images", "skill_id": "vectorize"}\n```\n\nI\'ll convert that image to SVG for you now.Your SVG vectorization is processing! The conversion is underway and I\'ll update you once it\'s complete. This typically takes a moment as the system traces the raster image and converts it into scalable vector paths.'
30882
31198
  }
30883
31199
  },
31200
+ launch_readiness_checklist_doc: {
31201
+ title: {
31202
+ text: "Launch readiness checklist document"
31203
+ },
31204
+ summary: {
31205
+ text: "See OpenMates create a formatted launch checklist as a document embed."
31206
+ },
31207
+ message_1: {
31208
+ text: "@mate:general_knowledge Create a short formatted document titled 'Launch Readiness Checklist' for a small product launch. Include a heading, a short intro paragraph, and a bullet list of exactly five practical launch tasks. Please create it as a document artifact, then summarize in one sentence what the document contains."
31209
+ },
31210
+ message_2: {
31211
+ text: '```json\n{"type": "document", "embed_id": "a0f880c3-d136-41e5-8c37-bfe0f8d36c2e"}\n```\n\n\n\nThis document provides a concise five-step framework to ensure all technical, marketing, and operational bases are covered before a small product goes live.\n\n**Next steps:**\n* Would you like me to expand any of these tasks into a more detailed [project plan](/#settings/apps/docs)?\n* I can also help you [generate an image](/#settings/apps/images) for your launch announcement if you have a theme in mind.'
31212
+ }
31213
+ },
30884
31214
  lh400_flight_status_check: {
30885
31215
  title: {
30886
31216
  text: "LH400 Flight Status Check"
@@ -30972,7 +31302,7 @@ Taking control of a small, self-directed project is often the best antidote to t
30972
31302
  text: "Use my saved communication style to help me plan a focused Monday morning work block. Keep it practical and short."
30973
31303
  },
30974
31304
  message_2: {
30975
- text: 'Based on your preference for a **Concise technical coach** style, here is a high-efficiency 3-hour [Monday](wiki:Monday) work block designed for maximum output.\n\n### Monday Morning Focus Block (08:00 \u2013 11:00)\n\n```json\n{"type": "sheet", "embed_id": "bb2f5aa1-d838-4d88-8c2e-d54ecf3cd069"}\n```\n\n\n### Practical Execution\n* **Environment:** Place your phone in another room to eliminate cognitive switching.\n* **Intervals:** Use the **[Pomodoro Technique](wiki:Pomodoro_Technique)** (50/10) if you find your focus waning.\n* **Priority:** Identify your "One Big Thing" the night before to avoid decision fatigue at 08:00.\n\nHow would you like to refine this block for your specific stack or project type?\n\n```interactive_question\n{\n "type": "choice",\n "id": "work_block_refinement",\n "multiple": false,\n "question": "What is your primary objective for this Monday block?",\n "options": [\n { "id": "coding", "text": "Deep Feature Development / Coding" },\n { "id": "architecture", "text": "System Design & Architecture" },\n { "id": "maintenance", "text": "Debugging & Maintenance" },\n { "id": "planning", "text": "Strategic Planning & Meetings" }\n ]\n}\n```json\n{"type": "code", "embed_id": "ae887bab-ca42-4988-b516-520596a74790"}\n```\n---\n*\u26A0\uFE0F This is educational information only and not professional psychological advice. For mental health concerns, please consult a qualified therapist or counselor. If you\'re experiencing a crisis, contact emergency services or a crisis hotline immediately.*'
31305
+ text: 'Based on your preference for a **Concise technical coach** style, here is a high-efficiency 3-hour [Monday](wiki:Monday) work block designed for maximum output.\n\n### Monday Morning Focus Block (08:00 \u2013 11:00)\n\n```json\n{"type": "sheet", "embed_id": "bb2f5aa1-d838-4d88-8c2e-d54ecf3cd069"}\n```\n\n\n### Practical Execution\n* **Environment:** Place your phone in another room to eliminate cognitive switching.\n* **Intervals:** Use the **[Pomodoro Technique](wiki:Pomodoro_Technique)** (50/10) if you find your focus waning.\n* **Priority:** Identify your "One Big Thing" the night before to avoid decision fatigue at 08:00.\n\nHow would you like to refine this block for your specific stack or project type?\n\n```interactive_question\n{\n "type": "choice",\n "id": "work_block_refinement",\n "multiple": false,\n "question": "What is your primary objective for this Monday block?",\n "options": [\n { "id": "coding", "text": "Deep Feature Development / Coding" },\n { "id": "architecture", "text": "System Design & Architecture" },\n { "id": "maintenance", "text": "Debugging & Maintenance" },\n { "id": "planning", "text": "Strategic Planning & Meetings" }\n ]\n}\n```\n\n```json\n{"type": "code", "embed_id": "ae887bab-ca42-4988-b516-520596a74790"}\n```\n---\n*\u26A0\uFE0F This is educational information only and not professional psychological advice. For mental health concerns, please consult a qualified therapist or counselor. If you\'re experiencing a crisis, contact emergency services or a crisis hotline immediately.*'
30976
31306
  }
30977
31307
  },
30978
31308
  memory_ai_learning_preferences: {
@@ -30986,7 +31316,7 @@ Taking control of a small, self-directed project is often the best antidote to t
30986
31316
  text: "Use my saved learning preference memory to design a 30-minute practice plan for understanding event loops."
30987
31317
  },
30988
31318
  message_2: {
30989
- text: '```json\n{"type": "app_skill_use", "embed_id": "11fe1e7d-d208-40d0-a3b5-eb739171f61a", "app_id": "web", "skill_id": "search", "query": "javascript event loop explained tiny examples exercises", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "bab635d3-5936-4d43-9224-4caea9090020", "app_id": "images", "skill_id": "search", "query": "javascript event loop diagram visual explanation", "provider": "Brave Search"}\n```\n\nSince you\'re a **hands-on learner** who prefers starting with tiny examples and immediate exercises, I\'ve designed a 30-minute "Sprints" plan for you. \n\nWe\u2019ll focus on the [JavaScript](wiki:JavaScript) [Event Loop](wiki:Event_loop), which is the engine that allows code to be non-blocking even though it\'s single-threaded.\n\n### \u23F1\uFE0F The 30-Minute Sprint Plan\n\n```json\n{"type": "sheet", "embed_id": "10eeaf07-1a2b-4a97-95b5-c6061babfcf8"}\n```\n\n\n---\n\n### Phase 1: The Call Stack (0-5 mins)\nThe [Call Stack](wiki:Call_stack) is like a stack of plates. JavaScript can only do one thing at a time, working from the top down.\n\n**Tiny Example:**\n```json\n{"type": "code", "embed_id": "070166e4-c07e-46dc-9e47-52c959c4ed54"}\n```\n\n\n*Logic: `Start` \u2192 `greet()` is called \u2192 `Hello!` \u2192 `greet()` finishes \u2192 `End`.*\n\n#### \u{1F6E0}\uFE0F Exercise 1: Quick Predict\nWhat is the exact output of this code?\n```json\n{"type": "code", "embed_id": "1b8ce624-5dbe-46ea-90d3-cbe74f16709c"}\n```\n\n\n\n---\n\n### Visual Aid: How it looks\nBefore we move to the async parts, keep this mental model in mind. The Event Loop\'s job is simply to look at the **Task Queues** and move things to the **Call Stack** only when it\'s empty.\n\n[!](embed:dev.to-wqJ)\n[!](embed:medium.com-gBU)\n[!](embed:rapidops.com-3RC)\n\n---\n\n### Phase 2: The Task Queue (5-15 mins)\nWhen you use `setTimeout`, the browser doesn\'t stop. It hands the timer to a "Web API" helper. Once the timer finishes, the helper puts the callback into the **Task Queue**.\n\n**Tiny Example:**\n```json\n{"type": "code", "embed_id": "4040d5e4-4969-4df4-9ac5-fe1104f60ece"}\n```\n\n\n*Output: `A`, `C`, `B`. Because the stack must be empty before the Event Loop picks up `B`.*\n\n#### \u{1F6E0}\uFE0F Exercise 2: The Delay Twist\nHow long does it take for `Message 2` to appear?\n```json\n{"type": "code", "embed_id": "e00b52a3-e7e2-4480-b553-3cecceac31da"}\n```\n\n\n\n---\n\n### Phase 3: The Microtask Queue (15-25 mins)\n[Promises](wiki:Futures_and_promises) go into a high-priority "Microtask Queue." The Event Loop checks this queue **after every single task** and empties it entirely before moving to the next regular Task (like `setTimeout`).\n\n**Tiny Example:**\n```json\n{"type": "code", "embed_id": "fb73017c-0898-4794-a052-6641e2a58b64"}\n```\n\n\n*Output: `Promise` then `Timer`. Promises always cut the line.*\n\n---\n\n### Phase 4: The Final Boss (25-30 mins)\nReady for the ultimate test? Try to predict this full sequence.\n\n```interactive_question\n{\n "type": "choice",\n "id": "event_loop_boss",\n "multiple": false,\n "question": "What is the correct output order for this code snippet?",\n "options": [\n { "id": "ans_1", "text": "Start, End, Promise, Timeout" },\n { "id": "ans_2", "text": "Start, Promise, End, Timeout" },\n { "id": "ans_3", "text": "Start, End, Timeout, Promise" }\n ]\n}\n```json\n{"type": "code", "embed_id": "43043711-cb34-4ebd-bacb-b7b3b5afb605"}\n```\n\njavascript:boss_challenge.js\nconsole.log("Start");\n\nsetTimeout(() => {\n console.log("Timeout");\n}, 0);\n\nPromise.resolve().then(() => {\n console.log("Promise");\n});\n\nconsole.log("End");\n```json\n{"type": "code", "embed_id": "f769cbb5-0ec8-49c3-8c70-0d4fef8488d6"}\n```'
31319
+ text: '```json\n{"type": "app_skill_use", "embed_id": "11fe1e7d-d208-40d0-a3b5-eb739171f61a", "app_id": "web", "skill_id": "search", "query": "javascript event loop explained tiny examples exercises", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "bab635d3-5936-4d43-9224-4caea9090020", "app_id": "images", "skill_id": "search", "query": "javascript event loop diagram visual explanation", "provider": "Brave Search"}\n```\n\nSince you\'re a **hands-on learner** who prefers starting with tiny examples and immediate exercises, I\'ve designed a 30-minute "Sprints" plan for you. \n\nWe\u2019ll focus on the [JavaScript](wiki:JavaScript) [Event Loop](wiki:Event_loop), which is the engine that allows code to be non-blocking even though it\'s single-threaded.\n\n### \u23F1\uFE0F The 30-Minute Sprint Plan\n\n```json\n{"type": "sheet", "embed_id": "10eeaf07-1a2b-4a97-95b5-c6061babfcf8"}\n```\n\n\n---\n\n### Phase 1: The Call Stack (0-5 mins)\nThe [Call Stack](wiki:Call_stack) is like a stack of plates. JavaScript can only do one thing at a time, working from the top down.\n\n**Tiny Example:**\n```json\n{"type": "code", "embed_id": "070166e4-c07e-46dc-9e47-52c959c4ed54"}\n```\n\n\n*Logic: `Start` \u2192 `greet()` is called \u2192 `Hello!` \u2192 `greet()` finishes \u2192 `End`.*\n\n#### \u{1F6E0}\uFE0F Exercise 1: Quick Predict\nWhat is the exact output of this code?\n```json\n{"type": "code", "embed_id": "1b8ce624-5dbe-46ea-90d3-cbe74f16709c"}\n```\n\n\n\n---\n\n### Visual Aid: How it looks\nBefore we move to the async parts, keep this mental model in mind. The Event Loop\'s job is simply to look at the **Task Queues** and move things to the **Call Stack** only when it\'s empty.\n\n[!](embed:dev.to-wqJ)\n[!](embed:medium.com-gBU)\n[!](embed:rapidops.com-3RC)\n\n---\n\n### Phase 2: The Task Queue (5-15 mins)\nWhen you use `setTimeout`, the browser doesn\'t stop. It hands the timer to a "Web API" helper. Once the timer finishes, the helper puts the callback into the **Task Queue**.\n\n**Tiny Example:**\n```json\n{"type": "code", "embed_id": "4040d5e4-4969-4df4-9ac5-fe1104f60ece"}\n```\n\n\n*Output: `A`, `C`, `B`. Because the stack must be empty before the Event Loop picks up `B`.*\n\n#### \u{1F6E0}\uFE0F Exercise 2: The Delay Twist\nHow long does it take for `Message 2` to appear?\n\n\n\n---\n\n### Phase 3: The Microtask Queue (15-25 mins)\n[Promises](wiki:Futures_and_promises) go into a high-priority "Microtask Queue." The Event Loop checks this queue **after every single task** and empties it entirely before moving to the next regular Task (like `setTimeout`).\n\n**Tiny Example:**\n\n\n*Output: `Promise` then `Timer`. Promises always cut the line.*\n\n---\n\n### Phase 4: The Final Boss (25-30 mins)\nReady for the ultimate test? Try to predict this full sequence.\n\n```interactive_question\n{\n "type": "choice",\n "id": "event_loop_boss",\n "multiple": false,\n "question": "What is the correct output order for this code snippet?",\n "options": [\n { "id": "ans_1", "text": "Start, End, Promise, Timeout" },\n { "id": "ans_2", "text": "Start, Promise, End, Timeout" },\n { "id": "ans_3", "text": "Start, End, Timeout, Promise" }\n ]\n}\n```\n\njavascript:boss_challenge.js\nconsole.log("Start");\n\nsetTimeout(() => {\n console.log("Timeout");\n}, 0);\n\nPromise.resolve().then(() => {\n console.log("Promise");\n});\n\nconsole.log("End");'
30990
31320
  }
30991
31321
  },
30992
31322
  memory_books_currently_reading: {
@@ -31000,7 +31330,7 @@ Taking control of a small, self-directed project is often the best antidote to t
31000
31330
  text: "Use my saved currently reading list to make a simple one-week reading plan."
31001
31331
  },
31002
31332
  message_2: {
31003
- text: '```json\n{"type": "app_skill_use", "embed_id": "8b25a013-73cc-4132-b07e-1fbd183f3d87", "app_id": "web", "skill_id": "search", "query": "Project Hail Mary Andy Weir page count", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "144dff1f-cfec-4f66-b4af-4d6e448870dd", "app_id": "images", "skill_id": "search", "query": "Project Hail Mary Andy Weir book cover", "provider": "Brave Search"}\n```\n\nBased on your progress with [Project Hail Mary](wiki:Project_Hail_Mary) by [Andy Weir](wiki:Andy_Weir), I\'ve put together a one-week reading plan for you. \n\nAccording to your [settings](/#settings/apps/books), you started reading on June 1st and have been maintaining a steady pace of about 25 pages per night. With the book being approximately 476 pages long, you\u2019ve likely reached around page 250 by tonight.\n\n[!](embed:etsy.com-IPh)\n[!](embed:ebay.com-EHq)\n[!](embed:ebay.com-VmR)\n\n### Your One-Week Reading Plan\n\nThis plan keeps you at your preferred pace of 25 pages per night, allowing you to enjoy the story without rushing.\n\n```json\n{"type": "sheet", "embed_id": "62b3b767-f4b2-400e-8b6a-fe26f1b42f45"}\n```\n\n\nBy the end of this plan on June 17th, you\'ll have about 51 pages left, meaning you\'ll be on track to finish the book in just two more nights!\n\n```json\n{"type": "document", "embed_id": "1009ccee-4ab3-4865-82ab-41969e1cd130"}\n```\n\n\n\n```interactive_question\n{\n "type": "choice",\n "id": "reading_plan_adjustment",\n "multiple": false,\n "question": "How does this pace feel for the next week?",\n "options": [\n { "id": "perfect", "text": "Perfect, keep it as is." },\n { "id": "faster", "text": "I\'d like to finish sooner (increase pace)." },\n { "id": "slower", "text": "I need to slow down a bit." }\n ]\n}\n```json\n{"type": "code", "embed_id": "8616b59f-f5a4-4787-8a7b-ad093020ba31"}\n```'
31333
+ text: '```json\n{"type": "app_skill_use", "embed_id": "8b25a013-73cc-4132-b07e-1fbd183f3d87", "app_id": "web", "skill_id": "search", "query": "Project Hail Mary Andy Weir page count", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "144dff1f-cfec-4f66-b4af-4d6e448870dd", "app_id": "images", "skill_id": "search", "query": "Project Hail Mary Andy Weir book cover", "provider": "Brave Search"}\n```\n\nBased on your progress with [Project Hail Mary](wiki:Project_Hail_Mary) by [Andy Weir](wiki:Andy_Weir), I\'ve put together a one-week reading plan for you. \n\nAccording to your [settings](/#settings/apps/books), you started reading on June 1st and have been maintaining a steady pace of about 25 pages per night. With the book being approximately 476 pages long, you\u2019ve likely reached around page 250 by tonight.\n\n[!](embed:etsy.com-IPh)\n[!](embed:ebay.com-EHq)\n[!](embed:ebay.com-VmR)\n\n### Your One-Week Reading Plan\n\nThis plan keeps you at your preferred pace of 25 pages per night, allowing you to enjoy the story without rushing.\n\n```json\n{"type": "sheet", "embed_id": "62b3b767-f4b2-400e-8b6a-fe26f1b42f45"}\n```\n\n\nBy the end of this plan on June 17th, you\'ll have about 51 pages left, meaning you\'ll be on track to finish the book in just two more nights!\n\n```json\n{"type": "document", "embed_id": "1009ccee-4ab3-4865-82ab-41969e1cd130"}\n```\n\n\n\n```interactive_question\n{\n "type": "choice",\n "id": "reading_plan_adjustment",\n "multiple": false,\n "question": "How does this pace feel for the next week?",\n "options": [\n { "id": "perfect", "text": "Perfect, keep it as is." },\n { "id": "faster", "text": "I\'d like to finish sooner (increase pace)." },\n { "id": "slower", "text": "I need to slow down a bit." }\n ]\n}\n```'
31004
31334
  }
31005
31335
  },
31006
31336
  memory_books_favorite_books: {
@@ -31014,7 +31344,7 @@ Taking control of a small, self-directed project is often the best antidote to t
31014
31344
  text: "Use my saved favorite books to recommend one novel I should read next and explain why."
31015
31345
  },
31016
31346
  message_2: {
31017
- text: '```json\n{"type": "app_skill_use", "embed_id": "77343df3-6d51-461d-99e3-89f7dadc0e55", "app_id": "web", "skill_id": "search", "query": "books similar to The Left Hand of Darkness philosophical science fiction humane political themes", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "09d53ec8-9c3b-4b2e-b7ce-7f182af1653f", "app_id": "images", "skill_id": "search", "query": "The Dispossessed Ursula K. Le Guin book cover", "provider": "Brave Search"}\n```\n\nBased on your appreciation for **[The Left Hand of Darkness](wiki:The_Left_Hand_of_Darkness)** and your interest in "reflective worldbuilding and humane political themes," I highly recommend you read **[The Dispossessed](wiki:The_Dispossessed)** by [Ursula K. Le Guin](wiki:Ursula_K._Le_Guin).\n\n### Why this novel?\n*The Dispossessed* is often considered the "other half" of Le Guin\'s greatest contributions to the **[Hainish Cycle](wiki:Hainish_Cycle)**. It perfectly aligns with the qualities you noted in your [favorite books](/#settings/app_store/books/settings_memories/favorite_books):\n\n* **Humane Political Themes:** The book is subtitled "An Ambiguous Utopia." It follows a physicist named Shevek as he travels between the twin worlds of Anarres (an anarchist society) and Urras (a world divided into capitalist and authoritarian nations). It explores the complexities of freedom, property, and community without resorting to easy answers.\n* **Reflective Worldbuilding:** Much like the ice-world of Gethen, the arid world of Anarres is built with incredible anthropological detail. Every social custom and linguistic quirk is rooted in the planet\'s harsh environment and the revolutionary ideals of its inhabitants.\n* **Philosophical Depth:** It moves beyond simple "sci-fi" to ask deep questions about how we treat one another and how the structures of our society limit or enable human flourishing.\n\n[!](embed:ursulakleguin.com-GXg)\n\nIf you\'ve already read *The Dispossessed* or are looking for something by a different author that hits similar notes, **[A Memory Called Empire](wiki:A_Memory_Called_Empire)** by Arkady Martine is a fantastic modern alternative that focuses on the "humane politics" of cultural assimilation and memory.\n\n***\n\n**Have you read any other books in the Hainish Cycle yet?**\n\n```interactive_question\n{\n "type": "choice",\n "id": "reading_history",\n "multiple": false,\n "question": "Which of these best describes your reading history with Le Guin?",\n "options": [\n { "id": "only_left_hand", "text": "I\'ve only read \'The Left Hand of Darkness\' so far." },\n { "id": "read_dispossessed", "text": "I\'ve already read \'The Dispossessed\'!" },\n { "id": "different_author", "text": "I\'d prefer a recommendation from a different author." }\n ]\n}\n```json\n{"type": "code", "embed_id": "0c9e6a00-8fca-4ff1-9d6d-6f8229172d2f"}\n```'
31347
+ text: '```json\n{"type": "app_skill_use", "embed_id": "77343df3-6d51-461d-99e3-89f7dadc0e55", "app_id": "web", "skill_id": "search", "query": "books similar to The Left Hand of Darkness philosophical science fiction humane political themes", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "09d53ec8-9c3b-4b2e-b7ce-7f182af1653f", "app_id": "images", "skill_id": "search", "query": "The Dispossessed Ursula K. Le Guin book cover", "provider": "Brave Search"}\n```\n\nBased on your appreciation for **[The Left Hand of Darkness](wiki:The_Left_Hand_of_Darkness)** and your interest in "reflective worldbuilding and humane political themes," I highly recommend you read **[The Dispossessed](wiki:The_Dispossessed)** by [Ursula K. Le Guin](wiki:Ursula_K._Le_Guin).\n\n### Why this novel?\n*The Dispossessed* is often considered the "other half" of Le Guin\'s greatest contributions to the **[Hainish Cycle](wiki:Hainish_Cycle)**. It perfectly aligns with the qualities you noted in your [favorite books](/#settings/app_store/books/settings_memories/favorite_books):\n\n* **Humane Political Themes:** The book is subtitled "An Ambiguous Utopia." It follows a physicist named Shevek as he travels between the twin worlds of Anarres (an anarchist society) and Urras (a world divided into capitalist and authoritarian nations). It explores the complexities of freedom, property, and community without resorting to easy answers.\n* **Reflective Worldbuilding:** Much like the ice-world of Gethen, the arid world of Anarres is built with incredible anthropological detail. Every social custom and linguistic quirk is rooted in the planet\'s harsh environment and the revolutionary ideals of its inhabitants.\n* **Philosophical Depth:** It moves beyond simple "sci-fi" to ask deep questions about how we treat one another and how the structures of our society limit or enable human flourishing.\n\n[!](embed:ursulakleguin.com-GXg)\n\nIf you\'ve already read *The Dispossessed* or are looking for something by a different author that hits similar notes, **[A Memory Called Empire](wiki:A_Memory_Called_Empire)** by Arkady Martine is a fantastic modern alternative that focuses on the "humane politics" of cultural assimilation and memory.\n\n***\n\n**Have you read any other books in the Hainish Cycle yet?**\n\n```interactive_question\n{\n "type": "choice",\n "id": "reading_history",\n "multiple": false,\n "question": "Which of these best describes your reading history with Le Guin?",\n "options": [\n { "id": "only_left_hand", "text": "I\'ve only read \'The Left Hand of Darkness\' so far." },\n { "id": "read_dispossessed", "text": "I\'ve already read \'The Dispossessed\'!" },\n { "id": "different_author", "text": "I\'d prefer a recommendation from a different author." }\n ]\n}\n```\n\n```json\n{"type": "code", "embed_id": "0c9e6a00-8fca-4ff1-9d6d-6f8229172d2f"}\n```'
31018
31348
  }
31019
31349
  },
31020
31350
  memory_books_to_read_list: {
@@ -31042,7 +31372,7 @@ Taking control of a small, self-directed project is often the best antidote to t
31042
31372
  text: "Use my saved coding setup memory to suggest how I should structure a debugging session tonight."
31043
31373
  },
31044
31374
  message_2: {
31045
- text: 'Based on your [coding setup preferences](/#settings/app_store/code/settings_memories/coding_setup) for a keyboard-first, **terminal-based** workflow with **low AI intervention**, here is a structured approach for your debugging session tonight. \n\nSince you prefer **explicit commands** and **small diffs** you can review manually, this workflow focuses on local isolation and CLI-native tools.\n\n### 1. State Isolation & Clean Slate\nBefore changing any code, ensure you are working in a clean environment to make those "small diffs" meaningful.\n* **Create a dedicated branch:** `git checkout -b debug/session-name`\n* **Clear artifacts:** Run your project\'s clean command (e.g., `make clean`, `npm cache clean`, or `cargo clean`) to ensure you aren\'t chasing ghosts in compiled binaries.\n\n### 2. The "Single-Command" Reproduction\nIn line with your shell-first preference, your first goal is to reduce the bug to a single [shell](wiki:Shell_(computing)) command or a minimal script.\n* **Draft a reproduction script:** Create a `repro.sh` that sets up the environment and triggers the failure.\n* **Automate the test:** Use `watch` or a simple loop to run this command as you make changes:\n ```json\n{"type": "code", "embed_id": "2ff43224-0546-4f2f-ba70-3b305c2ed9f8"}\n```\n\n\n\n### 3. Explicit Trace & Observation\nSince you prefer a **low AI level**, rely on explicit [debugging](wiki:Debugging) and tracing tools rather than speculative fixes:\n* **CLI Debuggers:** Use `gdb`, `lldb`, `pdb`, or `node inspect` depending on your language.\n* **System Tracing:** If the bug involves file I/O or networking, use `strace` (Linux) or `dtrace` (macOS) to see exactly what the process is doing at the kernel level.\n* **Grep-driven search:** Use `rg` (ripgrep) to explicitly trace data flow through your codebase from the terminal.\n\n### 4. Incremental Patching & Diff Review\nTo honor your preference for **small, reviewable diffs**:\n* **Atomic Changes:** Make exactly one change at a time.\n* **Review before Commit:** Use `git diff --color-words` to see exactly what changed in the terminal.\n* **The "Check-in" Loop:**\n 1. Modify code in your [text editor](wiki:Text_editor) (likely Vim/Emacs/Nano given your keyboard-first preference).\n 2. Run `./repro.sh`.\n 3. If successful, commit the focused change. If it fails, inspect `git diff`, revert only the specific hunks you decide to abandon, and try a different hypothesis.\n\n### 5. Final Verification\nOnce the bug is squashed, convert your `repro.sh` into a permanent [unit test](wiki:Unit_testing) to prevent [regression](wiki:Software_regression).\n\n***\n\nTo help me give you more specific commands or tool suggestions, tell me what kind of issue you are tackling tonight: logic error, crash, environment/dependency issue, or performance bottleneck.\n\n```json\n{"type": "code", "embed_id": "7d40d5c4-1ee4-4aec-ba2a-d55734f769bc"}\n```'
31375
+ text: 'Based on your [coding setup preferences](/#settings/app_store/code/settings_memories/coding_setup) for a keyboard-first, **terminal-based** workflow with **low AI intervention**, here is a structured approach for your debugging session tonight. \n\nSince you prefer **explicit commands** and **small diffs** you can review manually, this workflow focuses on local isolation and CLI-native tools.\n\n### 1. State Isolation & Clean Slate\nBefore changing any code, ensure you are working in a clean environment to make those "small diffs" meaningful.\n* **Create a dedicated branch:** `git checkout -b debug/session-name`\n* **Clear artifacts:** Run your project\'s clean command (e.g., `make clean`, `npm cache clean`, or `cargo clean`) to ensure you aren\'t chasing ghosts in compiled binaries.\n\n### 2. The "Single-Command" Reproduction\nIn line with your shell-first preference, your first goal is to reduce the bug to a single [shell](wiki:Shell_(computing)) command or a minimal script.\n* **Draft a reproduction script:** Create a `repro.sh` that sets up the environment and triggers the failure.\n* **Automate the test:** Use `watch` or a simple loop to run this command as you make changes:\n ```json\n{"type": "code", "embed_id": "2ff43224-0546-4f2f-ba70-3b305c2ed9f8"}\n```\n\n\n\n### 3. Explicit Trace & Observation\nSince you prefer a **low AI level**, rely on explicit [debugging](wiki:Debugging) and tracing tools rather than speculative fixes:\n* **CLI Debuggers:** Use `gdb`, `lldb`, `pdb`, or `node inspect` depending on your language.\n* **System Tracing:** If the bug involves file I/O or networking, use `strace` (Linux) or `dtrace` (macOS) to see exactly what the process is doing at the kernel level.\n* **Grep-driven search:** Use `rg` (ripgrep) to explicitly trace data flow through your codebase from the terminal.\n\n### 4. Incremental Patching & Diff Review\nTo honor your preference for **small, reviewable diffs**:\n* **Atomic Changes:** Make exactly one change at a time.\n* **Review before Commit:** Use `git diff --color-words` to see exactly what changed in the terminal.\n* **The "Check-in" Loop:**\n 1. Modify code in your [text editor](wiki:Text_editor) (likely Vim/Emacs/Nano given your keyboard-first preference).\n 2. Run `./repro.sh`.\n 3. If successful, commit the focused change. If it fails, inspect `git diff`, revert only the specific hunks you decide to abandon, and try a different hypothesis.\n\n### 5. Final Verification\nOnce the bug is squashed, convert your `repro.sh` into a permanent [unit test](wiki:Unit_testing) to prevent [regression](wiki:Software_regression).\n\n***\n\nTo help me give you more specific commands or tool suggestions, tell me what kind of issue you are tackling tonight: logic error, crash, environment/dependency issue, or performance bottleneck.'
31046
31376
  }
31047
31377
  },
31048
31378
  memory_code_preferred_tech: {
@@ -31056,7 +31386,7 @@ Taking control of a small, self-directed project is often the best antidote to t
31056
31386
  text: "Use my saved coding preferences to suggest a starter stack for a small personal dashboard I can build this weekend."
31057
31387
  },
31058
31388
  message_2: {
31059
- text: '```json\n{"type": "app_skill_use", "embed_id": "9f338f1d-cb24-4e71-9564-8c2c9c28be04", "app_id": "code", "skill_id": "get_docs"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "9e12f67f-29ec-4018-8388-b943ad039eac", "app_id": "code", "skill_id": "search_repos", "query": "sveltekit rust wasm starter"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "2c509338-f661-4e83-9fa5-6e1d4a28138e", "app_id": "web", "skill_id": "search", "query": "best lightweight database for sveltekit weekend project 2026", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "94bba0e8-c37a-4959-873d-52699324b92d", "app_id": "web", "skill_id": "search", "query": "sveltekit keyboard navigation library", "provider": "Brave"}\n```\n\nSince you are already advanced in [SvelteKit](wiki:Svelte) and mentioned a desire to learn [WebAssembly](wiki:WebAssembly) with [Rust](wiki:Rust), I\'ve designed a "Keyboard-First Local Stack" that fits your terminal-driven workflow and preference for small, reviewable diffs.\n\nThis stack avoids heavy cloud dependencies, keeping everything local to your machine for maximum speed and simplicity this weekend.\n\n### \u{1F6E0}\uFE0F The "Local-First Dash" Stack\n\n```json\n{"type": "sheet", "embed_id": "46496cdc-9cfa-4273-9886-d85b7ac1a639"}\n```\n\n\n### \u{1F680} Getting Started (Terminal Workflow)\n\n1. **Initialize SvelteKit:**\n ```json\n{"type": "code", "embed_id": "3df3a44e-95fb-4570-8a16-8498d65a90aa"}\n```\n\n\n2. **Add Rust/WASM Support:**\n Install `wasm-pack` globally and use the [Vite plugin](embed:rust-wasm-sveltekit-cJc) to automatically compile Rust on save:\n ```json\n{"type": "code", "embed_id": "ce0bb0ab-3cb3-4299-95be-e0a29e09b314"}\n```\n\n\n3. **Local Database:**\n Since you prefer keyboard-first, I suggest using `better-sqlite3`. It\u2019s synchronous and works beautifully in SvelteKit `+server.js` or `+page.server.js` routes without complex async overhead.\n\n### \u{1F4A1} Weekend Project Idea: "Garden Engine"\nSince you already have the Garden Ledger project, you could build this dashboard as a **"Garden Prediction Engine."**\n* **Rust Logic:** Use Rust to calculate harvest dates based on [GDD (Growing Degree Days)](wiki:Growing_degree-day) formulas.\n* **Wasm:** Pass your garden history from the Ledger into the Rust module for high-speed simulation.\n* **Keyboard:** Bind `j`/`k` for navigation and `n` for "New Entry" to match your terminal habits.\n\n### \u2753 Refine Your Weekend Goal\nTo help you further, which "vibe" are you going for this weekend?\n\n```interactive_question\n{\n "type": "choice",\n "id": "dash_theme_choice",\n "multiple": false,\n "question": "What kind of dashboard are we building?",\n "options": [\n { "id": "garden_extension", "text": "A \'Pro\' extension for your Garden Ledger (Stats & Predictions)" },\n { "id": "system_monitor", "text": "A Local System/Home Monitor (using Rust to poll system APIs)" },\n { "id": "dev_productivity", "text": "A Keyboard-Centric \'Command Center\' for your active git repos" }\n ]\n}\n```json\n{"type": "code", "embed_id": "c1967175-bd5a-445c-9181-8ce5c5e0013a"}\n```'
31389
+ text: '```json\n{"type": "app_skill_use", "embed_id": "9f338f1d-cb24-4e71-9564-8c2c9c28be04", "app_id": "code", "skill_id": "get_docs"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "9e12f67f-29ec-4018-8388-b943ad039eac", "app_id": "code", "skill_id": "search_repos", "query": "sveltekit rust wasm starter"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "2c509338-f661-4e83-9fa5-6e1d4a28138e", "app_id": "web", "skill_id": "search", "query": "best lightweight database for sveltekit weekend project 2026", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "94bba0e8-c37a-4959-873d-52699324b92d", "app_id": "web", "skill_id": "search", "query": "sveltekit keyboard navigation library", "provider": "Brave"}\n```\n\nSince you are already advanced in [SvelteKit](wiki:Svelte) and mentioned a desire to learn [WebAssembly](wiki:WebAssembly) with [Rust](wiki:Rust), I\'ve designed a "Keyboard-First Local Stack" that fits your terminal-driven workflow and preference for small, reviewable diffs.\n\nThis stack avoids heavy cloud dependencies, keeping everything local to your machine for maximum speed and simplicity this weekend.\n\n### \u{1F6E0}\uFE0F The "Local-First Dash" Stack\n\n```json\n{"type": "sheet", "embed_id": "46496cdc-9cfa-4273-9886-d85b7ac1a639"}\n```\n\n\n### \u{1F680} Getting Started (Terminal Workflow)\n\n1. **Initialize SvelteKit:**\n\n\n2. **Add Rust/WASM Support:**\n Install `wasm-pack` globally and use the [Vite plugin](embed:rust-wasm-sveltekit-cJc) to automatically compile Rust on save:\n\n\n3. **Local Database:**\n Since you prefer keyboard-first, I suggest using `better-sqlite3`. It\u2019s synchronous and works beautifully in SvelteKit `+server.js` or `+page.server.js` routes without complex async overhead.\n\n### \u{1F4A1} Weekend Project Idea: "Garden Engine"\nSince you already have the Garden Ledger project, you could build this dashboard as a **"Garden Prediction Engine."**\n* **Rust Logic:** Use Rust to calculate harvest dates based on [GDD (Growing Degree Days)](wiki:Growing_degree-day) formulas.\n* **Wasm:** Pass your garden history from the Ledger into the Rust module for high-speed simulation.\n* **Keyboard:** Bind `j`/`k` for navigation and `n` for "New Entry" to match your terminal habits.\n\n### \u2753 Refine Your Weekend Goal\nTo help you further, which "vibe" are you going for this weekend?\n\n```interactive_question\n{\n "type": "choice",\n "id": "dash_theme_choice",\n "multiple": false,\n "question": "What kind of dashboard are we building?",\n "options": [\n { "id": "garden_extension", "text": "A \'Pro\' extension for your Garden Ledger (Stats & Predictions)" },\n { "id": "system_monitor", "text": "A Local System/Home Monitor (using Rust to poll system APIs)" },\n { "id": "dev_productivity", "text": "A Keyboard-Centric \'Command Center\' for your active git repos" }\n ]\n}\n```'
31060
31390
  }
31061
31391
  },
31062
31392
  memory_code_projects: {
@@ -31129,7 +31459,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31129
31459
  text: "Use my saved events memory to help me prepare a practical checklist for upcoming events."
31130
31460
  },
31131
31461
  message_2: {
31132
- text: '```json\n{"type": "app_skill_use", "embed_id": "2724b6d3-f9dd-4a39-85e7-db3bfb25a20f", "app_id": "web", "skill_id": "search", "query": "Berlin AI Builders Meetup Factory Berlin June 18 2026", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "5283378f-3f72-4a5e-99ce-e5cdcc204c6e", "app_id": "web", "skill_id": "search", "query": "Berlin AI Builders Meetup Kreuzberg July 3 2026", "provider": "Brave"}\n```\n\nBased on your [saved events](/#settings/apps/events), you have two key gatherings coming up in [Berlin](wiki:Berlin) that focus on the [AI](wiki:Artificial_intelligence) builder community. Since the first one at Factory Berlin is just over a week away, I\u2019ve put together a structured preparation guide to help you make the most of these opportunities.\n\n```json\n{"type": "document", "embed_id": "538da4c5-982a-45f5-8f62-593278470ec5"}\n```\n\n\n\n### Next Steps for You\nFor the event on June 18th, it might be helpful to have your "Builder Intro" ready so you can jump straight into technical conversations without overthinking. For the July 3rd event, the "demo idea" is the main focus.\n\nWould you like to brainstorm that demo idea now, or would you prefer to refine your technical intro for the first meetup?\n\n```interactive_question\n{\n "type": "choice",\n "id": "event_prep_focus",\n "multiple": false,\n "question": "Which preparation task should we tackle first?",\n "options": [\n { "id": "intro", "text": "Draft my 30-second Builder Intro (June 18th focus)" },\n { "id": "demo", "text": "Brainstorm/Refine my Demo Idea (July 3rd focus)" },\n { "id": "logistics", "text": "Find specific directions and venue details for Factory Berlin" }\n ]\n}\n```json\n{"type": "code", "embed_id": "af22a018-88e1-40b1-8ac2-da0bd5ed9f05"}\n```\n---\n*\u26A0\uFE0F This is educational information only and not professional psychological advice. For mental health concerns, please consult a qualified therapist or counselor. If you\'re experiencing a crisis, contact emergency services or a crisis hotline immediately.*'
31462
+ text: '```json\n{"type": "app_skill_use", "embed_id": "2724b6d3-f9dd-4a39-85e7-db3bfb25a20f", "app_id": "web", "skill_id": "search", "query": "Berlin AI Builders Meetup Factory Berlin June 18 2026", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "5283378f-3f72-4a5e-99ce-e5cdcc204c6e", "app_id": "web", "skill_id": "search", "query": "Berlin AI Builders Meetup Kreuzberg July 3 2026", "provider": "Brave"}\n```\n\nBased on your [saved events](/#settings/apps/events), you have two key gatherings coming up in [Berlin](wiki:Berlin) that focus on the [AI](wiki:Artificial_intelligence) builder community. Since the first one at Factory Berlin is just over a week away, I\u2019ve put together a structured preparation guide to help you make the most of these opportunities.\n\n```json\n{"type": "document", "embed_id": "538da4c5-982a-45f5-8f62-593278470ec5"}\n```\n\n\n\n### Next Steps for You\nFor the event on June 18th, it might be helpful to have your "Builder Intro" ready so you can jump straight into technical conversations without overthinking. For the July 3rd event, the "demo idea" is the main focus.\n\nWould you like to brainstorm that demo idea now, or would you prefer to refine your technical intro for the first meetup?\n\n```interactive_question\n{\n "type": "choice",\n "id": "event_prep_focus",\n "multiple": false,\n "question": "Which preparation task should we tackle first?",\n "options": [\n { "id": "intro", "text": "Draft my 30-second Builder Intro (June 18th focus)" },\n { "id": "demo", "text": "Brainstorm/Refine my Demo Idea (July 3rd focus)" },\n { "id": "logistics", "text": "Find specific directions and venue details for Factory Berlin" }\n ]\n}\n```\n\n```json\n{"type": "code", "embed_id": "af22a018-88e1-40b1-8ac2-da0bd5ed9f05"}\n```\n---\n*\u26A0\uFE0F This is educational information only and not professional psychological advice. For mental health concerns, please consult a qualified therapist or counselor. If you\'re experiencing a crisis, contact emergency services or a crisis hotline immediately.*'
31133
31463
  }
31134
31464
  },
31135
31465
  memory_health_appointments: {
@@ -31143,7 +31473,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31143
31473
  text: "Use my saved appointment memory to make a simple preparation checklist for my next health appointment."
31144
31474
  },
31145
31475
  message_2: {
31146
- text: '```json\n{"type": "app_skill_use", "embed_id": "bc0bd5a5-cdd9-4283-b0c5-fc95af91489a", "app_id": "web", "skill_id": "search", "query": "checklist for dermatology follow-up appointment preparation", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "9398f6a2-e863-4d85-941b-8ec7f0fe3e1a", "app_id": "images", "skill_id": "search", "query": "skin rash flare-up photos examples", "provider": "Brave Search"}\n```\n\nBased on your saved health memories, your next appointment is a **Dermatology follow-up** at the **Mitte Skin Clinic** on **June 20, 2026**.\n\nTo help you get the most out of your visit, I\'ve created a personalized preparation checklist based on your specific notes and general [dermatology](wiki:Dermatology) best practices.\n\n```json\n{"type": "document", "embed_id": "715f86e4-ddcc-46b3-a745-fbeee54de93c"}\n```\n\n\n\n### Visual Guide: Documenting Your Rash\nSince your notes mention bringing photos of [rash](wiki:Rash) flare-ups, here are a few examples of how different conditions might look. When taking your own photos, try to get one "wide" shot for location and one close-up "macro" shot for texture.\n\n[!](embed:www2.hse.ie-aMw)\n[!](embed:gardensdermatology.com-0Ed)\n[!](embed:gettyimages.com-Thc)\n[!](embed:everydayhealth.com-u8s)\n\n---\n\nWould you also like me to create a separate prep list for your **Dermatology Clinic Mitte** appointment on **July 8th**, or should we focus on finding specific questions you might want to ask at the clinic next week?\n\n```interactive_question\n{\n "type": "choice",\n "id": "next_step_preference",\n "multiple": false,\n "question": "How would you like to proceed?",\n "options": [\n { "id": "prep_july", "text": "Prepare for the July 8th appointment too" },\n { "id": "search_questions", "text": "Help me find specific questions for my doctor" },\n { "id": "done", "text": "I\'m all set for now" }\n ]\n}\n```json\n{"type": "code", "embed_id": "9d993334-9cfb-456a-aa5f-b671bab352a4"}\n```\n---\n*\u26A0\uFE0F This is educational information only and not medical advice. Consult your doctor for medical decisions.*'
31476
+ text: '```json\n{"type": "app_skill_use", "embed_id": "bc0bd5a5-cdd9-4283-b0c5-fc95af91489a", "app_id": "web", "skill_id": "search", "query": "checklist for dermatology follow-up appointment preparation", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "9398f6a2-e863-4d85-941b-8ec7f0fe3e1a", "app_id": "images", "skill_id": "search", "query": "skin rash flare-up photos examples", "provider": "Brave Search"}\n```\n\nBased on your saved health memories, your next appointment is a **Dermatology follow-up** at the **Mitte Skin Clinic** on **June 20, 2026**.\n\nTo help you get the most out of your visit, I\'ve created a personalized preparation checklist based on your specific notes and general [dermatology](wiki:Dermatology) best practices.\n\n```json\n{"type": "document", "embed_id": "715f86e4-ddcc-46b3-a745-fbeee54de93c"}\n```\n\n\n\n### Visual Guide: Documenting Your Rash\nSince your notes mention bringing photos of [rash](wiki:Rash) flare-ups, here are a few examples of how different conditions might look. When taking your own photos, try to get one "wide" shot for location and one close-up "macro" shot for texture.\n\n[!](embed:www2.hse.ie-aMw)\n[!](embed:gardensdermatology.com-0Ed)\n[!](embed:gettyimages.com-Thc)\n[!](embed:everydayhealth.com-u8s)\n\n---\n\nWould you also like me to create a separate prep list for your **Dermatology Clinic Mitte** appointment on **July 8th**, or should we focus on finding specific questions you might want to ask at the clinic next week?\n\n```interactive_question\n{\n "type": "choice",\n "id": "next_step_preference",\n "multiple": false,\n "question": "How would you like to proceed?",\n "options": [\n { "id": "prep_july", "text": "Prepare for the July 8th appointment too" },\n { "id": "search_questions", "text": "Help me find specific questions for my doctor" },\n { "id": "done", "text": "I\'m all set for now" }\n ]\n}\n```\n\n```json\n{"type": "code", "embed_id": "9d993334-9cfb-456a-aa5f-b671bab352a4"}\n```\n---\n*\u26A0\uFE0F This is educational information only and not medical advice. Consult your doctor for medical decisions.*'
31147
31477
  }
31148
31478
  },
31149
31479
  memory_health_medical_history: {
@@ -31171,7 +31501,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31171
31501
  text: "Use my saved home listing memory to draft questions I should ask before viewing the apartment."
31172
31502
  },
31173
31503
  message_2: {
31174
- text: '```json\n{"type": "app_skill_use", "embed_id": "6a554b12-3a87-48ef-872b-dffe918e1fda", "app_id": "web", "skill_id": "search", "query": "questions to ask apartment viewing Berlin 2026 checklist", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "c2937c3e-4392-4237-bb28-99304770dbb9", "app_id": "images", "skill_id": "search", "query": "Berlin Neuk\\u00f6lln Weserstrasse street view", "provider": "Brave Search"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "691f228d-513f-47fe-991c-653f73ba2304", "app_id": "images", "skill_id": "search", "query": "Berlin Neuk\\u00f6lln Landwehrkanal view", "provider": "Brave Search"}\n```\n\nBased on your saved listings in [Neuk\xF6lln](wiki:Neuk\xF6lln), I\'ve drafted a specific set of questions for each apartment. Since both are available from August 1, 2026, you\'ll want to be prepared for viewings very soon.\n\n### Your Neuk\xF6lln Apartment Viewing Guide\n\n[!](embed:derinternaut.ch-lc8)\n[!](embed:commons.wikimedia.org-PSJ)\n\nI\'ve compiled these questions into a structured document that you can print or keep on your phone during the viewings. It includes tailored questions based on your notes (like the bar noise on Weserstra\xDFe and internet speeds for the canal studio) along with general "must-ask" items for the [Berlin](wiki:Berlin) rental market in 2026.\n\n```json\n{"type": "document", "embed_id": "fa1c58a6-0592-4bc7-b6ef-2997cd570240"}\n```\n\n\n\n### Next Steps for Your Search\nIn the current Berlin housing market, speed is everything. It is often recommended to send a follow-up "confirmation of interest" email within an hour of leaving the viewing.\n\nWould you like me to help you with the next step of the process?\n\n```interactive_question\n{\n "type": "choice",\n "id": "apartment_followup",\n "multiple": false,\n "question": "What should we prepare next?",\n "options": [\n { "id": "email_template", "text": "Draft a \'Confirmation of Interest\' email template" },\n { "id": "search_more", "text": "Search for more Neuk\xF6lln listings for August 1st" },\n { "id": "cover_letter", "text": "Write a \'Tenant Cover Letter\' for my application" }\n ]\n}\n```json\n{"type": "code", "embed_id": "246cf3d9-c856-464c-9809-772e8a0d3307"}\n```'
31504
+ text: '```json\n{"type": "app_skill_use", "embed_id": "6a554b12-3a87-48ef-872b-dffe918e1fda", "app_id": "web", "skill_id": "search", "query": "questions to ask apartment viewing Berlin 2026 checklist", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "c2937c3e-4392-4237-bb28-99304770dbb9", "app_id": "images", "skill_id": "search", "query": "Berlin Neuk\\u00f6lln Weserstrasse street view", "provider": "Brave Search"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "691f228d-513f-47fe-991c-653f73ba2304", "app_id": "images", "skill_id": "search", "query": "Berlin Neuk\\u00f6lln Landwehrkanal view", "provider": "Brave Search"}\n```\n\nBased on your saved listings in [Neuk\xF6lln](wiki:Neuk\xF6lln), I\'ve drafted a specific set of questions for each apartment. Since both are available from August 1, 2026, you\'ll want to be prepared for viewings very soon.\n\n### Your Neuk\xF6lln Apartment Viewing Guide\n\n[!](embed:derinternaut.ch-lc8)\n[!](embed:commons.wikimedia.org-PSJ)\n\nI\'ve compiled these questions into a structured document that you can print or keep on your phone during the viewings. It includes tailored questions based on your notes (like the bar noise on Weserstra\xDFe and internet speeds for the canal studio) along with general "must-ask" items for the [Berlin](wiki:Berlin) rental market in 2026.\n\n\n\n### Next Steps for Your Search\nIn the current Berlin housing market, speed is everything. It is often recommended to send a follow-up "confirmation of interest" email within an hour of leaving the viewing.\n\nWould you like me to help you with the next step of the process?\n\n```interactive_question\n{\n "type": "choice",\n "id": "apartment_followup",\n "multiple": false,\n "question": "What should we prepare next?",\n "options": [\n { "id": "email_template", "text": "Draft a \'Confirmation of Interest\' email template" },\n { "id": "search_more", "text": "Search for more Neuk\xF6lln listings for August 1st" },\n { "id": "cover_letter", "text": "Write a \'Tenant Cover Letter\' for my application" }\n ]\n}\n```'
31175
31505
  }
31176
31506
  },
31177
31507
  memory_images_preferred_styles: {
@@ -31199,7 +31529,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31199
31529
  text: "Use my saved email writing style memory to draft a short Friday progress update to a client."
31200
31530
  },
31201
31531
  message_2: {
31202
- text: 'Based on your **Friday client update** writing style from your [mail settings](/#settings/apps/mail), I\'ve prepared a draft for you. This style focuses on being warm, concise, and specific, with clear bullet points for next steps.\n\n***\n\n**Subject:** Progress Update: [Project Name] | Friday, June 12\n\nHi [Client Name],\n\nI hope you\u2019ve had a productive week! \n\nWe\u2019ve made some great progress on [Project Name] over the last few days. Specifically, we have successfully completed [Specific Task 1] and are currently finalizing the [Specific Task 2]. Everything is tracking well according to our timeline.\n\n**Next steps:**\n* [Action Item 1] \u2013 Scheduled for completion by [Day]\n* [Action Item 2] \u2013 Internal review of [Deliverable]\n* [Action Item 3] \u2013 Follow-up meeting on [Date/Time]\n\nI\'ll keep you posted as these items progress. Have a wonderful weekend!\n\nBest, \nAlex\n\n***\n\nWould you like me to save this as a draft in your email account, or should we adjust any of the details first?\n\n```interactive_question\n{\n "type": "choice",\n "id": "draft_action",\n "multiple": false,\n "question": "What would you like to do with this draft?",\n "options": [\n { "id": "save_draft", "text": "Save as draft in Mail app" },\n { "id": "edit_tone", "text": "Adjust the tone" },\n { "id": "add_details", "text": "Add specific project details" }\n ]\n}\n```json\n{"type": "code", "embed_id": "45ef1cc5-abac-40cb-89ba-ee703709ce73"}\n```'
31532
+ text: 'Based on your **Friday client update** writing style from your [mail settings](/#settings/apps/mail), I\'ve prepared a draft for you. This style focuses on being warm, concise, and specific, with clear bullet points for next steps.\n\n***\n\n**Subject:** Progress Update: [Project Name] | Friday, June 12\n\nHi [Client Name],\n\nI hope you\u2019ve had a productive week! \n\nWe\u2019ve made some great progress on [Project Name] over the last few days. Specifically, we have successfully completed [Specific Task 1] and are currently finalizing the [Specific Task 2]. Everything is tracking well according to our timeline.\n\n**Next steps:**\n* [Action Item 1] \u2013 Scheduled for completion by [Day]\n* [Action Item 2] \u2013 Internal review of [Deliverable]\n* [Action Item 3] \u2013 Follow-up meeting on [Date/Time]\n\nI\'ll keep you posted as these items progress. Have a wonderful weekend!\n\nBest, \nAlex\n\n***\n\nWould you like me to save this as a draft in your email account, or should we adjust any of the details first?\n\n```interactive_question\n{\n "type": "choice",\n "id": "draft_action",\n "multiple": false,\n "question": "What would you like to do with this draft?",\n "options": [\n { "id": "save_draft", "text": "Save as draft in Mail app" },\n { "id": "edit_tone", "text": "Adjust the tone" },\n { "id": "add_details", "text": "Add specific project details" }\n ]\n}\n```\n\n```json\n{"type": "mail-email", "embed_id": "45ef1cc5-abac-40cb-89ba-ee703709ce73"}\n```'
31203
31533
  }
31204
31534
  },
31205
31535
  memory_reminder_defaults: {
@@ -31241,7 +31571,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31241
31571
  text: "Use my saved travel activity memory to suggest what kind of afternoon plan I would probably enjoy in a new city."
31242
31572
  },
31243
31573
  message_2: {
31244
- text: '```json\n{"type": "app_skill_use", "embed_id": "4acacb44-fb75-4e5b-a3a4-206c21586469", "app_id": "images", "skill_id": "search", "query": "vibrant local food market stalls street food tour guide", "provider": "Brave Search"}\n```\n\nBased on what you\'ve shared in your [travel activities](/#settings/app_store/travel/settings_memories/preferred_activities), you have a clear preference for authentic culinary experiences, specifically **local food markets** and **small local food tours**. \n\nWhen exploring a new city, you would likely find a "Flavor & Folklore" afternoon to be the most fulfilling. Here is a plan tailored to your interests:\n\n### Your Ideal Afternoon Itinerary\n* **2:00 PM: The Market Immersion** \n Head to the city\'s oldest public market. Instead of just browsing the tourist stalls, look for where the locals are buying their daily produce or [gourmet](wiki:Gourmet) specialties. This is often where you\'ll find the most authentic atmosphere and unique regional ingredients.\n* **4:00 PM: Guided Small-Group Tasting**\n Join a curated [street food](wiki:Street_food) tour with a local guide. Since you prefer small groups, this allows for a more intimate conversation about the history of the dishes and the culture of the neighborhood.\n* **7:00 PM: The "Insider" Follow-up**\n End your afternoon at a small, family-run eatery that your guide pointed out during the tour\u2014one that isn\'t featured in the major guidebooks.\n\n[!](embed:getyourguide.com-mPV)\n[!](embed:getyourguide.com-BGS)\n[!](embed:veronikasadventure.com-BOC)\n[!](embed:veronikasadventure.com-qG4)\n\nExploring through food is a wonderful way to build a sense of [belonging](wiki:Belongingness) in a new place, as it connects you directly with the people and traditions that make a city unique.\n\n```interactive_question\n{\n "type": "input",\n "id": "city_selection",\n "fields": [\n {\n "id": "destination",\n "label": "Is there a specific city you\'re planning to visit soon?",\n "placeholder": "e.g., Tokyo, Mexico City, Lisbon...",\n "required": true\n }\n ]\n}\n```json\n{"type": "code", "embed_id": "2ede2ca2-f05d-4e5d-a49b-00f13ffd13b1"}\n```'
31574
+ text: '```json\n{"type": "app_skill_use", "embed_id": "4acacb44-fb75-4e5b-a3a4-206c21586469", "app_id": "images", "skill_id": "search", "query": "vibrant local food market stalls street food tour guide", "provider": "Brave Search"}\n```\n\nBased on what you\'ve shared in your [travel activities](/#settings/app_store/travel/settings_memories/preferred_activities), you have a clear preference for authentic culinary experiences, specifically **local food markets** and **small local food tours**. \n\nWhen exploring a new city, you would likely find a "Flavor & Folklore" afternoon to be the most fulfilling. Here is a plan tailored to your interests:\n\n### Your Ideal Afternoon Itinerary\n* **2:00 PM: The Market Immersion** \n Head to the city\'s oldest public market. Instead of just browsing the tourist stalls, look for where the locals are buying their daily produce or [gourmet](wiki:Gourmet) specialties. This is often where you\'ll find the most authentic atmosphere and unique regional ingredients.\n* **4:00 PM: Guided Small-Group Tasting**\n Join a curated [street food](wiki:Street_food) tour with a local guide. Since you prefer small groups, this allows for a more intimate conversation about the history of the dishes and the culture of the neighborhood.\n* **7:00 PM: The "Insider" Follow-up**\n End your afternoon at a small, family-run eatery that your guide pointed out during the tour\u2014one that isn\'t featured in the major guidebooks.\n\n[!](embed:getyourguide.com-mPV)\n[!](embed:getyourguide.com-BGS)\n[!](embed:veronikasadventure.com-BOC)\n[!](embed:veronikasadventure.com-qG4)\n\nExploring through food is a wonderful way to build a sense of [belonging](wiki:Belongingness) in a new place, as it connects you directly with the people and traditions that make a city unique.\n\n```interactive_question\n{\n "type": "input",\n "id": "city_selection",\n "fields": [\n {\n "id": "destination",\n "label": "Is there a specific city you\'re planning to visit soon?",\n "placeholder": "e.g., Tokyo, Mexico City, Lisbon...",\n "required": true\n }\n ]\n}\n```\n\n```json\n{"type": "code", "embed_id": "2ede2ca2-f05d-4e5d-a49b-00f13ffd13b1"}\n```'
31245
31575
  }
31246
31576
  },
31247
31577
  memory_travel_preferred_airlines: {
@@ -31255,7 +31585,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31255
31585
  text: "Use my saved airline preference memory to explain what flight options I should compare first for a work trip."
31256
31586
  },
31257
31587
  message_2: {
31258
- text: 'Based on the preferences in your [travel settings](/#settings/apps/travel), your top choice for flights is **[Lufthansa](wiki:Lufthansa)**. \n\nFor a work trip, focusing on your preferred airline first is a smart move for several reasons:\n\n1. **Direct Routes & Scheduling:** Lufthansa offers extensive connections through its hubs in **[Frankfurt](wiki:Frankfurt_Airport)** and **[Munich](wiki:Munich_Airport)**. For business travel, prioritizing direct flights or well-timed connections on your preferred carrier reduces travel fatigue and maximizes your time.\n2. **[Star Alliance](wiki:Star_Alliance) Benefits:** Since Lufthansa is a founding member of Star Alliance, your first comparison should also include partners like **[United Airlines](wiki:United_Airlines)**, **[Swiss International Air Lines](wiki:Swiss_International_Air_Lines)**, and **[Austrian Airlines](wiki:Austrian_Airlines)**. This allows you to maintain consistent service standards and continue accruing miles within the same ecosystem.\n3. **Lounge Access & Priority:** If you have status with Lufthansa, you\'ll likely have access to priority check-in and lounges, which are essential for staying productive or resting during a work trip.\n\n**Recommendation for your search:**\n1. **First Look:** Lufthansa direct flights for the best schedule.\n2. **Second Look:** Star Alliance partners if the Lufthansa schedule doesn\'t align perfectly.\n3. **Third Look:** Other major carriers only if there is a significant price or time advantage that outweighs your loyalty benefits.\n\nTo help you find specific options, could you share some details about your upcoming trip?\n\n```interactive_question\n{\n "type": "input",\n "id": "work_trip_details",\n "fields": [\n {\n "id": "origin",\n "label": "Departure City",\n "placeholder": "e.g., Berlin",\n "required": true\n },\n {\n "id": "destination",\n "label": "Arrival City",\n "placeholder": "e.g., New York",\n "required": true\n },\n {\n "id": "date",\n "label": "Departure Date",\n "placeholder": "YYYY-MM-DD",\n "required": true\n }\n ]\n}\n```json\n{"type": "code", "embed_id": "2dfaadf5-b662-48e5-b130-a35ddd667689"}\n```'
31588
+ text: 'Based on the preferences in your [travel settings](/#settings/apps/travel), your top choice for flights is **[Lufthansa](wiki:Lufthansa)**. \n\nFor a work trip, focusing on your preferred airline first is a smart move for several reasons:\n\n1. **Direct Routes & Scheduling:** Lufthansa offers extensive connections through its hubs in **[Frankfurt](wiki:Frankfurt_Airport)** and **[Munich](wiki:Munich_Airport)**. For business travel, prioritizing direct flights or well-timed connections on your preferred carrier reduces travel fatigue and maximizes your time.\n2. **[Star Alliance](wiki:Star_Alliance) Benefits:** Since Lufthansa is a founding member of Star Alliance, your first comparison should also include partners like **[United Airlines](wiki:United_Airlines)**, **[Swiss International Air Lines](wiki:Swiss_International_Air_Lines)**, and **[Austrian Airlines](wiki:Austrian_Airlines)**. This allows you to maintain consistent service standards and continue accruing miles within the same ecosystem.\n3. **Lounge Access & Priority:** If you have status with Lufthansa, you\'ll likely have access to priority check-in and lounges, which are essential for staying productive or resting during a work trip.\n\n**Recommendation for your search:**\n1. **First Look:** Lufthansa direct flights for the best schedule.\n2. **Second Look:** Star Alliance partners if the Lufthansa schedule doesn\'t align perfectly.\n3. **Third Look:** Other major carriers only if there is a significant price or time advantage that outweighs your loyalty benefits.\n\nTo help you find specific options, could you share some details about your upcoming trip?\n\n```interactive_question\n{\n "type": "input",\n "id": "work_trip_details",\n "fields": [\n {\n "id": "origin",\n "label": "Departure City",\n "placeholder": "e.g., Berlin",\n "required": true\n },\n {\n "id": "destination",\n "label": "Arrival City",\n "placeholder": "e.g., New York",\n "required": true\n },\n {\n "id": "date",\n "label": "Departure Date",\n "placeholder": "YYYY-MM-DD",\n "required": true\n }\n ]\n}\n```\n\n```json\n{"type": "code", "embed_id": "2dfaadf5-b662-48e5-b130-a35ddd667689"}\n```'
31259
31589
  }
31260
31590
  },
31261
31591
  memory_travel_preferred_transport: {
@@ -31269,7 +31599,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31269
31599
  text: "Use my saved transport preference memory to suggest how I should travel for a nearby weekend trip."
31270
31600
  },
31271
31601
  message_2: {
31272
- text: '```json\n{"type": "app_skill_use", "embed_id": "61e27e5e-adb2-46be-88d3-d082c8d93441", "app_id": "web", "skill_id": "search", "query": "best weekend train getaways summer 2026", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "2653a4a2-d5c2-4cf1-81ea-c18f14d4a90f", "app_id": "images", "skill_id": "search", "query": "scenic weekend train trip destinations summer", "provider": "Brave Search"}\n```\n\nSince you prefer traveling by **[train](wiki:Train)**, there are some fantastic scenic getaways perfect for a June weekend. Since I don\'t have your current city in your settings, I\'ve selected a few of the most popular rail-accessible destinations for this time of year:\n\n### \u{1F686} Recommended Weekend Rail Getaways (June 2026)\n\n* **Napa Valley, California:** Perfect for a "car-free" weekend. You can take the train into Northern California and use the **[Napa Valley Wine Train](wiki:Napa_Valley_Wine_Train)** for a scenic tour of the vineyards without the hassle of driving.\n* **[Glacier National Park](wiki:Glacier_National_Park_(U.S.)), Montana:** The **[Empire Builder](wiki:Empire_Builder)** route offers breathtaking views of the Rockies. June is ideal as the snow has mostly melted from the lower trails, but the peaks are still capped.\n* **The [Hudson Valley](wiki:Hudson_Valley), New York:** If you\'re on the East Coast, the ride from **Penn Station** up the Hudson River is one of the most beautiful short trips in the country, leading to charming towns like **[Hudson](wiki:Hudson,_New_York)** or **[Beacon](wiki:Beacon,_New_York)**.\n* **[Canadian Rockies](wiki:Canadian_Rockies):** For a slightly longer weekend, a rail journey from **[Vancouver](wiki:Vancouver)** into the mountains offers world-class service and glass-domed cars for 360-degree views.\n\n[!](embed:amtrak.com-Ax9)\n[!](embed:acg.aaa.com-exm)\n[!](embed:travelandleisure.com-464)\n[!](embed:canadiantrainvacations.com-oQZ)\n\nTo give you a truly "nearby" suggestion, could you let me know which region you\'re starting from?\n\n```interactive_question\n{\n "type": "choice",\n "id": "travel_region_lookup",\n "multiple": false,\n "question": "Where are you traveling from?",\n "options": [\n { "id": "us_northeast", "text": "US Northeast (NYC, Boston, Philly)" },\n { "id": "us_west", "text": "US West Coast (LA, SF, Seattle)" },\n { "id": "us_midwest", "text": "US Midwest (Chicago, Denver)" },\n { "id": "canada", "text": "Canada (Toronto, Vancouver, Montreal)" },\n { "id": "europe", "text": "Europe" }\n ]\n}\n```json\n{"type": "code", "embed_id": "057d225d-54dd-41bf-a2c4-09b7feee9a6a"}\n```'
31602
+ text: '```json\n{"type": "app_skill_use", "embed_id": "61e27e5e-adb2-46be-88d3-d082c8d93441", "app_id": "web", "skill_id": "search", "query": "best weekend train getaways summer 2026", "provider": "Brave"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "2653a4a2-d5c2-4cf1-81ea-c18f14d4a90f", "app_id": "images", "skill_id": "search", "query": "scenic weekend train trip destinations summer", "provider": "Brave Search"}\n```\n\nSince you prefer traveling by **[train](wiki:Train)**, there are some fantastic scenic getaways perfect for a June weekend. Since I don\'t have your current city in your settings, I\'ve selected a few of the most popular rail-accessible destinations for this time of year:\n\n### \u{1F686} Recommended Weekend Rail Getaways (June 2026)\n\n* **Napa Valley, California:** Perfect for a "car-free" weekend. You can take the train into Northern California and use the **[Napa Valley Wine Train](wiki:Napa_Valley_Wine_Train)** for a scenic tour of the vineyards without the hassle of driving.\n* **[Glacier National Park](wiki:Glacier_National_Park_(U.S.)), Montana:** The **[Empire Builder](wiki:Empire_Builder)** route offers breathtaking views of the Rockies. June is ideal as the snow has mostly melted from the lower trails, but the peaks are still capped.\n* **The [Hudson Valley](wiki:Hudson_Valley), New York:** If you\'re on the East Coast, the ride from **Penn Station** up the Hudson River is one of the most beautiful short trips in the country, leading to charming towns like **[Hudson](wiki:Hudson,_New_York)** or **[Beacon](wiki:Beacon,_New_York)**.\n* **[Canadian Rockies](wiki:Canadian_Rockies):** For a slightly longer weekend, a rail journey from **[Vancouver](wiki:Vancouver)** into the mountains offers world-class service and glass-domed cars for 360-degree views.\n\n[!](embed:amtrak.com-Ax9)\n[!](embed:acg.aaa.com-exm)\n[!](embed:travelandleisure.com-464)\n[!](embed:canadiantrainvacations.com-oQZ)\n\nTo give you a truly "nearby" suggestion, could you let me know which region you\'re starting from?\n\n```interactive_question\n{\n "type": "choice",\n "id": "travel_region_lookup",\n "multiple": false,\n "question": "Where are you traveling from?",\n "options": [\n { "id": "us_northeast", "text": "US Northeast (NYC, Boston, Philly)" },\n { "id": "us_west", "text": "US West Coast (LA, SF, Seattle)" },\n { "id": "us_midwest", "text": "US Midwest (Chicago, Denver)" },\n { "id": "canada", "text": "Canada (Toronto, Vancouver, Montreal)" },\n { "id": "europe", "text": "Europe" }\n ]\n}\n```\n\n```json\n{"type": "code", "embed_id": "057d225d-54dd-41bf-a2c4-09b7feee9a6a"}\n```'
31273
31603
  }
31274
31604
  },
31275
31605
  memory_travel_saved_connections: {
@@ -31297,7 +31627,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31297
31627
  text: "Use my saved stay memory to suggest what I should check before booking accommodation."
31298
31628
  },
31299
31629
  message_2: {
31300
- text: '```json\n{"type": "app_skill_use", "embed_id": "a1d136f9-fb85-4479-b453-daeb49ada7f8", "app_id": "images", "skill_id": "search", "query": "Kyoto machiya interior traditional house", "provider": "Brave Search"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "9567e912-58a3-4bba-87d5-ccc2e7e2d9f5", "app_id": "images", "skill_id": "search", "query": "Kyoto riverside guesthouse gion", "provider": "Brave Search"}\n```\n\nBased on the notes in your [saved stays](/#settings/apps/travel), you seem to value authentic, quiet, and well-located guesthouses. Specifically, your interest in the Quiet Kyoto machiya stay and the Kyoto riverside guesthouse highlights a preference for traditional atmosphere and convenience.\n\nHere are the key things you should check before booking your next accommodation, based on your previous preferences:\n\n### 1. Accessibility and Floor Level\nFor the [machiya](wiki:Machiya) stay, you specifically noted "no elevator." In traditional Japanese townhouses, stairs can be quite steep and narrow. \n* **Check:** Does the room require climbing stairs? If it\'s a multi-story guesthouse, ask if ground-floor rooms are available if you have heavy luggage.\n\n### 2. Verified "Quiet" Status\nBoth of your saved stays mention "quiet streets." Listings often claim to be quiet, but reality can differ.\n* **Check:** Look for reviews that specifically mention "noise insulation" or "tranquility." Using a map to see if the property is on a main artery or near a nightlife district (like parts of [Gion](wiki:Gion)) can help confirm this.\n\n### 3. Exact Transit Proximity\nYou noted "near transit" for the riverside guesthouse.\n* **Check:** Don\'t just look at the distance to the nearest station\u2014check which *lines* run there. In [Kyoto](wiki:Kyoto), being near a [Keihan Electric Railway](wiki:Keihan_Electric_Railway) station is different from being near a [Subway](wiki:Kyoto_Municipal_Subway) station in terms of where you can easily go.\n\n### 4. Modern Comforts vs. Traditional Charm\nMachiyas are beautiful but can sometimes be drafty or have shared bathroom facilities.\n* **Check:** Does the "traditional house" have modern climate control and en-suite bathrooms? Your saved stays have high ratings (4.7\u20134.8), suggesting you prefer traditional styles that don\'t compromise on quality.\n\n[!](embed:worldarchitecture.org-t1l)\n[!](embed:agoda.com-KXV)\n[!](embed:hotels-of-kyoto.com-SXV)\n[!](embed:kamogawa-riverside-guesthouse-kyoto.book-Zdj)\n\n### What is your top priority for your next booking?\nKnowing this will help me refine future suggestions for you.\n\n```interactive_question\n{\n "type": "choice",\n "id": "accommodation_priority",\n "multiple": false,\n "question": "Which of these is most important for your next stay?",\n "options": [\n { "id": "quiet", "text": "Absolute quiet (Away from crowds)" },\n { "id": "transit", "text": "Proximity to transit (Easy sightseeing)" },\n { "id": "style", "text": "Traditional architecture (Authentic feel)" },\n { "id": "amenities", "text": "Modern amenities (Elevators/Heating)" }\n ]\n}\n```json\n{"type": "code", "embed_id": "6e912db7-be5d-437a-96ad-9e97fccc4bad"}\n```'
31630
+ text: '```json\n{"type": "app_skill_use", "embed_id": "a1d136f9-fb85-4479-b453-daeb49ada7f8", "app_id": "images", "skill_id": "search", "query": "Kyoto machiya interior traditional house", "provider": "Brave Search"}\n```\n\n```json\n{"type": "app_skill_use", "embed_id": "9567e912-58a3-4bba-87d5-ccc2e7e2d9f5", "app_id": "images", "skill_id": "search", "query": "Kyoto riverside guesthouse gion", "provider": "Brave Search"}\n```\n\nBased on the notes in your [saved stays](/#settings/apps/travel), you seem to value authentic, quiet, and well-located guesthouses. Specifically, your interest in the Quiet Kyoto machiya stay and the Kyoto riverside guesthouse highlights a preference for traditional atmosphere and convenience.\n\nHere are the key things you should check before booking your next accommodation, based on your previous preferences:\n\n### 1. Accessibility and Floor Level\nFor the [machiya](wiki:Machiya) stay, you specifically noted "no elevator." In traditional Japanese townhouses, stairs can be quite steep and narrow. \n* **Check:** Does the room require climbing stairs? If it\'s a multi-story guesthouse, ask if ground-floor rooms are available if you have heavy luggage.\n\n### 2. Verified "Quiet" Status\nBoth of your saved stays mention "quiet streets." Listings often claim to be quiet, but reality can differ.\n* **Check:** Look for reviews that specifically mention "noise insulation" or "tranquility." Using a map to see if the property is on a main artery or near a nightlife district (like parts of [Gion](wiki:Gion)) can help confirm this.\n\n### 3. Exact Transit Proximity\nYou noted "near transit" for the riverside guesthouse.\n* **Check:** Don\'t just look at the distance to the nearest station\u2014check which *lines* run there. In [Kyoto](wiki:Kyoto), being near a [Keihan Electric Railway](wiki:Keihan_Electric_Railway) station is different from being near a [Subway](wiki:Kyoto_Municipal_Subway) station in terms of where you can easily go.\n\n### 4. Modern Comforts vs. Traditional Charm\nMachiyas are beautiful but can sometimes be drafty or have shared bathroom facilities.\n* **Check:** Does the "traditional house" have modern climate control and en-suite bathrooms? Your saved stays have high ratings (4.7\u20134.8), suggesting you prefer traditional styles that don\'t compromise on quality.\n\n[!](embed:worldarchitecture.org-t1l)\n[!](embed:agoda.com-KXV)\n[!](embed:hotels-of-kyoto.com-SXV)\n[!](embed:kamogawa-riverside-guesthouse-kyoto.book-Zdj)\n\n### What is your top priority for your next booking?\nKnowing this will help me refine future suggestions for you.\n\n```interactive_question\n{\n "type": "choice",\n "id": "accommodation_priority",\n "multiple": false,\n "question": "Which of these is most important for your next stay?",\n "options": [\n { "id": "quiet", "text": "Absolute quiet (Away from crowds)" },\n { "id": "transit", "text": "Proximity to transit (Easy sightseeing)" },\n { "id": "style", "text": "Traditional architecture (Authentic feel)" },\n { "id": "amenities", "text": "Modern amenities (Elevators/Heating)" }\n ]\n}\n```\n\n```json\n{"type": "code", "embed_id": "6e912db7-be5d-437a-96ad-9e97fccc4bad"}\n```'
31301
31631
  }
31302
31632
  },
31303
31633
  memory_travel_trips: {
@@ -31325,7 +31655,7 @@ Would you like me to generate this as a [formal document](/#settings/apps/docs)
31325
31655
  text: "Plain text only, no links or embeds: use my saved watchlist memory to help me decide what to start after dinner tonight."
31326
31656
  },
31327
31657
  message_2: {
31328
- text: '```json\n{"type": "app_skill_use", "embed_id": "1e715bfd-50b7-4bd8-82b5-ffa6874b184e", "app_id": "web", "skill_id": "search", "query": "The Bear TV show season 4 release date", "provider": "Brave"}\n```\n\nBased on your saved watchlist, the clear choice for you to start after dinner tonight is The Bear.\n\nYou marked this as a high-priority show because your friends specifically recommended it for its excellent pacing and character development. It is a gripping drama with comedic elements that follows a world-class young chef who returns home to Chicago to run his family\'s gritty sandwich shop after a personal tragedy.\n\nSince today is June 10, 2026, starting tonight is actually perfect timing. There are currently four seasons available, and a special surprise flashback episode titled Gary was just released last month on May 5. Most importantly, the fifth season is set to premiere in exactly two weeks on June 25, 2026. If you start the first season tonight, you will have just enough time to get caught up before the new episodes begin airing.\n\nBe prepared for a high-intensity experience; the show is famous for its fast-paced kitchen environment and emotional depth, making it a very engaging watch for a post-dinner session.\n\nSince you\'re diving into a show about the culinary world, would you like to know more about the real-life Chicago food scene that inspired it, or should we look for some quick trivia about the cast?'
31658
+ text: "\nBased on your saved watchlist, the clear choice for you to start after dinner tonight is The Bear.\n\nYou marked this as a high-priority show because your friends specifically recommended it for its excellent pacing and character development. It is a gripping drama with comedic elements that follows a world-class young chef who returns home to Chicago to run his family's gritty sandwich shop after a personal tragedy.\n\nSince today is June 10, 2026, starting tonight is actually perfect timing. There are currently four seasons available, and a special surprise flashback episode titled Gary was just released last month on May 5. Most importantly, the fifth season is set to premiere in exactly two weeks on June 25, 2026. If you start the first season tonight, you will have just enough time to get caught up before the new episodes begin airing.\n\nBe prepared for a high-intensity experience; the show is famous for its fast-paced kitchen environment and emotional depth, making it a very engaging watch for a post-dinner session.\n\nSince you're diving into a show about the culinary world, would you like to know more about the real-life Chicago food scene that inspired it, or should we look for some quick trivia about the cast?"
31329
31659
  }
31330
31660
  },
31331
31661
  memory_tv_watched_movies: {
@@ -31359,7 +31689,24 @@ Have you seen Contact before, or would you prefer a recommendation for something
31359
31689
  text: "Plain text only, no links or embeds: use my saved watched TV shows memory to recommend what kind of series I should try next."
31360
31690
  },
31361
31691
  message_2: {
31362
- text: '```json\n{"type": "app_skill_use", "embed_id": "606d2a33-d15e-41b4-8368-449e480f6173", "app_id": "web", "skill_id": "search", "query": "TV shows like Severance with eerie mystery and slow-burn reveals 2026", "provider": "Brave"}\n```\n\nSince you are currently enjoying the eerie office mystery and slow-burn reveals of Severance, here are a few series you should try next that capture a similar atmosphere and set of themes:\n\n1. Devs: This is perhaps the closest match to Severance in terms of tone. It follows a software engineer who investigates the secretive development division of her high-tech employer. Like Severance, it features a sleek, unsettling corporate environment and explores deep philosophical questions about free will and technology.\n\n2. Silo: If you like the feeling of being trapped in a world where the rules don\'t quite make sense and the "truth" is hidden behind layers of bureaucracy, Silo is a great choice. It is a dystopian sci-fi series set in a massive underground bunker where the inhabitants are forbidden from knowing about the outside world. It excels at the same kind of steady, rewarding reveals you enjoy.\n\n3. Dark: This German series is a masterclass in slow-burn mystery and intricate plotting. While it leans more into time travel and family secrets than corporate satire, it shares the same DNA of identity puzzles and a dark, moody atmosphere that demands your full attention to piece everything together.\n\n4. Homecoming: Specifically the first season, this show features a psychological mystery centered around a facility that helps soldiers transition back to civilian life. It uses unique cinematography and a tight, claustrophobic narrative style to build a sense of corporate paranoia very similar to the halls of Lumon Industries.\n\n5. Carol: Since we are in 2026, you might want to check out this newer series from Vince Gilligan. It stars Rhea Seehorn and deals with a person trying to navigate a world where a virus has turned everyone into part of a smiling, eerie hive mind. It mirrors the "cheerful corporate culture" of Severance in a very unsettling way.\n\nGiven that you\'ve rated Severance a 9 out of 10 and specifically noted the eerie mystery, these shows should definitely fit your taste. \n\nWhat\'s next for you?\n- Would you like more details on any of these specific shows, such as where to watch them?\n- Are you interested in movies that have a similar "corporate nightmare" or "mind-bending" vibe?'
31692
+ text: `
31693
+ Since you are currently enjoying the eerie office mystery and slow-burn reveals of Severance, here are a few series you should try next that capture a similar atmosphere and set of themes:
31694
+
31695
+ 1. Devs: This is perhaps the closest match to Severance in terms of tone. It follows a software engineer who investigates the secretive development division of her high-tech employer. Like Severance, it features a sleek, unsettling corporate environment and explores deep philosophical questions about free will and technology.
31696
+
31697
+ 2. Silo: If you like the feeling of being trapped in a world where the rules don't quite make sense and the "truth" is hidden behind layers of bureaucracy, Silo is a great choice. It is a dystopian sci-fi series set in a massive underground bunker where the inhabitants are forbidden from knowing about the outside world. It excels at the same kind of steady, rewarding reveals you enjoy.
31698
+
31699
+ 3. Dark: This German series is a masterclass in slow-burn mystery and intricate plotting. While it leans more into time travel and family secrets than corporate satire, it shares the same DNA of identity puzzles and a dark, moody atmosphere that demands your full attention to piece everything together.
31700
+
31701
+ 4. Homecoming: Specifically the first season, this show features a psychological mystery centered around a facility that helps soldiers transition back to civilian life. It uses unique cinematography and a tight, claustrophobic narrative style to build a sense of corporate paranoia very similar to the halls of Lumon Industries.
31702
+
31703
+ 5. Carol: Since we are in 2026, you might want to check out this newer series from Vince Gilligan. It stars Rhea Seehorn and deals with a person trying to navigate a world where a virus has turned everyone into part of a smiling, eerie hive mind. It mirrors the "cheerful corporate culture" of Severance in a very unsettling way.
31704
+
31705
+ Given that you've rated Severance a 9 out of 10 and specifically noted the eerie mystery, these shows should definitely fit your taste.
31706
+
31707
+ What's next for you?
31708
+ - Would you like more details on any of these specific shows, such as where to watch them?
31709
+ - Are you interested in movies that have a similar "corporate nightmare" or "mind-bending" vibe?`
31363
31710
  }
31364
31711
  },
31365
31712
  memory_videos_to_watch_list: {
@@ -31413,7 +31760,7 @@ Would you like me to help you summarize the main points of that talk once you've
31413
31760
  text: "Use my saved read-later memory to suggest why this article might be useful for my next engineering planning session."
31414
31761
  },
31415
31762
  message_2: {
31416
- text: 'Based on your [read-later settings](/#settings/apps/web), you have two articles saved that are highly relevant to engineering strategy and quality assurance. Given your upcoming planning session, the most prominent one is:\n\n**The Practical Test Pyramid** by Ham Vocke (on [Martin Fowler](wiki:Martin_Fowler)\u2019s site).\n\n### Why this is useful for your planning session:\n\n1. **Resource Allocation:** The [Test Pyramid](wiki:Test_automation) concept helps engineering teams decide where to invest their time. It argues for a high volume of fast, low-level [unit tests](wiki:Unit_testing) and fewer expensive, slow UI-driven tests. During planning, this helps you justify why you might be spending more time on codebase health rather than end-to-end automation.\n2. **Defining "Done":** If you are revising your testing strategy (as your notes suggest), this article provides a framework for what "quality" looks like. It helps prevent the "Ice Cream Cone" anti-pattern where a team relies too heavily on manual or integration tests that are brittle and slow.\n3. **CI/CD Optimization:** Planning often involves discussing deployment frequency. The article explains how a balanced pyramid leads to faster [Continuous Integration](wiki:Continuous_integration) feedback loops, which is essential if your goal for the next quarter is increasing velocity.\n4. **Regression Coverage:** Your second saved article from `example.com` specifically mentions **regression coverage**. Using these together, you can plan a transition from manual regression cycles to a more automated, layered approach.\n\n### Summary of your saved items:\n* **Practical Test Pyramid**: Focused on the "how-to" of balancing different test types.\n* **Testing Strategy & Regression**: Focused on broader ideas for practical coverage.\n\nTo help narrow down how to use this in your meeting, what is the primary goal of this planning session?\n\n```interactive_question\n{\n "type": "choice",\n "id": "planning_focus",\n "multiple": false,\n "question": "What is the main objective of your engineering planning session?",\n "options": [\n { "id": "velocity", "text": "Increasing development velocity/speed" },\n { "id": "quality", "text": "Reducing bugs and improving reliability" },\n { "id": "tech_debt", "text": "Addressing technical debt and test maintenance" },\n { "id": "new_process", "text": "Establishing a completely new testing culture" }\n ]\n}\n```json\n{"type": "code", "embed_id": "e494adf8-3ae6-4e95-b4d6-0556e5964cfa"}\n```'
31763
+ text: 'Based on your [read-later settings](/#settings/apps/web), you have two articles saved that are highly relevant to engineering strategy and quality assurance. Given your upcoming planning session, the most prominent one is:\n\n**The Practical Test Pyramid** by Ham Vocke (on [Martin Fowler](wiki:Martin_Fowler)\u2019s site).\n\n### Why this is useful for your planning session:\n\n1. **Resource Allocation:** The [Test Pyramid](wiki:Test_automation) concept helps engineering teams decide where to invest their time. It argues for a high volume of fast, low-level [unit tests](wiki:Unit_testing) and fewer expensive, slow UI-driven tests. During planning, this helps you justify why you might be spending more time on codebase health rather than end-to-end automation.\n2. **Defining "Done":** If you are revising your testing strategy (as your notes suggest), this article provides a framework for what "quality" looks like. It helps prevent the "Ice Cream Cone" anti-pattern where a team relies too heavily on manual or integration tests that are brittle and slow.\n3. **CI/CD Optimization:** Planning often involves discussing deployment frequency. The article explains how a balanced pyramid leads to faster [Continuous Integration](wiki:Continuous_integration) feedback loops, which is essential if your goal for the next quarter is increasing velocity.\n4. **Regression Coverage:** Your second saved article from `example.com` specifically mentions **regression coverage**. Using these together, you can plan a transition from manual regression cycles to a more automated, layered approach.\n\n### Summary of your saved items:\n* **Practical Test Pyramid**: Focused on the "how-to" of balancing different test types.\n* **Testing Strategy & Regression**: Focused on broader ideas for practical coverage.\n\nTo help narrow down how to use this in your meeting, what is the primary goal of this planning session?\n\n```interactive_question\n{\n "type": "choice",\n "id": "planning_focus",\n "multiple": false,\n "question": "What is the main objective of your engineering planning session?",\n "options": [\n { "id": "velocity", "text": "Increasing development velocity/speed" },\n { "id": "quality", "text": "Reducing bugs and improving reliability" },\n { "id": "tech_debt", "text": "Addressing technical debt and test maintenance" },\n { "id": "new_process", "text": "Establishing a completely new testing culture" }\n ]\n}\n```'
31417
31764
  }
31418
31765
  },
31419
31766
  mortgage_payment_calculation: {
@@ -36020,7 +36367,7 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
36020
36367
  text: "Examples"
36021
36368
  },
36022
36369
  examples_prefix: {
36023
- text: "Real examples \u2014 tap a card to explore:"
36370
+ text: "Explore how it\u2019s used in real chats by clicking on the example chats:"
36024
36371
  },
36025
36372
  open_example: {
36026
36373
  text: "Open example"
@@ -36130,6 +36477,23 @@ As of mid-2026, the severe supply shocks from the 2024\u20132025 avian flu have
36130
36477
  }
36131
36478
  }
36132
36479
  },
36480
+ content: {
36481
+ title: {
36482
+ text: "Content"
36483
+ },
36484
+ section_description: {
36485
+ text: "Content this app can create, attach, or show as reusable chat artifacts:"
36486
+ },
36487
+ examples: {
36488
+ text: "Examples"
36489
+ },
36490
+ examples_prefix: {
36491
+ text: "Explore how it\u2019s used in real chats by clicking on the example chats:"
36492
+ },
36493
+ not_found: {
36494
+ text: "Content type not found."
36495
+ }
36496
+ },
36133
36497
  focus_modes: {
36134
36498
  title: {
36135
36499
  text: "Focus Modes"
@@ -42632,11 +42996,11 @@ function parseYamlScalar(value) {
42632
42996
  }
42633
42997
  async function saveDownloadedDocument(document, output) {
42634
42998
  const { mkdir, writeFile } = await import("fs/promises");
42635
- const { join: join4, basename: basename3, dirname } = await import("path");
42999
+ const { join: join4, basename: basename4, dirname: dirname2 } = await import("path");
42636
43000
  const target = typeof output === "string" ? output : ".";
42637
- const filename = basename3(document.filename || "document.pdf");
43001
+ const filename = basename4(document.filename || "document.pdf");
42638
43002
  const filePath = target.endsWith(".pdf") ? target : join4(target, filename);
42639
- await mkdir(dirname(filePath), { recursive: true });
43003
+ await mkdir(dirname2(filePath), { recursive: true });
42640
43004
  await writeFile(filePath, document.data);
42641
43005
  return filePath;
42642
43006
  }
@@ -42715,7 +43079,7 @@ async function promptSecret(question) {
42715
43079
  }
42716
43080
  async function writeSecretFile(filePath, content, force = false) {
42717
43081
  const { mkdir, writeFile, stat: stat2 } = await import("fs/promises");
42718
- const { dirname } = await import("path");
43082
+ const { dirname: dirname2 } = await import("path");
42719
43083
  try {
42720
43084
  await stat2(filePath);
42721
43085
  if (!force) throw new Error(`${filePath} already exists. Use --force to overwrite.`);
@@ -42725,7 +43089,7 @@ async function writeSecretFile(filePath, content, force = false) {
42725
43089
  }
42726
43090
  if (error instanceof Error && !("code" in error)) throw error;
42727
43091
  }
42728
- await mkdir(dirname(filePath), { recursive: true });
43092
+ await mkdir(dirname2(filePath), { recursive: true });
42729
43093
  await writeFile(filePath, content, { mode: 384 });
42730
43094
  return filePath;
42731
43095
  }
@@ -45487,7 +45851,7 @@ async function handleDocs(client, subcommand, rest, flags) {
45487
45851
  }
45488
45852
  if (subcommand === "download") {
45489
45853
  const { writeFile, mkdir } = await import("fs/promises");
45490
- const { join: join4, dirname } = await import("path");
45854
+ const { join: join4, dirname: dirname2 } = await import("path");
45491
45855
  if (flags.all === true) {
45492
45856
  const outputDir = typeof flags.output === "string" ? flags.output : "./openmates-docs";
45493
45857
  const tree = await client.listDocs();
@@ -45497,7 +45861,7 @@ async function handleDocs(client, subcommand, rest, flags) {
45497
45861
  for (const slug2 of slugs) {
45498
45862
  const content2 = await client.getDoc(slug2);
45499
45863
  const filePath = join4(outputDir, `${slug2}.md`);
45500
- await mkdir(dirname(filePath), { recursive: true });
45864
+ await mkdir(dirname2(filePath), { recursive: true });
45501
45865
  await writeFile(filePath, content2, "utf-8");
45502
45866
  count++;
45503
45867
  process.stderr.write(`\r Downloaded ${count}/${slugs.length}`);
@@ -45564,11 +45928,24 @@ Examples:
45564
45928
  openmates docs download architecture/core/security
45565
45929
  openmates docs download --all --output ./docs`);
45566
45930
  }
45567
- main().catch((error) => {
45568
- const message = error instanceof Error ? error.message : String(error);
45569
- console.error(`Error: ${message}`);
45570
- process.exit(1);
45571
- });
45931
+ function isCliEntrypoint() {
45932
+ const entrypoint = process.argv[1];
45933
+ if (!entrypoint) return false;
45934
+ try {
45935
+ const invokedPath = realpathSync(entrypoint);
45936
+ const modulePath = realpathSync(fileURLToPath(import.meta.url));
45937
+ return invokedPath === modulePath || basename3(invokedPath) === "cli.js" && dirname(invokedPath) === dirname(modulePath);
45938
+ } catch {
45939
+ return false;
45940
+ }
45941
+ }
45942
+ if (isCliEntrypoint()) {
45943
+ main().catch((error) => {
45944
+ const message = error instanceof Error ? error.message : String(error);
45945
+ console.error(`Error: ${message}`);
45946
+ process.exit(1);
45947
+ });
45948
+ }
45572
45949
 
45573
45950
  export {
45574
45951
  MEMORY_TYPE_REGISTRY,
package/dist/cli.js CHANGED
@@ -2,7 +2,7 @@
2
2
  import {
3
3
  getExtForLang,
4
4
  serializeToYaml
5
- } from "./chunk-NI7XPZBV.js";
5
+ } from "./chunk-EXV2FXSM.js";
6
6
  import "./chunk-AXNRPVLE.js";
7
7
  export {
8
8
  getExtForLang,
package/dist/index.js CHANGED
@@ -7,7 +7,7 @@ import {
7
7
  getExtForLang,
8
8
  parseNewChatSuggestionText,
9
9
  serializeToYaml
10
- } from "./chunk-NI7XPZBV.js";
10
+ } from "./chunk-EXV2FXSM.js";
11
11
  import "./chunk-AXNRPVLE.js";
12
12
  export {
13
13
  MATE_NAMES,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openmates",
3
- "version": "0.11.0-alpha.32",
3
+ "version": "0.11.0-alpha.34",
4
4
  "description": "OpenMates CLI and SDK",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",