@farazirfan/costar-server-executor 1.7.37 → 1.7.39
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/agent.d.ts +90 -0
- package/dist/agent/agent.d.ts.map +1 -1
- package/dist/agent/agent.js +606 -0
- package/dist/agent/agent.js.map +1 -1
- package/dist/agent/pi-embedded-runner/run.d.ts.map +1 -1
- package/dist/agent/pi-embedded-runner/run.js +2 -1
- package/dist/agent/pi-embedded-runner/run.js.map +1 -1
- package/dist/agent/pi-embedded-runner/system-prompt.d.ts.map +1 -1
- package/dist/agent/pi-embedded-runner/system-prompt.js +16 -37
- package/dist/agent/pi-embedded-runner/system-prompt.js.map +1 -1
- package/dist/agent/pi-embedded-runner/tools.d.ts +4 -1
- package/dist/agent/pi-embedded-runner/tools.d.ts.map +1 -1
- package/dist/agent/pi-embedded-runner/tools.js +3 -1
- package/dist/agent/pi-embedded-runner/tools.js.map +1 -1
- package/dist/agent/pi-embedded-runner/types.d.ts +4 -0
- package/dist/agent/pi-embedded-runner/types.d.ts.map +1 -1
- package/dist/cli/env-loader.d.ts.map +1 -1
- package/dist/cli/env-loader.js +1 -0
- package/dist/cli/env-loader.js.map +1 -1
- package/dist/cli/setup.js +2 -2
- package/dist/cli/setup.js.map +1 -1
- package/dist/cron/normalize.d.ts +31 -0
- package/dist/cron/normalize.d.ts.map +1 -0
- package/dist/cron/normalize.js +211 -0
- package/dist/cron/normalize.js.map +1 -0
- package/dist/cron/scheduler.d.ts +33 -3
- package/dist/cron/scheduler.d.ts.map +1 -1
- package/dist/cron/scheduler.js +253 -48
- package/dist/cron/scheduler.js.map +1 -1
- package/dist/heartbeat/runner.d.ts +27 -12
- package/dist/heartbeat/runner.d.ts.map +1 -1
- package/dist/heartbeat/runner.js +82 -104
- package/dist/heartbeat/runner.js.map +1 -1
- package/dist/infra/heartbeat-events-filter.d.ts +29 -0
- package/dist/infra/heartbeat-events-filter.d.ts.map +1 -0
- package/dist/infra/heartbeat-events-filter.js +80 -0
- package/dist/infra/heartbeat-events-filter.js.map +1 -0
- package/dist/infra/index.d.ts +9 -0
- package/dist/infra/index.d.ts.map +1 -0
- package/dist/infra/index.js +9 -0
- package/dist/infra/index.js.map +1 -0
- package/dist/infra/system-events.d.ts +58 -2
- package/dist/infra/system-events.d.ts.map +1 -1
- package/dist/infra/system-events.js +80 -14
- package/dist/infra/system-events.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -1
- package/dist/server.js.map +1 -1
- package/dist/services/platform-keys.d.ts +19 -0
- package/dist/services/platform-keys.d.ts.map +1 -0
- package/dist/services/platform-keys.js +74 -0
- package/dist/services/platform-keys.js.map +1 -0
- package/dist/subagent/registry.d.ts +96 -0
- package/dist/subagent/registry.d.ts.map +1 -0
- package/dist/subagent/registry.js +180 -0
- package/dist/subagent/registry.js.map +1 -0
- package/dist/tools/complete-turn.d.ts +2 -2
- package/dist/tools/complete-turn.js +10 -10
- package/dist/tools/complete-turn.js.map +1 -1
- package/dist/tools/contacts.d.ts +13 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +80 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/cron.d.ts +17 -2
- package/dist/tools/cron.d.ts.map +1 -1
- package/dist/tools/cron.js +117 -35
- package/dist/tools/cron.js.map +1 -1
- package/dist/tools/google-maps.d.ts +6 -6
- package/dist/tools/google-maps.d.ts.map +1 -1
- package/dist/tools/google-maps.js +207 -262
- package/dist/tools/google-maps.js.map +1 -1
- package/dist/tools/index.d.ts +17 -7
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +40 -9
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/phone-call.d.ts +11 -0
- package/dist/tools/phone-call.d.ts.map +1 -0
- package/dist/tools/phone-call.js +151 -0
- package/dist/tools/phone-call.js.map +1 -0
- package/dist/tools/sessions-spawn.d.ts +33 -0
- package/dist/tools/sessions-spawn.d.ts.map +1 -0
- package/dist/tools/sessions-spawn.js +164 -0
- package/dist/tools/sessions-spawn.js.map +1 -0
- package/dist/tools/spotify.d.ts +12 -0
- package/dist/tools/spotify.d.ts.map +1 -0
- package/dist/tools/spotify.js +251 -0
- package/dist/tools/spotify.js.map +1 -0
- package/dist/tools/subagents.d.ts +23 -0
- package/dist/tools/subagents.d.ts.map +1 -0
- package/dist/tools/subagents.js +209 -0
- package/dist/tools/subagents.js.map +1 -0
- package/dist/tools/whatsapp.d.ts +13 -0
- package/dist/tools/whatsapp.d.ts.map +1 -0
- package/dist/tools/whatsapp.js +215 -0
- package/dist/tools/whatsapp.js.map +1 -0
- package/dist/tools/youtube.d.ts +12 -0
- package/dist/tools/youtube.d.ts.map +1 -0
- package/dist/tools/youtube.js +218 -0
- package/dist/tools/youtube.js.map +1 -0
- package/dist/utils/asterizk-auth.d.ts +43 -0
- package/dist/utils/asterizk-auth.d.ts.map +1 -0
- package/dist/utils/asterizk-auth.js +125 -0
- package/dist/utils/asterizk-auth.js.map +1 -0
- package/dist/web-server.d.ts.map +1 -1
- package/dist/web-server.js +132 -0
- package/dist/web-server.js.map +1 -1
- package/dist/workspace/index.d.ts +3 -4
- package/dist/workspace/index.d.ts.map +1 -1
- package/dist/workspace/index.js +3 -4
- package/dist/workspace/index.js.map +1 -1
- package/dist/workspace/templates.d.ts +8 -7
- package/dist/workspace/templates.d.ts.map +1 -1
- package/dist/workspace/templates.js +18 -127
- package/dist/workspace/templates.js.map +1 -1
- package/dist/workspace/workspace.d.ts +2 -4
- package/dist/workspace/workspace.d.ts.map +1 -1
- package/dist/workspace/workspace.js +7 -16
- package/dist/workspace/workspace.js.map +1 -1
- package/package.json +1 -1
- package/public/index.html +231 -0
- package/skills/docx/SKILL.md +468 -0
- package/skills/docx/scripts/__init__.py +1 -0
- package/skills/docx/scripts/accept_changes.py +181 -0
- package/skills/docx/scripts/comment.py +347 -0
- package/skills/docx/scripts/helpers/__init__.py +0 -0
- package/skills/docx/scripts/helpers/merge_runs.py +231 -0
- package/skills/docx/scripts/helpers/simplify_redlines.py +240 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/docx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/docx/scripts/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/docx/scripts/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/docx/scripts/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/docx/scripts/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/docx/scripts/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/docx/scripts/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/docx/scripts/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/docx/scripts/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/docx/scripts/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/docx/scripts/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/docx/scripts/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/docx/scripts/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/docx/scripts/ooxml/scripts/pack.py +159 -0
- package/skills/docx/scripts/ooxml/scripts/unpack.py +29 -0
- package/skills/docx/scripts/ooxml/scripts/validate.py +106 -0
- package/skills/docx/scripts/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/docx/scripts/ooxml/scripts/validation/base.py +1023 -0
- package/skills/docx/scripts/ooxml/scripts/validation/docx.py +519 -0
- package/skills/docx/scripts/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/docx/scripts/ooxml/scripts/validation/redlining.py +284 -0
- package/skills/docx/scripts/pack.py +166 -0
- package/skills/docx/scripts/templates/comments.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
- package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
- package/skills/docx/scripts/templates/commentsIds.xml +3 -0
- package/skills/docx/scripts/templates/people.xml +3 -0
- package/skills/docx/scripts/unpack.py +134 -0
- package/skills/longform-video-generation/SKILL.md +298 -0
- package/skills/longform-video-generation/references/advanced_techniques.md +474 -0
- package/skills/longform-video-generation/references/google_api_guide.md +288 -0
- package/skills/longform-video-generation/scripts/video_generator.py +579 -0
- package/skills/pdf/FORMS.md +305 -0
- package/skills/pdf/REFERENCE.md +612 -0
- package/skills/pdf/SKILL.md +293 -0
- package/skills/pdf/scripts/check_bounding_boxes.py +70 -0
- package/skills/pdf/scripts/check_fillable_fields.py +12 -0
- package/skills/pdf/scripts/convert_pdf_to_images.py +35 -0
- package/skills/pdf/scripts/create_validation_image.py +41 -0
- package/skills/pdf/scripts/extract_form_field_info.py +152 -0
- package/skills/pdf/scripts/extract_form_structure.py +124 -0
- package/skills/pdf/scripts/fill_fillable_fields.py +116 -0
- package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +136 -0
- package/skills/pptx/SKILL.md +171 -0
- package/skills/pptx/editing.md +205 -0
- package/skills/pptx/pptxgenjs.md +377 -0
- package/skills/pptx/scripts/add_slide.py +225 -0
- package/skills/pptx/scripts/clean.py +309 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
- package/skills/pptx/scripts/ooxml/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
- package/skills/pptx/scripts/ooxml/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
- package/skills/pptx/scripts/ooxml/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
- package/skills/pptx/scripts/ooxml/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
- package/skills/pptx/scripts/ooxml/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
- package/skills/pptx/scripts/ooxml/schemas/mce/mc.xsd +75 -0
- package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-2010.xsd +560 -0
- package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-2012.xsd +67 -0
- package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-2018.xsd +14 -0
- package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-cex-2018.xsd +20 -0
- package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-cid-2016.xsd +13 -0
- package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
- package/skills/pptx/scripts/ooxml/schemas/microsoft/wml-symex-2015.xsd +8 -0
- package/skills/pptx/scripts/ooxml/scripts/pack.py +159 -0
- package/skills/pptx/scripts/ooxml/scripts/unpack.py +29 -0
- package/skills/pptx/scripts/ooxml/scripts/validate.py +106 -0
- package/skills/pptx/scripts/ooxml/scripts/validation/__init__.py +15 -0
- package/skills/pptx/scripts/ooxml/scripts/validation/base.py +1023 -0
- package/skills/pptx/scripts/ooxml/scripts/validation/docx.py +519 -0
- package/skills/pptx/scripts/ooxml/scripts/validation/pptx.py +315 -0
- package/skills/pptx/scripts/ooxml/scripts/validation/redlining.py +284 -0
- package/skills/pptx/scripts/pack.py +168 -0
- package/skills/pptx/scripts/thumbnail.py +318 -0
- package/skills/pptx/scripts/unpack.py +86 -0
- package/skills/xlsx/SKILL.md +291 -0
- package/skills/xlsx/recalc.py +247 -0
package/dist/tools/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* CoStar Server Executor - Tools Index
|
|
3
3
|
*
|
|
4
|
-
* Central export point for all
|
|
4
|
+
* Central export point for all core tools
|
|
5
5
|
*/
|
|
6
6
|
import { readTool, writeTool, editTool, bashTool } from "@mariozechner/pi-coding-agent";
|
|
7
7
|
import { createExecTool, execTool } from "./exec.js";
|
|
@@ -18,7 +18,15 @@ import { createGetCalendarEventsTool, createCreateCalendarEventTool, createUpdat
|
|
|
18
18
|
import { createGenerateImageTool } from "./generate-image.js";
|
|
19
19
|
import { createDiscoverDataApiTool, createFetchApiDataTool } from "./fetch-api-data.js";
|
|
20
20
|
import { createCronTool } from "./cron.js";
|
|
21
|
-
import {
|
|
21
|
+
import { createCompleteTaskTool } from "./complete-turn.js";
|
|
22
|
+
import { createSessionsSpawnTool } from "./sessions-spawn.js";
|
|
23
|
+
import { createSubagentsTool } from "./subagents.js";
|
|
24
|
+
import { createPhoneCallTool } from "./phone-call.js";
|
|
25
|
+
import { createWhatsAppTool } from "./whatsapp.js";
|
|
26
|
+
import { createContactsSearchTool } from "./contacts.js";
|
|
27
|
+
import { createSpotifyTool } from "./spotify.js";
|
|
28
|
+
import { createYouTubeTool } from "./youtube.js";
|
|
29
|
+
import { createGoogleMapsTool } from "./google-maps.js";
|
|
22
30
|
// Re-export individual tool creators and types
|
|
23
31
|
export {
|
|
24
32
|
// File Operations
|
|
@@ -43,25 +51,33 @@ createGetCalendarEventsTool, createCreateCalendarEventTool, createUpdateCalendar
|
|
|
43
51
|
createDiscoverDataApiTool, createFetchApiDataTool,
|
|
44
52
|
// Cron (OpenClaw)
|
|
45
53
|
createCronTool,
|
|
46
|
-
//
|
|
47
|
-
|
|
54
|
+
// Task completion
|
|
55
|
+
createCompleteTaskTool,
|
|
56
|
+
// Sub-agent spawning (OpenClaw)
|
|
57
|
+
createSessionsSpawnTool, createSubagentsTool,
|
|
58
|
+
// Communication (phone, WhatsApp, contacts)
|
|
59
|
+
createPhoneCallTool, createWhatsAppTool, createContactsSearchTool,
|
|
60
|
+
// Media & Services
|
|
61
|
+
createSpotifyTool, createYouTubeTool, createGoogleMapsTool, };
|
|
48
62
|
/**
|
|
49
|
-
* Get all
|
|
63
|
+
* Get all core tools
|
|
50
64
|
*
|
|
51
65
|
* Tool breakdown:
|
|
52
66
|
* - File Operations (4): read, write, edit, bash
|
|
53
67
|
* - Execution (2): exec, process
|
|
54
68
|
* - Web (3): web_search, web_fetch, browser
|
|
55
69
|
* - Memory (2): memory_search, memory_get
|
|
56
|
-
* - Communication (
|
|
70
|
+
* - Communication (4): message, phone_call, whatsapp, contacts_search
|
|
57
71
|
* - Media (2): image, generate_image
|
|
58
|
-
* - System (2): session_status,
|
|
72
|
+
* - System (2): session_status, complete_task
|
|
59
73
|
* - Email (4): search_emails, send_email, read_email, read_email_thread
|
|
60
74
|
* - Calendar (4): get_calendar_events, create_calendar_event, update_calendar_event, delete_calendar_event
|
|
61
75
|
* - Data API (2): discover_data_api, fetch_api_data (matches client executor)
|
|
76
|
+
* - Services (3): spotify, youtube, google_maps
|
|
62
77
|
* - Scheduling (1): cron (OpenClaw-compatible)
|
|
78
|
+
* - Sub-agents (2): sessions_spawn, subagents (OpenClaw-compatible, conditional on deps)
|
|
63
79
|
*/
|
|
64
|
-
export function getAllTools(cronDeps) {
|
|
80
|
+
export function getAllTools(cronDeps, subagentDeps) {
|
|
65
81
|
const tools = [
|
|
66
82
|
// File Operations (4)
|
|
67
83
|
readTool,
|
|
@@ -85,7 +101,7 @@ export function getAllTools(cronDeps) {
|
|
|
85
101
|
createGenerateImageTool(),
|
|
86
102
|
// System (2)
|
|
87
103
|
createSessionStatusTool(),
|
|
88
|
-
|
|
104
|
+
createCompleteTaskTool(),
|
|
89
105
|
// Email (4)
|
|
90
106
|
createSearchEmailsTool(),
|
|
91
107
|
createSendEmailTool(),
|
|
@@ -99,11 +115,26 @@ export function getAllTools(cronDeps) {
|
|
|
99
115
|
// Data API (2) — discovery + execution, matches client executor
|
|
100
116
|
createDiscoverDataApiTool(),
|
|
101
117
|
createFetchApiDataTool(),
|
|
118
|
+
// Communication (3) — phone, WhatsApp, contacts
|
|
119
|
+
createPhoneCallTool(),
|
|
120
|
+
createWhatsAppTool(),
|
|
121
|
+
createContactsSearchTool(),
|
|
122
|
+
// Services (3) — Spotify, YouTube, Google Maps
|
|
123
|
+
createSpotifyTool(),
|
|
124
|
+
createYouTubeTool(),
|
|
125
|
+
createGoogleMapsTool(),
|
|
102
126
|
];
|
|
103
127
|
// Cron tool (1) - OpenClaw-compatible, requires deps for scheduler/heartbeat integration
|
|
104
128
|
if (cronDeps) {
|
|
105
129
|
tools.push(createCronTool(cronDeps));
|
|
106
130
|
}
|
|
131
|
+
// Sub-agent tools (2) - OpenClaw-compatible, requires deps for agent reference
|
|
132
|
+
// Only added to main sessions; sub-agent sessions are called without subagentDeps
|
|
133
|
+
// to enforce depth limits (sub-agents cannot spawn their own sub-agents).
|
|
134
|
+
if (subagentDeps) {
|
|
135
|
+
tools.push(createSessionsSpawnTool(subagentDeps));
|
|
136
|
+
tools.push(createSubagentsTool(subagentDeps));
|
|
137
|
+
}
|
|
107
138
|
return tools;
|
|
108
139
|
}
|
|
109
140
|
//# sourceMappingURL=index.js.map
|
package/dist/tools/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAyB,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAA4B,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAqB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACxF,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAyB,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAA4B,MAAM,cAAc,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,GAC1B,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,2BAA2B,EAC3B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B,GAC9B,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,cAAc,EAAqB,MAAM,WAAW,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,uBAAuB,EAAyB,MAAM,qBAAqB,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAExD,+CAA+C;AAC/C,OAAO;AACL,kBAAkB;AAClB,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,QAAQ;AACR,YAAY;AACZ,cAAc,EACd,QAAQ,EACR,iBAAiB,EACjB,WAAW;AAGX,MAAM;AACN,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB;AACjB,SAAS;AACT,sBAAsB,EACtB,mBAAmB;AACnB,gBAAgB;AAChB,iBAAiB;AACjB,QAAQ;AACR,eAAe,EACf,uBAAuB;AACvB,SAAS;AACT,uBAAuB;AACvB,QAAQ;AACR,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB;AACzB,WAAW;AACX,2BAA2B,EAC3B,6BAA6B,EAC7B,6BAA6B,EAC7B,6BAA6B;AAC7B,6DAA6D;AAC7D,yBAAyB,EACzB,sBAAsB;AACtB,kBAAkB;AAClB,cAAc;AAEd,kBAAkB;AAClB,sBAAsB;AACtB,gCAAgC;AAChC,uBAAuB,EACvB,mBAAmB;AAEnB,4CAA4C;AAC5C,mBAAmB,EACnB,kBAAkB,EAClB,wBAAwB;AACxB,mBAAmB;AACnB,iBAAiB,EACjB,iBAAiB,EACjB,oBAAoB,GACrB,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,WAAW,CAAC,QAAuB,EAAE,YAA+B;IAClF,MAAM,KAAK,GAAmB;QAC5B,sBAAsB;QACtB,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,QAAQ;QAER,gBAAgB;QAChB,cAAc,EAAE;QAChB,iBAAiB,EAAE;QAEnB,UAAU;QACV,mBAAmB,EAAE;QACrB,kBAAkB,EAAE;QACpB,iBAAiB,EAAE;QAEnB,aAAa;QACb,sBAAsB,EAAE;QACxB,mBAAmB,EAAE;QAErB,oBAAoB;QACpB,iBAAiB,EAAE;QAEnB,YAAY;QACZ,eAAe,EAAE;QACjB,uBAAuB,EAAE;QAEzB,aAAa;QACb,uBAAuB,EAAE;QACzB,sBAAsB,EAAE;QAExB,YAAY;QACZ,sBAAsB,EAAE;QACxB,mBAAmB,EAAE;QACrB,mBAAmB,EAAE;QACrB,yBAAyB,EAAE;QAE3B,eAAe;QACf,2BAA2B,EAAE;QAC7B,6BAA6B,EAAE;QAC/B,6BAA6B,EAAE;QAC/B,6BAA6B,EAAE;QAE/B,gEAAgE;QAChE,yBAAyB,EAAE;QAC3B,sBAAsB,EAAE;QAExB,gDAAgD;QAChD,mBAAmB,EAAE;QACrB,kBAAkB,EAAE;QACpB,wBAAwB,EAAE;QAE1B,+CAA+C;QAC/C,iBAAiB,EAAE;QACnB,iBAAiB,EAAE;QACnB,oBAAoB,EAAE;KACvB,CAAC;IAEF,yFAAyF;IACzF,IAAI,QAAQ,EAAE,CAAC;QACb,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,+EAA+E;IAC/E,kFAAkF;IAClF,0EAA0E;IAC1E,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoStar Server Executor - Phone Call Tool
|
|
3
|
+
*
|
|
4
|
+
* Make phone calls via VAPI (background AI-powered calls).
|
|
5
|
+
* Uses the Asterizk API endpoint /email/vapi/manage.
|
|
6
|
+
*
|
|
7
|
+
* Operations: make_call, check_status, get_report, list_calls
|
|
8
|
+
*/
|
|
9
|
+
import type { AnyAgentTool } from "../types/tool.js";
|
|
10
|
+
export declare function createPhoneCallTool(): AnyAgentTool;
|
|
11
|
+
//# sourceMappingURL=phone-call.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-call.d.ts","sourceRoot":"","sources":["../../src/tools/phone-call.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA2DrD,wBAAgB,mBAAmB,IAAI,YAAY,CAuHlD"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoStar Server Executor - Phone Call Tool
|
|
3
|
+
*
|
|
4
|
+
* Make phone calls via VAPI (background AI-powered calls).
|
|
5
|
+
* Uses the Asterizk API endpoint /email/vapi/manage.
|
|
6
|
+
*
|
|
7
|
+
* Operations: make_call, check_status, get_report, list_calls
|
|
8
|
+
*/
|
|
9
|
+
import { Type } from "@sinclair/typebox";
|
|
10
|
+
import { jsonResult, readStringParam, readNumberParam } from "../utils/tool-helpers.js";
|
|
11
|
+
import { asterizkFetch, handleAsterizkApiError } from "../utils/asterizk-auth.js";
|
|
12
|
+
const PhoneCallSchema = Type.Object({
|
|
13
|
+
operation: Type.Union([
|
|
14
|
+
Type.Literal("make_call"),
|
|
15
|
+
Type.Literal("check_status"),
|
|
16
|
+
Type.Literal("get_report"),
|
|
17
|
+
Type.Literal("list_calls"),
|
|
18
|
+
], {
|
|
19
|
+
description: "Operation to perform: make_call (initiate a call), check_status (check call progress), get_report (get transcript/report), list_calls (list recent calls)",
|
|
20
|
+
}),
|
|
21
|
+
phone_number: Type.Optional(Type.String({
|
|
22
|
+
description: "Phone number to call in international format (e.g., +1234567890). Required for make_call.",
|
|
23
|
+
})),
|
|
24
|
+
message: Type.Optional(Type.String({
|
|
25
|
+
description: "Instructions for the AI call agent — what to say, information to gather, actions to take. Required for make_call.",
|
|
26
|
+
})),
|
|
27
|
+
call_id: Type.Optional(Type.String({
|
|
28
|
+
description: "Call ID to check status or get report for. Required for check_status and get_report.",
|
|
29
|
+
})),
|
|
30
|
+
query: Type.Optional(Type.String({ description: "Search query to filter calls. Used with list_calls." })),
|
|
31
|
+
limit: Type.Optional(Type.Number({ description: "Maximum number of calls to return. Used with list_calls. Default: 10." })),
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Clean phone number: strip non-digits except +, convert 00 prefix to +
|
|
35
|
+
*/
|
|
36
|
+
function cleanPhoneNumber(raw) {
|
|
37
|
+
let cleaned = raw.trim();
|
|
38
|
+
// Convert 00 international prefix to +
|
|
39
|
+
if (cleaned.startsWith("00")) {
|
|
40
|
+
cleaned = "+" + cleaned.slice(2);
|
|
41
|
+
}
|
|
42
|
+
// Strip everything except digits and +
|
|
43
|
+
cleaned = cleaned.replace(/[^\d+]/g, "");
|
|
44
|
+
// Ensure + prefix
|
|
45
|
+
if (!cleaned.startsWith("+")) {
|
|
46
|
+
cleaned = "+" + cleaned;
|
|
47
|
+
}
|
|
48
|
+
return cleaned;
|
|
49
|
+
}
|
|
50
|
+
export function createPhoneCallTool() {
|
|
51
|
+
return {
|
|
52
|
+
name: "phone_call",
|
|
53
|
+
label: "Phone Call",
|
|
54
|
+
description: "Make and manage phone calls via AI assistant. Operations: make_call (place a background AI call with instructions), check_status (check call progress), get_report (get transcript/report), list_calls (list recent calls). Always search contacts first to get the correct phone number before calling.",
|
|
55
|
+
parameters: PhoneCallSchema,
|
|
56
|
+
execute: async (_toolCallId, params) => {
|
|
57
|
+
const operation = readStringParam(params, "operation", { required: true });
|
|
58
|
+
try {
|
|
59
|
+
switch (operation) {
|
|
60
|
+
case "make_call": {
|
|
61
|
+
const rawPhone = readStringParam(params, "phone_number", { required: true });
|
|
62
|
+
const message = readStringParam(params, "message", { required: true });
|
|
63
|
+
const phoneNumber = cleanPhoneNumber(rawPhone);
|
|
64
|
+
console.log(`[PHONE] Making call to ${phoneNumber}`);
|
|
65
|
+
const response = await asterizkFetch("/email/vapi/manage", {
|
|
66
|
+
body: {
|
|
67
|
+
operation: "make_vapi_call",
|
|
68
|
+
phone_number: phoneNumber,
|
|
69
|
+
call_description: message,
|
|
70
|
+
timezone: process.env.USER_TIMEZONE || "UTC",
|
|
71
|
+
},
|
|
72
|
+
});
|
|
73
|
+
if (!response.ok) {
|
|
74
|
+
const errText = await response.text();
|
|
75
|
+
throw new Error(`VAPI call failed (${response.status}): ${errText}`);
|
|
76
|
+
}
|
|
77
|
+
const data = await response.json();
|
|
78
|
+
console.log(`[PHONE] Call initiated: ${data.call_id || "unknown"}`);
|
|
79
|
+
return jsonResult({
|
|
80
|
+
status: "call_initiated",
|
|
81
|
+
call_id: data.call_id,
|
|
82
|
+
phone_number: phoneNumber,
|
|
83
|
+
message: "Background call initiated. Use check_status with the call_id to monitor progress.",
|
|
84
|
+
data,
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
case "check_status": {
|
|
88
|
+
const callId = readStringParam(params, "call_id", { required: true });
|
|
89
|
+
console.log(`[PHONE] Checking status for call ${callId}`);
|
|
90
|
+
const response = await asterizkFetch("/email/vapi/manage", {
|
|
91
|
+
body: {
|
|
92
|
+
operation: "check_call_status",
|
|
93
|
+
call_id: callId,
|
|
94
|
+
},
|
|
95
|
+
});
|
|
96
|
+
if (!response.ok) {
|
|
97
|
+
const errText = await response.text();
|
|
98
|
+
throw new Error(`Status check failed (${response.status}): ${errText}`);
|
|
99
|
+
}
|
|
100
|
+
const data = await response.json();
|
|
101
|
+
return jsonResult({ call_id: callId, ...data });
|
|
102
|
+
}
|
|
103
|
+
case "get_report": {
|
|
104
|
+
const callId = readStringParam(params, "call_id", { required: true });
|
|
105
|
+
console.log(`[PHONE] Getting report for call ${callId}`);
|
|
106
|
+
const response = await asterizkFetch("/email/vapi/manage", {
|
|
107
|
+
body: {
|
|
108
|
+
operation: "get_call_report",
|
|
109
|
+
call_id: callId,
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
if (!response.ok) {
|
|
113
|
+
const errText = await response.text();
|
|
114
|
+
throw new Error(`Report fetch failed (${response.status}): ${errText}`);
|
|
115
|
+
}
|
|
116
|
+
const data = await response.json();
|
|
117
|
+
return jsonResult({ call_id: callId, ...data });
|
|
118
|
+
}
|
|
119
|
+
case "list_calls": {
|
|
120
|
+
const query = readStringParam(params, "query") || "";
|
|
121
|
+
const limit = readNumberParam(params, "limit") || 10;
|
|
122
|
+
console.log(`[PHONE] Listing calls (query: "${query}", limit: ${limit})`);
|
|
123
|
+
const response = await asterizkFetch("/email/vapi/manage", {
|
|
124
|
+
body: {
|
|
125
|
+
operation: "list_calls",
|
|
126
|
+
query,
|
|
127
|
+
limit,
|
|
128
|
+
},
|
|
129
|
+
});
|
|
130
|
+
if (!response.ok) {
|
|
131
|
+
const errText = await response.text();
|
|
132
|
+
throw new Error(`List calls failed (${response.status}): ${errText}`);
|
|
133
|
+
}
|
|
134
|
+
const data = await response.json();
|
|
135
|
+
return jsonResult(data);
|
|
136
|
+
}
|
|
137
|
+
default:
|
|
138
|
+
return jsonResult({
|
|
139
|
+
error: "invalid_operation",
|
|
140
|
+
message: `Unknown operation: ${operation}. Use: make_call, check_status, get_report, list_calls`,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
console.error(`[PHONE] Error (${operation}):`, error);
|
|
146
|
+
return jsonResult(handleAsterizkApiError(error, operation));
|
|
147
|
+
}
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=phone-call.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"phone-call.js","sourceRoot":"","sources":["../../src/tools/phone-call.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoStar Server Executor - Sessions Spawn Tool
|
|
3
|
+
* Ported from OpenClaw's agents/tools/sessions-spawn-tool.ts
|
|
4
|
+
*
|
|
5
|
+
* Differences from OpenClaw:
|
|
6
|
+
* - No gateway RPC (spawnSubagentDirect) — uses agent.runSubagentTurn() directly
|
|
7
|
+
* - No agentId param (single agent per user)
|
|
8
|
+
* - No thinking override (not needed v1)
|
|
9
|
+
* - No DeliveryContext / channel routing (single agent)
|
|
10
|
+
* - Spawn validation (depth, max children) inlined from subagent-spawn.ts
|
|
11
|
+
* - Fire-and-forget pattern with Promise.then() for completion handling
|
|
12
|
+
*
|
|
13
|
+
* Matched with OpenClaw:
|
|
14
|
+
* - Same tool name: sessions_spawn
|
|
15
|
+
* - Same core params: task, label, runTimeoutSeconds, cleanup
|
|
16
|
+
* - Same depth limits (default maxSpawnDepth=1, maxChildren=5)
|
|
17
|
+
* - Same result shape: { status, runId, label, ... }
|
|
18
|
+
* - Same auto-announce on completion via injectIsolatedResult
|
|
19
|
+
*/
|
|
20
|
+
import type { AnyAgentTool } from "../types/tool.js";
|
|
21
|
+
import type { Agent } from "../agent/agent.js";
|
|
22
|
+
export type SubagentToolDeps = {
|
|
23
|
+
/** User ID for the requester session */
|
|
24
|
+
userId: string;
|
|
25
|
+
/** Agent instance for running sub-agent turns */
|
|
26
|
+
agent: Agent;
|
|
27
|
+
/** Maximum allowed spawn depth. Default: 1 (sub-agents cannot spawn) */
|
|
28
|
+
maxSpawnDepth?: number;
|
|
29
|
+
/** Maximum concurrent children per requester. Default: 5 */
|
|
30
|
+
maxChildren?: number;
|
|
31
|
+
};
|
|
32
|
+
export declare function createSessionsSpawnTool(deps: SubagentToolDeps): AnyAgentTool;
|
|
33
|
+
//# sourceMappingURL=sessions-spawn.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions-spawn.d.ts","sourceRoot":"","sources":["../../src/tools/sessions-spawn.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAQrD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAK/C,MAAM,MAAM,gBAAgB,GAAG;IAC7B,wCAAwC;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,KAAK,EAAE,KAAK,CAAC;IACb,wEAAwE;IACxE,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,4DAA4D;IAC5D,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAeF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,gBAAgB,GAAG,YAAY,CAkJ5E"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoStar Server Executor - Sessions Spawn Tool
|
|
3
|
+
* Ported from OpenClaw's agents/tools/sessions-spawn-tool.ts
|
|
4
|
+
*
|
|
5
|
+
* Differences from OpenClaw:
|
|
6
|
+
* - No gateway RPC (spawnSubagentDirect) — uses agent.runSubagentTurn() directly
|
|
7
|
+
* - No agentId param (single agent per user)
|
|
8
|
+
* - No thinking override (not needed v1)
|
|
9
|
+
* - No DeliveryContext / channel routing (single agent)
|
|
10
|
+
* - Spawn validation (depth, max children) inlined from subagent-spawn.ts
|
|
11
|
+
* - Fire-and-forget pattern with Promise.then() for completion handling
|
|
12
|
+
*
|
|
13
|
+
* Matched with OpenClaw:
|
|
14
|
+
* - Same tool name: sessions_spawn
|
|
15
|
+
* - Same core params: task, label, runTimeoutSeconds, cleanup
|
|
16
|
+
* - Same depth limits (default maxSpawnDepth=1, maxChildren=5)
|
|
17
|
+
* - Same result shape: { status, runId, label, ... }
|
|
18
|
+
* - Same auto-announce on completion via injectIsolatedResult
|
|
19
|
+
*/
|
|
20
|
+
import { Type } from "@sinclair/typebox";
|
|
21
|
+
import { jsonResult, readStringParam } from "../utils/tool-helpers.js";
|
|
22
|
+
import { registerSubagentRun, completeRun, countActiveRunsForSession, getRunById, } from "../subagent/registry.js";
|
|
23
|
+
import crypto from "node:crypto";
|
|
24
|
+
// ---------- schema (from OpenClaw sessions-spawn-tool.ts:8-18, simplified) ----------
|
|
25
|
+
const SessionsSpawnSchema = Type.Object({
|
|
26
|
+
task: Type.String({ description: "What the sub-agent should accomplish. Be specific and provide all necessary context." }),
|
|
27
|
+
label: Type.Optional(Type.String({ description: "Short label for tracking (e.g., 'research-competitor', 'analyze-data')" })),
|
|
28
|
+
runTimeoutSeconds: Type.Optional(Type.Number({ description: "Timeout in seconds (default: 600 = 10 minutes)", minimum: 0 })),
|
|
29
|
+
// Back-compat: older callers used timeoutSeconds (OpenClaw pattern)
|
|
30
|
+
timeoutSeconds: Type.Optional(Type.Number({ description: "Alias for runTimeoutSeconds (backward compat)", minimum: 0 })),
|
|
31
|
+
cleanup: Type.Optional(Type.String({ description: "'delete' to remove session after run (default), 'keep' to retain for debugging" })),
|
|
32
|
+
});
|
|
33
|
+
// ---------- tool factory ----------
|
|
34
|
+
export function createSessionsSpawnTool(deps) {
|
|
35
|
+
return {
|
|
36
|
+
label: "Sessions",
|
|
37
|
+
name: "sessions_spawn",
|
|
38
|
+
description: `Spawn a background sub-agent to handle a task in parallel. The sub-agent runs in a separate isolated session with all standard tools (except spawning/management). Results are automatically delivered back when complete.
|
|
39
|
+
|
|
40
|
+
Use for: research tasks, data gathering, parallel workstreams, multi-step analysis, anything that benefits from concurrent execution.
|
|
41
|
+
|
|
42
|
+
Rules:
|
|
43
|
+
- Maximum ${deps.maxChildren ?? 5} concurrent sub-agents
|
|
44
|
+
- Sub-agents cannot spawn their own sub-agents (depth limit: ${deps.maxSpawnDepth ?? 1})
|
|
45
|
+
- Results are automatically announced when complete — do NOT poll or sleep
|
|
46
|
+
- Use the 'subagents' tool to check status or kill running sub-agents
|
|
47
|
+
- Each sub-agent gets its own isolated session with full tool access
|
|
48
|
+
- Write clear, self-contained task descriptions — sub-agents have no conversation context`,
|
|
49
|
+
parameters: SessionsSpawnSchema,
|
|
50
|
+
execute: async (_toolCallId, params) => {
|
|
51
|
+
// ── 1. Validate depth (from OpenClaw subagent-spawn.ts:109-116) ──
|
|
52
|
+
const maxDepth = deps.maxSpawnDepth ?? 1;
|
|
53
|
+
// Current depth is always 0 from main agent (sub-agents don't get this tool)
|
|
54
|
+
const currentDepth = 0;
|
|
55
|
+
if (currentDepth >= maxDepth) {
|
|
56
|
+
return jsonResult({
|
|
57
|
+
status: "forbidden",
|
|
58
|
+
error: `Sub-agent spawning not allowed at this depth (current: ${currentDepth}, max: ${maxDepth})`,
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
// ── 2. Validate max children (from OpenClaw subagent-spawn.ts:118-125) ──
|
|
62
|
+
const maxChildren = deps.maxChildren ?? 5;
|
|
63
|
+
const activeCount = countActiveRunsForSession(deps.userId);
|
|
64
|
+
if (activeCount >= maxChildren) {
|
|
65
|
+
return jsonResult({
|
|
66
|
+
status: "forbidden",
|
|
67
|
+
error: `Maximum concurrent sub-agents reached (${activeCount}/${maxChildren}). Wait for one to complete or kill one using the 'subagents' tool.`,
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
// ── 3. Read params (from OpenClaw sessions-spawn-tool.ts:40-58) ──
|
|
71
|
+
const task = readStringParam(params, "task", { required: true });
|
|
72
|
+
const label = typeof params.label === "string" ? params.label.trim() : undefined;
|
|
73
|
+
// Back-compat: older callers used timeoutSeconds
|
|
74
|
+
const timeoutSecondsCandidate = typeof params.runTimeoutSeconds === "number"
|
|
75
|
+
? params.runTimeoutSeconds
|
|
76
|
+
: typeof params.timeoutSeconds === "number"
|
|
77
|
+
? params.timeoutSeconds
|
|
78
|
+
: undefined;
|
|
79
|
+
const runTimeoutSeconds = typeof timeoutSecondsCandidate === "number" && Number.isFinite(timeoutSecondsCandidate)
|
|
80
|
+
? Math.max(0, Math.floor(timeoutSecondsCandidate))
|
|
81
|
+
: 600; // Default: 10 minutes
|
|
82
|
+
const cleanup = params.cleanup === "keep" || params.cleanup === "delete"
|
|
83
|
+
? params.cleanup
|
|
84
|
+
: "delete"; // Default: delete session after run
|
|
85
|
+
// ── 4. Create AbortController and register ──
|
|
86
|
+
const abortController = new AbortController();
|
|
87
|
+
const runId = crypto.randomUUID();
|
|
88
|
+
registerSubagentRun({
|
|
89
|
+
runId,
|
|
90
|
+
requesterSessionKey: deps.userId,
|
|
91
|
+
task,
|
|
92
|
+
label: label || undefined,
|
|
93
|
+
status: "running",
|
|
94
|
+
startedAt: Date.now(),
|
|
95
|
+
depth: currentDepth + 1,
|
|
96
|
+
abortController,
|
|
97
|
+
});
|
|
98
|
+
// ── 5. Fire-and-forget: run sub-agent in background ──
|
|
99
|
+
const runPromise = deps.agent.runSubagentTurn(task, {
|
|
100
|
+
sessionLabel: label ? `subagent:${label}` : `subagent:${runId.slice(0, 8)}`,
|
|
101
|
+
deleteAfterRun: cleanup === "delete",
|
|
102
|
+
abortSignal: abortController.signal,
|
|
103
|
+
timeoutMs: runTimeoutSeconds * 1000,
|
|
104
|
+
});
|
|
105
|
+
// ── 6. Background completion handler ──
|
|
106
|
+
runPromise
|
|
107
|
+
.then(async (result) => {
|
|
108
|
+
const record = getRunById(runId);
|
|
109
|
+
if (!record || record.status !== "running") {
|
|
110
|
+
// Already killed or completed — skip
|
|
111
|
+
return;
|
|
112
|
+
}
|
|
113
|
+
const summaryText = result.outputText?.trim() || result.response?.trim() || "";
|
|
114
|
+
const durationMs = Date.now() - record.startedAt;
|
|
115
|
+
completeRun(runId, {
|
|
116
|
+
status: result.success ? "completed" : "failed",
|
|
117
|
+
outcome: summaryText.slice(0, 5000), // Cap at 5k chars
|
|
118
|
+
error: result.error,
|
|
119
|
+
durationMs,
|
|
120
|
+
inputTokens: result.inputTokens,
|
|
121
|
+
outputTokens: result.outputTokens,
|
|
122
|
+
});
|
|
123
|
+
// Announce to main session (same pattern as cron scheduler isolated job)
|
|
124
|
+
if (!result.didSendViaMessagingTool && summaryText) {
|
|
125
|
+
try {
|
|
126
|
+
await deps.agent.injectIsolatedResult({
|
|
127
|
+
label: label || `sub-agent task`,
|
|
128
|
+
summary: summaryText,
|
|
129
|
+
status: result.success ? "ok" : "error",
|
|
130
|
+
durationMs,
|
|
131
|
+
inputTokens: result.inputTokens,
|
|
132
|
+
outputTokens: result.outputTokens,
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch (announceErr) {
|
|
136
|
+
console.warn(`[SESSIONS-SPAWN] Announce failed for run ${runId}:`, announceErr);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
})
|
|
140
|
+
.catch((err) => {
|
|
141
|
+
const record = getRunById(runId);
|
|
142
|
+
if (!record || record.status !== "running")
|
|
143
|
+
return;
|
|
144
|
+
const isAbort = err instanceof Error &&
|
|
145
|
+
(err.name === "AbortError" || err.message.includes("aborted"));
|
|
146
|
+
completeRun(runId, {
|
|
147
|
+
status: isAbort ? "killed" : "failed",
|
|
148
|
+
error: err instanceof Error ? err.message : String(err),
|
|
149
|
+
durationMs: Date.now() - record.startedAt,
|
|
150
|
+
});
|
|
151
|
+
});
|
|
152
|
+
// ── 7. Return immediately (from OpenClaw sessions-spawn-tool.ts:84) ──
|
|
153
|
+
return jsonResult({
|
|
154
|
+
status: "spawned",
|
|
155
|
+
runId,
|
|
156
|
+
label: label || undefined,
|
|
157
|
+
task: task.slice(0, 100),
|
|
158
|
+
activeSubagents: activeCount + 1,
|
|
159
|
+
note: "Sub-agent is running in the background. Results will be automatically announced when complete. Use 'subagents' tool to check status.",
|
|
160
|
+
});
|
|
161
|
+
},
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=sessions-spawn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sessions-spawn.js","sourceRoot":"","sources":["../../src/tools/sessions-spawn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CoStar Server Executor - Spotify Tool
|
|
3
|
+
*
|
|
4
|
+
* Search Spotify for tracks, albums, artists, and playlists.
|
|
5
|
+
* Uses Spotify Web API with client credentials flow (no user login needed).
|
|
6
|
+
* Search + info only — cannot control playback (server has no speakers).
|
|
7
|
+
*
|
|
8
|
+
* Requires: SPOTIFY_CLIENT_ID, SPOTIFY_CLIENT_SECRET env vars.
|
|
9
|
+
*/
|
|
10
|
+
import type { AnyAgentTool } from "../types/tool.js";
|
|
11
|
+
export declare function createSpotifyTool(): AnyAgentTool;
|
|
12
|
+
//# sourceMappingURL=spotify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spotify.d.ts","sourceRoot":"","sources":["../../src/tools/spotify.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AA2GrD,wBAAgB,iBAAiB,IAAI,YAAY,CA6LhD"}
|