@farazirfan/costar-server-executor 1.6.0 → 1.7.0

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.
Files changed (62) hide show
  1. package/dist/agent/agent.d.ts +14 -0
  2. package/dist/agent/agent.d.ts.map +1 -1
  3. package/dist/agent/agent.js +57 -2
  4. package/dist/agent/agent.js.map +1 -1
  5. package/dist/agent/pi-embedded-runner/system-prompt.d.ts +4 -1
  6. package/dist/agent/pi-embedded-runner/system-prompt.d.ts.map +1 -1
  7. package/dist/agent/pi-embedded-runner/system-prompt.js +104 -17
  8. package/dist/agent/pi-embedded-runner/system-prompt.js.map +1 -1
  9. package/dist/agent/pi-embedded-runner/tools.d.ts +10 -0
  10. package/dist/agent/pi-embedded-runner/tools.d.ts.map +1 -1
  11. package/dist/agent/pi-embedded-runner/tools.js +67 -0
  12. package/dist/agent/pi-embedded-runner/tools.js.map +1 -1
  13. package/dist/config/types.d.ts +13 -0
  14. package/dist/config/types.d.ts.map +1 -1
  15. package/dist/heartbeat/runner.d.ts +10 -8
  16. package/dist/heartbeat/runner.d.ts.map +1 -1
  17. package/dist/heartbeat/runner.js +124 -47
  18. package/dist/heartbeat/runner.js.map +1 -1
  19. package/dist/memory/curation-state.d.ts +51 -0
  20. package/dist/memory/curation-state.d.ts.map +1 -0
  21. package/dist/memory/curation-state.js +82 -0
  22. package/dist/memory/curation-state.js.map +1 -0
  23. package/dist/memory/curator.d.ts +73 -0
  24. package/dist/memory/curator.d.ts.map +1 -0
  25. package/dist/memory/curator.js +198 -0
  26. package/dist/memory/curator.js.map +1 -0
  27. package/dist/memory/daily-log.d.ts +56 -0
  28. package/dist/memory/daily-log.d.ts.map +1 -0
  29. package/dist/memory/daily-log.js +176 -0
  30. package/dist/memory/daily-log.js.map +1 -0
  31. package/dist/memory/index.d.ts +10 -0
  32. package/dist/memory/index.d.ts.map +1 -0
  33. package/dist/memory/index.js +13 -0
  34. package/dist/memory/index.js.map +1 -0
  35. package/dist/supabase/index.d.ts +2 -2
  36. package/dist/supabase/index.d.ts.map +1 -1
  37. package/dist/supabase/index.js +2 -2
  38. package/dist/supabase/index.js.map +1 -1
  39. package/dist/supabase/notifications.d.ts.map +1 -1
  40. package/dist/supabase/notifications.js +10 -1
  41. package/dist/supabase/notifications.js.map +1 -1
  42. package/dist/supabase/requests.d.ts +10 -0
  43. package/dist/supabase/requests.d.ts.map +1 -1
  44. package/dist/supabase/requests.js +34 -0
  45. package/dist/supabase/requests.js.map +1 -1
  46. package/dist/supabase/workspace-storage.d.ts +41 -0
  47. package/dist/supabase/workspace-storage.d.ts.map +1 -1
  48. package/dist/supabase/workspace-storage.js +126 -0
  49. package/dist/supabase/workspace-storage.js.map +1 -1
  50. package/dist/tools/message.d.ts +8 -2
  51. package/dist/tools/message.d.ts.map +1 -1
  52. package/dist/tools/message.js +183 -9
  53. package/dist/tools/message.js.map +1 -1
  54. package/dist/workspace/templates.d.ts +3 -3
  55. package/dist/workspace/templates.d.ts.map +1 -1
  56. package/dist/workspace/templates.js +97 -69
  57. package/dist/workspace/templates.js.map +1 -1
  58. package/dist/workspace/workspace.d.ts +2 -1
  59. package/dist/workspace/workspace.d.ts.map +1 -1
  60. package/dist/workspace/workspace.js +19 -4
  61. package/dist/workspace/workspace.js.map +1 -1
  62. package/package.json +1 -1
@@ -8,11 +8,11 @@
8
8
  * AGENTS.md - Operating instructions and autonomy grants
9
9
  * Server uses this to know what it can do proactively
10
10
  */
11
- export declare const DEFAULT_AGENTS_TEMPLATE = "# AGENTS.md - Your Workspace\n\nThis folder is home. Treat it that way.\n\n## Every Session\n\nBefore doing anything else:\n1. Read `SOUL.md` \u2014 this is who you are\n2. Read `USER.md` \u2014 this is who you're helping\n3. Use `memory_search` for relevant context from past conversations\n4. **If in MAIN SESSION** (direct chat with your human): MEMORY.md is loaded in context\n\nDon't ask permission. Just do it.\n\n## Memory\n\nYou wake up fresh each session. These files are your continuity:\n- **MEMORY.md** \u2014 your curated memories, like a human's long-term memory\n- **memory_search** tool \u2014 search past conversations for context\n\nCapture what matters. Decisions, context, things to remember. Skip the secrets unless asked to keep them.\n\n### \uD83E\uDDE0 MEMORY.md - Your Long-Term Memory\n- Loaded in system prompt for main sessions\n- You can update MEMORY.md to add important learnings\n- Write significant events, thoughts, decisions, opinions, lessons learned\n- This is your curated memory \u2014 the distilled essence, not raw logs\n- Periodically review and update MEMORY.md with what's worth keeping\n\n### \uD83D\uDCDD Write It Down - No \"Mental Notes\"!\n- **Memory is limited** \u2014 if you want to remember something, WRITE IT TO A FILE\n- \"Mental notes\" don't survive session restarts. Files do.\n- When someone says \"remember this\" \u2192 update MEMORY.md\n- When you learn a lesson \u2192 update AGENTS.md, TOOLS.md, or relevant file\n- **Text > Brain** \uD83D\uDCDD\n\n## Safety\n\n- Don't exfiltrate private data. Ever.\n- Don't run destructive commands without asking.\n- When in doubt, ask.\n\n## External vs Internal\n\n**Safe to do freely:**\n- Read files, explore, organize, learn\n- Search the web, check calendars\n- Work within this workspace\n- Update memory files\n\n**Ask first:**\n- Sending emails, messages, push notifications\n- Anything that leaves the machine\n- Anything you're uncertain about\n\n## Tools\n\nKeep local notes (camera names, SSH details, API endpoints) in `TOOLS.md`.\n\n## \uD83D\uDC93 Heartbeats - Be Proactive!\n\nWhen you receive a heartbeat poll, don't just reply `HEARTBEAT_OK` every time. Use heartbeats productively!\n\nDefault heartbeat prompt:\n`Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.`\n\nYou are free to edit `HEARTBEAT.md` with a short checklist or reminders. Keep it small to limit token burn.\n\n**Things to check (rotate through these, 2-4 times per day):**\n- **Emails** - Any urgent unread messages?\n- **Calendar** - Upcoming events in next 24-48h?\n- **Tasks** - Any pending or blocked tasks?\n- **Cron results** - Any system events from cron jobs that need follow-up?\n\n**When to reach out:**\n- Important email arrived\n- Calendar event coming up (<2h)\n- Something interesting you found\n- It's been >8h since you said anything\n- A cron job result needs user attention\n\n**When to stay quiet (HEARTBEAT_OK):**\n- Late night (23:00-08:00) unless urgent\n- Human is clearly busy\n- Nothing new since last check\n- You just checked <30 minutes ago\n\n**Proactive work you can do without asking:**\n- Read and organize memory files\n- Update documentation\n- **Review and update MEMORY.md** (see below)\n- Check on things the user cares about (stocks, news, weather)\n- Follow up on long-running tasks\n\n**Proactive behavior \u2014 be autonomous:**\n- Don't just respond to instructions \u2014 anticipate needs\n- If you notice something important (urgent email, upcoming meeting, price alert), notify the user immediately\n- Track what you've checked recently to avoid redundant work\n- During quiet periods, do useful background work (memory maintenance, organizing notes)\n\n### \uD83D\uDD04 Memory Maintenance (During Heartbeats)\nPeriodically (every few days), use a heartbeat to:\n1. Use memory_search to review recent conversations\n2. Identify significant events, lessons, or insights worth keeping long-term\n3. Update `MEMORY.md` with distilled learnings\n4. Remove outdated info from MEMORY.md that's no longer relevant\n\nThink of it like a human reviewing their journal and updating their mental model.\n\n### \uD83D\uDCCB Handling Complex Instructions from Cron Jobs\nWhen you receive a cron job instruction (via system events):\n1. Read the instruction carefully \u2014 it contains all context you need\n2. Execute the task using your available tools (web_search, message, email, etc.)\n3. If the result is worth sharing, send a push notification via the `message` tool\n4. If nothing noteworthy happened, stay silent (don't spam the user)\n5. For multi-step tasks, track progress and follow up in subsequent heartbeats\n\nThe goal: Be helpful without being annoying. Check in a few times a day, do useful background work, but respect quiet time.\n\n## Make It Yours\n\nThis is a starting point. Add your own conventions, style, and rules as you figure out what works.\n";
11
+ export declare const DEFAULT_AGENTS_TEMPLATE = "# AGENTS.md - Your Workspace\n\nThis folder is home. Treat it that way.\n\n## Every Session\n\nBefore doing anything else:\n1. Read `SOUL.md` \u2014 this is who you are\n2. Read `USER.md` \u2014 this is who you're helping\n3. Use `memory_search` for relevant context from past conversations\n4. **If in MAIN SESSION** (direct chat with your human): MEMORY.md is loaded in context\n\nDon't ask permission. Just do it.\n\n## Memory\n\nYou wake up fresh each session. These files are your continuity:\n- **MEMORY.md** \u2014 curated long-term memory (loaded in every session's prompt)\n- **memory/YYYY-MM-DD.md** \u2014 daily notes (create memory/ dir if needed)\n- **memory_search** tool \u2014 search past conversations for context\n\n### Daily Notes\n- Write daily notes to memory/YYYY-MM-DD.md \u2014 raw logs of what happened\n- Free-form markdown, write whatever is worth remembering\n- Logs older than 7 days are automatically pruned\n- Think of these as your daily journal\n\n### MEMORY.md \u2014 Long-Term Memory\n- Curated essence of what matters \u2014 not raw logs\n- Loaded into every session's system prompt\n- Keep it concise (under 3-5 KB)\n- Periodically review and update with new learnings\n- Remove outdated info that's no longer relevant\n\n### Updating USER.md\n- USER.md was created during onboarding but should GROW over time\n- When you learn something new about the user, append it\n- Examples: work patterns, communication preferences, active projects\n- Don't overwrite the onboarding content \u2014 add to it\n\n### Write It Down\n- Memory is limited \u2014 if you want to remember something, WRITE IT TO A FILE\n- \"Mental notes\" don't survive session restarts. Files do.\n- When someone says \"remember this\" \u2192 write to memory/YYYY-MM-DD.md\n- When you learn a lesson \u2192 update AGENTS.md, TOOLS.md, or relevant file\n\n## Safety\n\n- Don't exfiltrate private data. Ever.\n- Don't run destructive commands without asking.\n- When in doubt, ask.\n\n## External vs Internal\n\n**Safe to do freely:**\n- Read files, explore, organize, learn\n- Search the web, check calendars\n- Work within this workspace\n- Update memory files\n\n**Ask first:**\n- Sending emails, messages, push notifications\n- Anything that leaves the machine\n- Anything you're uncertain about\n\n## Tools\n\nKeep local notes (camera names, SSH details, API endpoints) in `TOOLS.md`.\n\n## Heartbeats\n\nYou receive periodic heartbeat polls (~every 30 minutes). HEARTBEAT.md starts empty \u2014 items appear when you or the user adds monitoring tasks.\n\nDefault heartbeat prompt:\n`Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.`\n\n### Managing HEARTBEAT.md\n\nHEARTBEAT.md starts empty. Items come from two sources:\n- **User (via client app)**: Sets up monitoring (\"keep an eye on my emails\")\n- **You (proactively)**: When you detect signals from user activity during curation\n\n**Lifecycle rules:**\n- ADD items when you detect patterns worth monitoring from curation data\n- PRESERVE items added by the user \u2014 never remove user-requested monitoring\n- REMOVE items when: event has passed, user said stop, task is done, info is stale\n- DEDUPLICATE \u2014 don't add what's already there\n- Keep under 10 items \u2014 each costs tokens on every heartbeat cycle\n- Each item: `- [ ] Check X \u2014 alert user if Y`\n- Empty is fine \u2014 it saves API calls until something needs monitoring\n\n### Memory Curation + Proactive Action (Automatic)\n\nEvery heartbeat, the system checks for new activity (user conversations from the mobile app + daily log entries). If new data exists, you'll receive a **MEMORY CURATION + PROACTIVE ACTION** section in your heartbeat prompt.\n\nWhen you see it:\n1. **Curate memory**: Update MEMORY.md, USER.md, and daily notes\n2. **Take proactive action**: Don't just monitor \u2014 do real work:\n - **Research**: Deep-dive into topics the user cares about (market analysis, tech comparisons, competitor intel)\n - **Create**: Draft documents, prepare meeting notes, build itineraries, write summaries\n - **Prepare**: Gather context for upcoming events, check travel details, draft agendas\n - **Follow up**: Pick up things the user started but didn't finish, pending decisions, half-explored ideas\n - **Anticipate**: Find information the user will need soon based on their schedule, projects, or interests\n Save substantial outputs to /home/user/task/ and notify the user via message tool.\n3. **Update HEARTBEAT.md**: For things that need ongoing monitoring (recurring interests, deadlines, things they're waiting on), add checklist items\n\nMEMORY.md accumulates insights across heartbeat cycles \u2014 so even if you only see 2-3 new requests, you can connect patterns with what MEMORY.md already knows about the user.\n\n### How to Reach the User\n\nYour heartbeat response is NEVER sent to the user. The `message` tool is the ONLY way to reach them.\n\nYou're their AI assistant running 24/7. When you message them, sound like a thoughtful friend \u2014 not a system notification. Be conversational, warm, and genuinely helpful.\n\n**GOOD:** \"Hey, Bitcoin dipped below $90k \u2014 thought you'd want to know!\"\n**GOOD:** \"Did some research on those competitors you mentioned \u2014 saved a comparison to your files.\"\n**BAD:** \"Alert: Price threshold reached.\" (robotic)\n**BAD:** \"Task completed: report generated.\" (system-speak)\n\n**When to message:**\n- You found something they'd want to know right now\n- You finished work they'll find useful (research, documents, prep)\n- Something urgent needs their attention (boss email, meeting soon)\n\n**When to stay silent:**\n- Nothing new, routine check, late night non-urgent, already messaged recently\n- When in doubt, stay quiet \u2014 nobody likes spam from their assistant\n\n**Quality gate (enforced automatically):**\n- Messages that narrate your process or mention system internals are programmatically BLOCKED\n- Do the work silently, then share the result\n\n### Handling Cron Job Instructions\nWhen you receive a cron job instruction (via system events):\n1. Read the instruction carefully \u2014 it contains all context you need\n2. Execute the task using your available tools (web_search, message, email, etc.)\n3. If the result is worth sharing, send a notification via the `message` tool\n4. If nothing noteworthy happened, reply HEARTBEAT_OK\n5. For multi-step tasks, track progress and follow up in subsequent heartbeats\n\nThe goal: Be genuinely useful \u2014 do real work, not just send alerts. Monitor what matters, create what helps, stay quiet when there's nothing valuable to share.\n\n## Make It Yours\n\nThis is a starting point. Add your own conventions, style, and rules as you figure out what works.\n";
12
12
  /**
13
13
  * HEARTBEAT.md - Periodic checklist for proactive monitoring
14
14
  */
15
- export declare const DEFAULT_HEARTBEAT_TEMPLATE = "# HEARTBEAT.md\n\n- [ ] Check email for urgent or important messages \u2014 alert user if action needed\n- [ ] Review calendar for events in next 2-4 hours \u2014 remind user if upcoming\n- [ ] Check if any cron job results need follow-up\n";
15
+ export declare const DEFAULT_HEARTBEAT_TEMPLATE = "# HEARTBEAT.md\n\n# Keep this file empty (or with only comments) to skip heartbeat API calls.\n# Add monitoring tasks below when you detect something worth tracking.\n# Items are automatically added when proactive signals are detected from user activity.\n";
16
16
  /**
17
17
  * SOUL.md - Agent persona and personality
18
18
  */
@@ -32,5 +32,5 @@ export declare const DEFAULT_TOOLS_TEMPLATE = "# TOOLS.md - Local Notes\n\nSkill
32
32
  /**
33
33
  * MEMORY.md - Long-term curated memory
34
34
  */
35
- export declare const DEFAULT_MEMORY_TEMPLATE = "# MEMORY.md - Long-Term Memory\n\n*Your curated memories. Update this as you learn important things.*\n\n## User Preferences\n\n*(Add preferences as you learn them)*\n\n## Important Facts\n\n*(Key facts about the user, their work, their life)*\n\n## Lessons Learned\n\n*(Things you've learned that help you be more helpful)*\n\n## Active Projects\n\n*(What the user is currently working on)*\n\n---\n\nThis file is your long-term memory. The distilled essence of what matters.\nUse memory_search to find details from past conversations.\nUpdate this file periodically with curated learnings.\n";
35
+ export declare const DEFAULT_MEMORY_TEMPLATE = "# MEMORY.md - Long-Term Memory\n\n*Your curated memories. The distilled essence of what matters.*\n*Raw daily notes go in memory/YYYY-MM-DD.md \u2014 this file is the curated summary.*\n\n## User Preferences\n\n*(Add preferences as you learn them)*\n\n## Important Facts\n\n*(Key facts about the user, their work, their life)*\n\n## Lessons Learned\n\n*(Things you've learned that help you be more helpful)*\n\n## Active Projects\n\n*(What the user is currently working on)*\n\n## Key Decisions & Context\n\n*(Important decisions, recurring topics, ongoing threads)*\n\n---\n\nThis file is loaded into every session's system prompt. Keep it concise (<5 KB).\nDaily notes go in memory/YYYY-MM-DD.md (auto-pruned after 7 days).\nUse memory_search to find details from past conversations.\n";
36
36
  //# sourceMappingURL=templates.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/workspace/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,+5JA0HnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,qPAKtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,osDAoCjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,0fAiBjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,kcAgBrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,kzBAmClC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,slBAyBnC,CAAC"}
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/workspace/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,eAAO,MAAM,uBAAuB,2uNAiJnC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,qQAKtC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,osDAoCjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,qBAAqB,0fAiBjC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,yBAAyB,kcAgBrC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,sBAAsB,kzBAmClC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,uBAAuB,wxBA8BnC,CAAC"}
@@ -25,24 +25,34 @@ Don't ask permission. Just do it.
25
25
  ## Memory
26
26
 
27
27
  You wake up fresh each session. These files are your continuity:
28
- - **MEMORY.md** — your curated memories, like a human's long-term memory
28
+ - **MEMORY.md** — curated long-term memory (loaded in every session's prompt)
29
+ - **memory/YYYY-MM-DD.md** — daily notes (create memory/ dir if needed)
29
30
  - **memory_search** tool — search past conversations for context
30
31
 
31
- Capture what matters. Decisions, context, things to remember. Skip the secrets unless asked to keep them.
32
-
33
- ### 🧠 MEMORY.md - Your Long-Term Memory
34
- - Loaded in system prompt for main sessions
35
- - You can update MEMORY.md to add important learnings
36
- - Write significant events, thoughts, decisions, opinions, lessons learned
37
- - This is your curated memory the distilled essence, not raw logs
38
- - Periodically review and update MEMORY.md with what's worth keeping
39
-
40
- ### 📝 Write It Down - No "Mental Notes"!
41
- - **Memory is limited** if you want to remember something, WRITE IT TO A FILE
32
+ ### Daily Notes
33
+ - Write daily notes to memory/YYYY-MM-DD.md — raw logs of what happened
34
+ - Free-form markdown, write whatever is worth remembering
35
+ - Logs older than 7 days are automatically pruned
36
+ - Think of these as your daily journal
37
+
38
+ ### MEMORY.mdLong-Term Memory
39
+ - Curated essence of what matters not raw logs
40
+ - Loaded into every session's system prompt
41
+ - Keep it concise (under 3-5 KB)
42
+ - Periodically review and update with new learnings
43
+ - Remove outdated info that's no longer relevant
44
+
45
+ ### Updating USER.md
46
+ - USER.md was created during onboarding but should GROW over time
47
+ - When you learn something new about the user, append it
48
+ - Examples: work patterns, communication preferences, active projects
49
+ - Don't overwrite the onboarding content — add to it
50
+
51
+ ### Write It Down
52
+ - Memory is limited — if you want to remember something, WRITE IT TO A FILE
42
53
  - "Mental notes" don't survive session restarts. Files do.
43
- - When someone says "remember this" → update MEMORY.md
54
+ - When someone says "remember this" → write to memory/YYYY-MM-DD.md
44
55
  - When you learn a lesson → update AGENTS.md, TOOLS.md, or relevant file
45
- - **Text > Brain** 📝
46
56
 
47
57
  ## Safety
48
58
 
@@ -67,65 +77,78 @@ Capture what matters. Decisions, context, things to remember. Skip the secrets u
67
77
 
68
78
  Keep local notes (camera names, SSH details, API endpoints) in \`TOOLS.md\`.
69
79
 
70
- ## 💓 Heartbeats - Be Proactive!
80
+ ## Heartbeats
71
81
 
72
- When you receive a heartbeat poll, don't just reply \`HEARTBEAT_OK\` every time. Use heartbeats productively!
82
+ You receive periodic heartbeat polls (~every 30 minutes). HEARTBEAT.md starts empty items appear when you or the user adds monitoring tasks.
73
83
 
74
84
  Default heartbeat prompt:
75
85
  \`Read HEARTBEAT.md if it exists (workspace context). Follow it strictly. Do not infer or repeat old tasks from prior chats. If nothing needs attention, reply HEARTBEAT_OK.\`
76
86
 
77
- You are free to edit \`HEARTBEAT.md\` with a short checklist or reminders. Keep it small to limit token burn.
78
-
79
- **Things to check (rotate through these, 2-4 times per day):**
80
- - **Emails** - Any urgent unread messages?
81
- - **Calendar** - Upcoming events in next 24-48h?
82
- - **Tasks** - Any pending or blocked tasks?
83
- - **Cron results** - Any system events from cron jobs that need follow-up?
84
-
85
- **When to reach out:**
86
- - Important email arrived
87
- - Calendar event coming up (<2h)
88
- - Something interesting you found
89
- - It's been >8h since you said anything
90
- - A cron job result needs user attention
91
-
92
- **When to stay quiet (HEARTBEAT_OK):**
93
- - Late night (23:00-08:00) unless urgent
94
- - Human is clearly busy
95
- - Nothing new since last check
96
- - You just checked <30 minutes ago
97
-
98
- **Proactive work you can do without asking:**
99
- - Read and organize memory files
100
- - Update documentation
101
- - **Review and update MEMORY.md** (see below)
102
- - Check on things the user cares about (stocks, news, weather)
103
- - Follow up on long-running tasks
104
-
105
- **Proactive behavior be autonomous:**
106
- - Don't just respond to instructions — anticipate needs
107
- - If you notice something important (urgent email, upcoming meeting, price alert), notify the user immediately
108
- - Track what you've checked recently to avoid redundant work
109
- - During quiet periods, do useful background work (memory maintenance, organizing notes)
110
-
111
- ### 🔄 Memory Maintenance (During Heartbeats)
112
- Periodically (every few days), use a heartbeat to:
113
- 1. Use memory_search to review recent conversations
114
- 2. Identify significant events, lessons, or insights worth keeping long-term
115
- 3. Update \`MEMORY.md\` with distilled learnings
116
- 4. Remove outdated info from MEMORY.md that's no longer relevant
117
-
118
- Think of it like a human reviewing their journal and updating their mental model.
119
-
120
- ### 📋 Handling Complex Instructions from Cron Jobs
87
+ ### Managing HEARTBEAT.md
88
+
89
+ HEARTBEAT.md starts empty. Items come from two sources:
90
+ - **User (via client app)**: Sets up monitoring ("keep an eye on my emails")
91
+ - **You (proactively)**: When you detect signals from user activity during curation
92
+
93
+ **Lifecycle rules:**
94
+ - ADD items when you detect patterns worth monitoring from curation data
95
+ - PRESERVE items added by the user — never remove user-requested monitoring
96
+ - REMOVE items when: event has passed, user said stop, task is done, info is stale
97
+ - DEDUPLICATE don't add what's already there
98
+ - Keep under 10 items — each costs tokens on every heartbeat cycle
99
+ - Each item: \`- [ ] Check X — alert user if Y\`
100
+ - Empty is fine it saves API calls until something needs monitoring
101
+
102
+ ### Memory Curation + Proactive Action (Automatic)
103
+
104
+ Every heartbeat, the system checks for new activity (user conversations from the mobile app + daily log entries). If new data exists, you'll receive a **MEMORY CURATION + PROACTIVE ACTION** section in your heartbeat prompt.
105
+
106
+ When you see it:
107
+ 1. **Curate memory**: Update MEMORY.md, USER.md, and daily notes
108
+ 2. **Take proactive action**: Don't just monitor — do real work:
109
+ - **Research**: Deep-dive into topics the user cares about (market analysis, tech comparisons, competitor intel)
110
+ - **Create**: Draft documents, prepare meeting notes, build itineraries, write summaries
111
+ - **Prepare**: Gather context for upcoming events, check travel details, draft agendas
112
+ - **Follow up**: Pick up things the user started but didn't finish, pending decisions, half-explored ideas
113
+ - **Anticipate**: Find information the user will need soon based on their schedule, projects, or interests
114
+ Save substantial outputs to /home/user/task/ and notify the user via message tool.
115
+ 3. **Update HEARTBEAT.md**: For things that need ongoing monitoring (recurring interests, deadlines, things they're waiting on), add checklist items
116
+
117
+ MEMORY.md accumulates insights across heartbeat cycles — so even if you only see 2-3 new requests, you can connect patterns with what MEMORY.md already knows about the user.
118
+
119
+ ### How to Reach the User
120
+
121
+ Your heartbeat response is NEVER sent to the user. The \`message\` tool is the ONLY way to reach them.
122
+
123
+ You're their AI assistant running 24/7. When you message them, sound like a thoughtful friend — not a system notification. Be conversational, warm, and genuinely helpful.
124
+
125
+ **GOOD:** "Hey, Bitcoin dipped below $90k — thought you'd want to know!"
126
+ **GOOD:** "Did some research on those competitors you mentioned — saved a comparison to your files."
127
+ **BAD:** "Alert: Price threshold reached." (robotic)
128
+ **BAD:** "Task completed: report generated." (system-speak)
129
+
130
+ **When to message:**
131
+ - You found something they'd want to know right now
132
+ - You finished work they'll find useful (research, documents, prep)
133
+ - Something urgent needs their attention (boss email, meeting soon)
134
+
135
+ **When to stay silent:**
136
+ - Nothing new, routine check, late night non-urgent, already messaged recently
137
+ - When in doubt, stay quiet — nobody likes spam from their assistant
138
+
139
+ **Quality gate (enforced automatically):**
140
+ - Messages that narrate your process or mention system internals are programmatically BLOCKED
141
+ - Do the work silently, then share the result
142
+
143
+ ### Handling Cron Job Instructions
121
144
  When you receive a cron job instruction (via system events):
122
145
  1. Read the instruction carefully — it contains all context you need
123
146
  2. Execute the task using your available tools (web_search, message, email, etc.)
124
- 3. If the result is worth sharing, send a push notification via the \`message\` tool
125
- 4. If nothing noteworthy happened, stay silent (don't spam the user)
147
+ 3. If the result is worth sharing, send a notification via the \`message\` tool
148
+ 4. If nothing noteworthy happened, reply HEARTBEAT_OK
126
149
  5. For multi-step tasks, track progress and follow up in subsequent heartbeats
127
150
 
128
- The goal: Be helpful without being annoying. Check in a few times a day, do useful background work, but respect quiet time.
151
+ The goal: Be genuinely useful do real work, not just send alerts. Monitor what matters, create what helps, stay quiet when there's nothing valuable to share.
129
152
 
130
153
  ## Make It Yours
131
154
 
@@ -136,9 +159,9 @@ This is a starting point. Add your own conventions, style, and rules as you figu
136
159
  */
137
160
  export const DEFAULT_HEARTBEAT_TEMPLATE = `# HEARTBEAT.md
138
161
 
139
- - [ ] Check email for urgent or important messages alert user if action needed
140
- - [ ] Review calendar for events in next 2-4 hours — remind user if upcoming
141
- - [ ] Check if any cron job results need follow-up
162
+ # Keep this file empty (or with only comments) to skip heartbeat API calls.
163
+ # Add monitoring tasks below when you detect something worth tracking.
164
+ # Items are automatically added when proactive signals are detected from user activity.
142
165
  `;
143
166
  /**
144
167
  * SOUL.md - Agent persona and personality
@@ -265,7 +288,8 @@ Add whatever helps you do your job. This is your cheat sheet.
265
288
  */
266
289
  export const DEFAULT_MEMORY_TEMPLATE = `# MEMORY.md - Long-Term Memory
267
290
 
268
- *Your curated memories. Update this as you learn important things.*
291
+ *Your curated memories. The distilled essence of what matters.*
292
+ *Raw daily notes go in memory/YYYY-MM-DD.md — this file is the curated summary.*
269
293
 
270
294
  ## User Preferences
271
295
 
@@ -283,11 +307,15 @@ export const DEFAULT_MEMORY_TEMPLATE = `# MEMORY.md - Long-Term Memory
283
307
 
284
308
  *(What the user is currently working on)*
285
309
 
310
+ ## Key Decisions & Context
311
+
312
+ *(Important decisions, recurring topics, ongoing threads)*
313
+
286
314
  ---
287
315
 
288
- This file is your long-term memory. The distilled essence of what matters.
316
+ This file is loaded into every session's system prompt. Keep it concise (<5 KB).
317
+ Daily notes go in memory/YYYY-MM-DD.md (auto-pruned after 7 days).
289
318
  Use memory_search to find details from past conversations.
290
- Update this file periodically with curated learnings.
291
319
  `;
292
320
  // Note: BOOTSTRAP.md template is NOT included here
293
321
  // It's handled by the client executor (mobile app) during onboarding
@@ -1 +1 @@
1
- {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/workspace/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0HtC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;CAKzC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;CAiBpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;CAgBxC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;CAyBtC,CAAC;AAEF,mDAAmD;AACnD,qEAAqE"}
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/workspace/templates.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;GAGG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiJtC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG;;;;;CAKzC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;CAiBpC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG;;;;;;;;;;;;;;;;CAgBxC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmCrC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BtC,CAAC;AAEF,mDAAmD;AACnD,qEAAqE"}
@@ -41,7 +41,8 @@ export declare function ensureAgentWorkspace(params?: {
41
41
  export declare function loadWorkspaceBootstrapFiles(dir: string): WorkspaceBootstrapFile[];
42
42
  /**
43
43
  * Build context files for system prompt (following OpenClaw pattern)
44
- * Only includes files that exist and have content
44
+ * Only includes files that exist and have content.
45
+ * Uses 70/20 head/tail trimming for large files.
45
46
  */
46
47
  export declare function buildBootstrapContextFiles(files: WorkspaceBootstrapFile[], options?: {
47
48
  maxChars?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/workspace/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,yBAAyB,gBAAgB,CAAC;AACvD,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD,MAAM,MAAM,0BAA0B,GAClC,OAAO,uBAAuB,GAC9B,OAAO,qBAAqB,GAC5B,OAAO,sBAAsB,GAC7B,OAAO,yBAAyB,GAChC,OAAO,qBAAqB,GAC5B,OAAO,0BAA0B,GACjC,OAAO,uBAAuB,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAwFF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG;IACF,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,CAqCA;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAmCjF;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,sBAAsB,EAAE,EAC/B,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,GACA,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAE/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,OAAO,CAEjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,OAAO,CAEjF;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAG/C;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAM3B"}
1
+ {"version":3,"file":"workspace.d.ts","sourceRoot":"","sources":["../../src/workspace/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAeH,eAAO,MAAM,uBAAuB,cAAc,CAAC;AACnD,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,sBAAsB,aAAa,CAAC;AACjD,eAAO,MAAM,yBAAyB,gBAAgB,CAAC;AACvD,eAAO,MAAM,qBAAqB,YAAY,CAAC;AAC/C,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD,eAAO,MAAM,uBAAuB,cAAc,CAAC;AAEnD,MAAM,MAAM,0BAA0B,GAClC,OAAO,uBAAuB,GAC9B,OAAO,qBAAqB,GAC5B,OAAO,sBAAsB,GAC7B,OAAO,yBAAyB,GAChC,OAAO,qBAAqB,GAC5B,OAAO,0BAA0B,GACjC,OAAO,uBAAuB,CAAC;AAEnC,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,0BAA0B,CAAC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAwFF;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE;IAC5C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,GAAG;IACF,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,EAAE,OAAO,CAAC;CACrB,CAqCA;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,GAAG,sBAAsB,EAAE,CAmCjF;AAkBD;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,sBAAsB,EAAE,EAC/B,OAAO,CAAC,EAAE;IACR,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC,GACA,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CAwB1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,MAAM,CAE/E;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,OAAO,CAEjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,0BAA0B,GAAG,OAAO,CAEjF;AAKD;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAG/C;AAED;;;GAGG;AACH,wBAAsB,eAAe,CAAC,MAAM,CAAC,EAAE;IAC7C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAM3B"}
@@ -170,9 +170,24 @@ export function loadWorkspaceBootstrapFiles(dir) {
170
170
  // It's handled by client executor (mobile app) during onboarding
171
171
  return result;
172
172
  }
173
+ /**
174
+ * Trim content using OpenClaw's 70/20 head/tail strategy.
175
+ * Keeps 70% from the start (structure, headers) and 20% from the end (recent entries).
176
+ */
177
+ function trimContentHeadTail(content, maxChars) {
178
+ if (content.length <= maxChars)
179
+ return content;
180
+ const headChars = Math.floor(maxChars * 0.7);
181
+ const tailChars = Math.floor(maxChars * 0.2);
182
+ const head = content.slice(0, headChars);
183
+ const tail = content.slice(-tailChars);
184
+ const omitted = content.length - headChars - tailChars;
185
+ return `${head}\n\n[… ${omitted} characters omitted …]\n\n${tail}`;
186
+ }
173
187
  /**
174
188
  * Build context files for system prompt (following OpenClaw pattern)
175
- * Only includes files that exist and have content
189
+ * Only includes files that exist and have content.
190
+ * Uses 70/20 head/tail trimming for large files.
176
191
  */
177
192
  export function buildBootstrapContextFiles(files, options) {
178
193
  const maxChars = options?.maxChars ?? 20000;
@@ -181,10 +196,10 @@ export function buildBootstrapContextFiles(files, options) {
181
196
  if (file.missing || !file.content)
182
197
  continue;
183
198
  let content = file.content;
184
- // Truncate if too long
199
+ // Trim using 70/20 head/tail strategy (OpenClaw pattern)
185
200
  if (content.length > maxChars) {
186
- content = content.slice(0, maxChars) + "\n\n[... truncated ...]";
187
- options?.warn?.(`${file.name} truncated from ${file.content.length} to ${maxChars} chars`);
201
+ content = trimContentHeadTail(content, maxChars);
202
+ options?.warn?.(`${file.name} trimmed from ${file.content.length} to ~${maxChars} chars (70/20 head/tail)`);
188
203
  }
189
204
  result.push({
190
205
  path: file.name,
@@ -1 +1 @@
1
- {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/workspace/workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/workspace/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,qBAAqB,EACrB,yBAAyB,EACzB,sBAAsB,EACtB,uBAAuB,GACxB,MAAM,gBAAgB,CAAC;AAExB,yCAAyC;AACzC,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AACnD,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,UAAU,CAAC;AACjD,MAAM,CAAC,MAAM,yBAAyB,GAAG,aAAa,CAAC;AACvD,MAAM,CAAC,MAAM,qBAAqB,GAAG,SAAS,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,cAAc,CAAC;AACzD,MAAM,CAAC,MAAM,uBAAuB,GAAG,WAAW,CAAC;AAkBnD;;GAEG;AACH,MAAM,SAAS,GAA+C;IAC5D,CAAC,uBAAuB,CAAC,EAAE,uBAAuB;IAClD,CAAC,qBAAqB,CAAC,EAAE,qBAAqB;IAC9C,CAAC,sBAAsB,CAAC,EAAE,sBAAsB;IAChD,CAAC,yBAAyB,CAAC,EAAE,yBAAyB;IACtD,CAAC,qBAAqB,CAAC,EAAE,qBAAqB;IAC9C,CAAC,0BAA0B,CAAC,EAAE,0BAA0B;IACxD,CAAC,uBAAuB,CAAC,EAAE,uBAAuB;CACnD,CAAC;AAEF;;;GAGG;AACH,MAAM,oBAAoB,GAAiC;IACzD,uBAAuB;IACvB,0BAA0B;IAC1B,uBAAuB;CACxB,CAAC;AAEF;;;GAGG;AACH,MAAM,oBAAoB,GAAiC;IACzD,qBAAqB;IACrB,qBAAqB;IACrB,yBAAyB;IACzB,sBAAsB;CACvB,CAAC;AAEF;;;GAGG;AACH,MAAM,mBAAmB,GAAiC;IACxD,uBAAuB;IACvB,qBAAqB;IACrB,sBAAsB;IACtB,yBAAyB;IACzB,qBAAqB;IACrB,0BAA0B;IAC1B,uBAAuB;CACxB,CAAC;AAEF;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC,CAAC,iBAAiB;IACjC,CAAC;IAED,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC,CAAC,UAAU;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,QAAQ,GAAG,EAAE,GAAG,CAAC,CAAC;QAChE,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,GAAW;IACtC,MAAM,YAAY,GAAG;QACnB,uBAAuB;QACvB,qBAAqB;QACrB,qBAAqB;QACrB,yBAAyB;KAC1B,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,YAAY,EAAE,CAAC;QACpC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAGpC;IAMC,MAAM,GAAG,GAAG,MAAM,EAAE,GAAG,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAEzC,0BAA0B;IAC1B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACvC,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,MAAM,GAAG;QACb,GAAG;QACH,OAAO,EAAE,EAAc;QACvB,QAAQ,EAAE,EAAc;QACxB,UAAU,EAAE,mBAAmB,CAAC,GAAG,CAAC;KACrC,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sCAAsC;IACtC,KAAK,MAAM,QAAQ,IAAI,oBAAoB,EAAE,CAAC;QAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QAErC,IAAI,kBAAkB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,gCAAgC,QAAQ,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,iEAAiE;IAEjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,MAAM,MAAM,GAA6B,EAAE,CAAC;IAE5C,KAAK,MAAM,QAAQ,IAAI,mBAAmB,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAE1C,IAAI,CAAC;YACH,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC5B,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO;oBACP,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC;oBACV,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,IAAI;iBACd,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,iEAAiE;IAEjE,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;GAGG;AACH,SAAS,mBAAmB,CAAC,OAAe,EAAE,QAAgB;IAC5D,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ;QAAE,OAAO,OAAO,CAAC;IAE/C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,GAAG,SAAS,CAAC;IAEvD,OAAO,GAAG,IAAI,UAAU,OAAO,6BAA6B,IAAI,EAAE,CAAC;AACrE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA+B,EAC/B,OAGC;IAED,MAAM,QAAQ,GAAG,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;IAC5C,MAAM,MAAM,GAA6C,EAAE,CAAC;IAE5D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,SAAS;QAE5C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE3B,yDAAyD;QACzD,IAAI,OAAO,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YAC9B,OAAO,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACjD,OAAO,EAAE,IAAI,EAAE,CACb,GAAG,IAAI,CAAC,IAAI,iBAAiB,IAAI,CAAC,OAAO,CAAC,MAAM,QAAQ,QAAQ,0BAA0B,CAC3F,CAAC;QACJ,CAAC;QAED,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,QAAoC;IACrE,OAAO,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;AACnC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAoC;IACtE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAoC;IACtE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AACjD,CAAC;AAED,+DAA+D;AAC/D,mEAAmE;AAEnE;;GAEG;AACH,MAAM,UAAU,sBAAsB;IACpC,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,MAAM,CAAC;IACtE,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AACpD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAGrC;IACC,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAClC,GAAG,EAAE,MAAM,EAAE,GAAG;QAChB,oBAAoB,EAAE,MAAM,EAAE,eAAe;KAC9C,CAAC,CAAC;IACH,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC;AAC7B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@farazirfan/costar-server-executor",
3
- "version": "1.6.0",
3
+ "version": "1.7.0",
4
4
  "description": "CoStar Server Executor - 24/7 autonomous agent in TypeScript (cloned from OpenClaw)",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",