@hailer/mcp 0.0.2 → 0.0.4

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 (33) hide show
  1. package/.claude/hooks/PreToolUse.sh +52 -0
  2. package/.claude/hooks/prompt-skill-loader.cjs +452 -0
  3. package/.claude/hooks/sdk-delete-guard.cjs +117 -0
  4. package/.claude/hooks/skill-loader.cjs +142 -0
  5. package/.claude/settings.json +29 -1
  6. package/.claude/skills/MCP-populate-workflow-data-skill/SKILL.md +395 -0
  7. package/.claude/skills/SDK-create-function-field-skill/SKILL.md +313 -0
  8. package/.claude/skills/SDK-generate-skill/SKILL.md +223 -0
  9. package/.claude/skills/SDK-init-skill/SKILL.md +177 -0
  10. package/.claude/skills/SDK-workspace-setup-skill/SKILL.md +605 -0
  11. package/.claude/skills/SDK-ws-config-skill/SKILL.md +435 -0
  12. package/CHANGELOG.md +67 -0
  13. package/README.md +22 -275
  14. package/package.json +5 -2
  15. /package/.claude/skills/{add-app-member-skill → MCP-add-app-member-skill}/SKILL.md +0 -0
  16. /package/.claude/skills/{create-app-skill → MCP-create-app-skill}/SKILL.md +0 -0
  17. /package/.claude/skills/{create-insight-skill → MCP-create-insight-skill}/SKILL.md +0 -0
  18. /package/.claude/skills/{get-insight-data-skill → MCP-get-insight-data-skill}/SKILL.md +0 -0
  19. /package/.claude/skills/{insight-api → MCP-insight-api}/SKILL.md +0 -0
  20. /package/.claude/skills/{insight-api → MCP-insight-api}/references/insight-endpoints.md +0 -0
  21. /package/.claude/skills/{install-workflow-skill → MCP-install-workflow-skill}/SKILL.md +0 -0
  22. /package/.claude/skills/{list-apps-skill → MCP-list-apps-skill}/SKILL.md +0 -0
  23. /package/.claude/skills/{list-workflows-minimal-skill → MCP-list-workflows-minimal-skill}/SKILL.md +0 -0
  24. /package/.claude/skills/{local-first-skill → MCP-local-first-skill}/SKILL.md +0 -0
  25. /package/.claude/skills/{preview-insight-skill → MCP-preview-insight-skill}/SKILL.md +0 -0
  26. /package/.claude/skills/{publish-hailer-app-skill → MCP-publish-hailer-app-skill}/SKILL.md +0 -0
  27. /package/.claude/skills/{remove-app-member-skill → MCP-remove-app-member-skill}/SKILL.md +0 -0
  28. /package/.claude/skills/{remove-app-skill → MCP-remove-app-skill}/SKILL.md +0 -0
  29. /package/.claude/skills/{remove-insight-skill → MCP-remove-insight-skill}/SKILL.md +0 -0
  30. /package/.claude/skills/{remove-workflow-skill → MCP-remove-workflow-skill}/SKILL.md +0 -0
  31. /package/.claude/skills/{scaffold-hailer-app-skill → MCP-scaffold-hailer-app-skill}/SKILL.md +0 -0
  32. /package/.claude/skills/{update-app-skill → MCP-update-app-skill}/SKILL.md +0 -0
  33. /package/.claude/skills/{update-workflow-field-skill → MCP-update-workflow-field-skill}/SKILL.md +0 -0
@@ -0,0 +1,435 @@
1
+ ---
2
+ name: Workspace Configuration Management
3
+ description: Complete guide to managing Hailer workspace configurations using ws-config commands - pull/push workflows, fields, phases, groups, teams, and insights
4
+ ---
5
+
6
+ # `hailer-sdk ws-config`
7
+
8
+ Manage workspace configuration - pull and push workflow configurations between Hailer and your local repository.
9
+
10
+ **Alias:** `workspace-config`
11
+
12
+ ## Commands Overview
13
+
14
+ | Command | Purpose | Creates | Deletes | Updates |
15
+ |---------|---------|---------|---------|---------|
16
+ | [`pull`](#pull) | Fetch workflows from Hailer | - | - | - |
17
+ | [`push`](#push) | Sync all configurations | ✅ | ✅ | ✅ |
18
+ | [`workflows push`](#workflows-push) | Update workflow configs only | ❌ | ❌ | ✅ |
19
+ | [`workflows sync`](#workflows-sync) | Manage workflow lifecycle | ✅ | ✅ | ❌ |
20
+ | [`phases push`](#phases-push) | Manage phase configs | ✅ | ✅ | ✅ |
21
+ | [`fields push`](#fields-push) | Manage field configs | ✅ | ✅ | ✅ |
22
+ | [`groups push`](#groups-push) | Manage group configs | ✅ | ✅ | ✅ |
23
+ | [`teams push`](#teams-push) | Manage team configs | ✅ | ✅ | ✅ |
24
+ | [`insights push`](#insights-push) | Manage insights configs | ✅ | ✅ | ✅ |
25
+
26
+ ## Common Options
27
+
28
+ All subcommands support these options:
29
+
30
+ | Option | Alias | Description |
31
+ |--------|-------|-------------|
32
+ | `--email <email>` | `-e` | Hailer account email |
33
+ | `--password <password>` | `-p` | Hailer account password |
34
+ | `--workspace <id>` | `-w` | Workspace ID |
35
+ | `--verbose` | | Show detailed logging |
36
+
37
+ ---
38
+
39
+ ## `pull`
40
+
41
+ Pull workflows from Hailer workspace to local files.
42
+
43
+ ### Usage
44
+
45
+ ```bash
46
+ hailer-sdk ws-config pull -e <email> -p <password> -w <workspace-id>
47
+ ```
48
+
49
+ ### What it Does
50
+
51
+ Fetches all workflows from your Hailer workspace and generates local TypeScript files:
52
+
53
+ ```
54
+ workspace/
55
+ ├── workflows.ts # Registry of all workflows
56
+ ├── groups.ts # Group definitions
57
+ ├── teams.ts # Team definitions
58
+ ├── insights.ts # Insights configuration
59
+ ├── enums.ts # All enums (workflows, fields, phases, members)
60
+ ├── hailer.d.ts # Hailer SDK types
61
+ └── WorkflowName_id/ # Individual workflow folders
62
+ ├── main.ts # Workflow configuration
63
+ ├── fields.ts # Field definitions
64
+ └── phases.ts # Phase definitions
65
+ ```
66
+
67
+ ### Generated Enums
68
+
69
+ The `enums.ts` file includes:
70
+
71
+ - **WorkflowIds** - All workflow IDs mapped to workflow names
72
+ - **[Workflow]_FieldIds** - Field IDs for each workflow
73
+ - **[Workflow]_PhaseIds** - Phase IDs for each workflow
74
+ - **WorkspaceMembers** - Workspace member IDs mapped to user names
75
+ - **WorkspaceTeams** - Workspace team IDs mapped to team names
76
+ - **WorkspaceGroups** - Workspace group IDs mapped to group names
77
+ - **HailerMembers** - All member types in Hailer ID format ex. user_${id}, team_${id}, group_${id}
78
+
79
+ ### ID Replacement
80
+
81
+ The pull command automatically replaces hardcoded IDs with enum references:
82
+
83
+ ```typescript
84
+ // Instead of:
85
+ assignedTo: "681b0ef24d80238fd472cc19"
86
+
87
+ // You get:
88
+ assignedTo: WorkspaceMembers.Jari_Jarkov_c19
89
+ ```
90
+
91
+ ### Notes
92
+
93
+ - Enum keys contain the sanitized names of fields, phases, workflows, members, teams, groups plus `_id` 3 characters suffixed to avoid name collisions
94
+ - **Automatically cleans up old workflow directories** that no longer exist remotely
95
+ - IDs are automatically replaced with readable enum references
96
+ - Multiline strings are formatted with template literals
97
+
98
+ ### ⚠️ IMPORTANT: Workspace Directory Management
99
+
100
+ **NEVER manually create or delete workflow directories** in the `workspace/` folder:
101
+
102
+ ```bash
103
+ # ❌ WRONG - Don't manually delete
104
+ rm -rf workspace/MyWorkflow_12345/
105
+
106
+ # ✅ CORRECT - Let pull command manage it
107
+ hailer-sdk ws-config pull
108
+ ```
109
+
110
+ **The SDK automatically manages workflow directories:**
111
+ - Creates new directories when workflows are added remotely
112
+ - Removes directories when workflows are deleted remotely
113
+ - Manual changes can cause sync conflicts
114
+
115
+ **Proper workflow lifecycle:**
116
+ 1. **Create workflow**: Add to `workflows.ts`, create directory, then `workflows sync`
117
+ 2. **Delete workflow**: Use `workflows sync` or delete in Hailer UI, then `pull` to clean up locally
118
+
119
+ ---
120
+
121
+ ## `push`
122
+
123
+ Push ALL local configurations to Hailer workspace (workflows + fields + phases).
124
+
125
+ ### Usage
126
+
127
+ ```bash
128
+ hailer-sdk ws-config push -e <email> -p <password> -w <workspace-id>
129
+ ```
130
+
131
+ ### What it Does
132
+
133
+ Syncs all local configurations with Hailer:
134
+
135
+ 1. **Workflows** - Updates workflow configurations
136
+ 2. **Fields** - Creates, updates, or deletes fields
137
+ 3. **Phases** - Creates, updates, or deletes phases
138
+
139
+ ### Important
140
+
141
+ After pushing, **always pull** to sync your local repository:
142
+
143
+ ```bash
144
+ hailer-sdk ws-config pull
145
+ ```
146
+
147
+ ### When to Use
148
+
149
+ Use `push` when you've made changes to:
150
+ - Workflow configurations in `main.ts`
151
+ - Field definitions in `fields.ts`
152
+ - Phase definitions in `phases.ts`
153
+
154
+ ---
155
+
156
+ ## `workflows push`
157
+
158
+ Update workflow configurations only (does not create or delete workflows).
159
+
160
+ ### Usage
161
+
162
+ ```bash
163
+ hailer-sdk ws-config workflows push -e <email> -p <password> -w <workspace-id>
164
+ ```
165
+
166
+ ### What it Does
167
+
168
+ Updates existing workflow configurations from `main.ts` files without:
169
+ - Creating new workflows
170
+ - Deleting workflows
171
+ - Modifying fields or phases
172
+
173
+ ### When to Use
174
+
175
+ Use when you've only changed workflow-level settings like:
176
+ - Workflow name
177
+ - Phases or fields order
178
+ - Permissions
179
+ - Default
180
+
181
+ ---
182
+
183
+ ## `workflows sync`
184
+
185
+ Manage workflow lifecycle - create and delete workflows.
186
+
187
+ ### Usage
188
+
189
+ ```bash
190
+ hailer-sdk ws-config workflows sync -e <email> -p <password> -w <workspace-id>
191
+ ```
192
+
193
+ ### What it Does
194
+
195
+ - **Creates** new workflows that exist locally but not remotely
196
+ - **Deletes** workflows that exist remotely but not locally
197
+ - **Does NOT update** existing workflow configurations
198
+
199
+ ### When to Use
200
+
201
+ Use when you:
202
+ - Added new workflow directories locally
203
+ - Removed workflow directories you want deleted remotely
204
+
205
+ ### Important
206
+
207
+ This command performs destructive operations. Always:
208
+ 1. Review what will be created/deleted
209
+ 2. Pull after syncing: `hailer-sdk ws-config pull`
210
+
211
+ ---
212
+
213
+ ## `phases push`
214
+
215
+ Push phase configurations to Hailer workspace.
216
+
217
+ ### Usage
218
+
219
+ ```bash
220
+ hailer-sdk ws-config phases push -e <email> -p <password> -w <workspace-id>
221
+ ```
222
+
223
+ ### What it Does
224
+
225
+ For each workflow:
226
+ - **Creates** new phases defined in `phases.ts`
227
+ - **Updates** existing phase configurations
228
+ - **Deletes** phases that exist remotely but not in `phases.ts` (with confirmation)
229
+
230
+ ### User Confirmation
231
+
232
+ When phases exist remotely but not locally, you'll be prompted:
233
+
234
+ ```
235
+ Delete 2 phase(s) from workflow 'Sales Pipeline'? (Y/n)
236
+ ```
237
+
238
+ ### When to Use
239
+
240
+ Use when you've:
241
+ - Added new phases
242
+ - Modified phase configurations
243
+ - Removed phases from `phases.ts`
244
+
245
+ ---
246
+
247
+ ## `fields push`
248
+
249
+ Push field configurations to Hailer workspace.
250
+
251
+ ### Usage
252
+
253
+ ```bash
254
+ hailer-sdk ws-config fields push -e <email> -p <password> -w <workspace-id>
255
+ ```
256
+
257
+ ### What it Does
258
+
259
+ For each workflow:
260
+ - **Creates** new fields defined in `fields.ts`
261
+ - **Updates** existing field configurations
262
+ - **Deletes** fields that exist remotely but not in `fields.ts` (with confirmation)
263
+
264
+ ### Important Notes
265
+
266
+ - Field `key` cannot be updated via API (read-only)
267
+ - Changes to field types may require data migration
268
+ - Always test in a non-production workspace first
269
+ -
270
+ **⚠️ NOTE:** Fields shouldn't have same name, `label`, if they do one field will be removed during push
271
+
272
+ ### When to Use
273
+
274
+ Use when you've:
275
+ - Added new fields
276
+ - Modified field configurations
277
+ - Removed fields from `fields.ts`
278
+
279
+ ---
280
+
281
+ ## `groups push`
282
+
283
+ Push group configurations to Hailer workspace.
284
+
285
+ ### Usage
286
+
287
+ ```bash
288
+ hailer-sdk ws-config groups push -e <email> -p <password> -w <workspace-id>
289
+ ```
290
+
291
+ ### What it Does
292
+
293
+ For the workspace:
294
+ - **Creates** new groups defined in `groups.ts`
295
+ - **Updates** existing group configurations
296
+ - **Deletes** groups that exist remotely but not in `groups.ts` (with confirmation)
297
+
298
+ ### User Confirmation
299
+
300
+ When groups exist remotely but not locally, you'll be prompted:
301
+
302
+ ```
303
+ Delete 2 group(s) from workspace? (Y/n)
304
+ ```
305
+
306
+ ### When to Use
307
+
308
+ Use when you've:
309
+ - Added new groups
310
+ - Modified group configurations (name, members, permissions)
311
+ - Removed groups from `groups.ts`
312
+
313
+ ---
314
+
315
+ ## `teams push`
316
+
317
+ Push team configurations to Hailer workspace.
318
+
319
+ ### Usage
320
+
321
+ ```bash
322
+ hailer-sdk ws-config teams push -e <email> -p <password> -w <workspace-id>
323
+ ```
324
+
325
+ ### What it Does
326
+
327
+ For the workspace:
328
+ - **Creates** new teams defined in `teams.ts`
329
+ - **Updates** existing team configurations
330
+ - **Deletes** teams that exist remotely but not in `teams.ts` (with confirmation)
331
+
332
+ ### User Confirmation
333
+
334
+ When teams exist remotely but not locally, you'll be prompted:
335
+
336
+ ```
337
+ Delete 2 team(s) from workspace? (Y/n)
338
+ ```
339
+
340
+ ### When to Use
341
+
342
+ Use when you've:
343
+ - Added new teams
344
+ - Modified team configurations (name, members, permissions)
345
+ - Removed teams from `teams.ts`
346
+
347
+ ---
348
+
349
+ ## `insights push`
350
+
351
+ Push insights configurations to Hailer workspace.
352
+
353
+ ### Usage
354
+
355
+ ```bash
356
+ hailer-sdk ws-config insights push -e <email> -p <password> -w <workspace-id>
357
+ ```
358
+
359
+ ### What it Does
360
+
361
+ For the workspace:
362
+ - **Creates** new insights defined in `insights.ts`
363
+ - **Updates** existing insight configurations (query, sources, members, permissions)
364
+ - **Deletes** insights that exist remotely but not in `insights.ts` (with confirmation)
365
+
366
+ ### User Confirmation
367
+
368
+ When insights exist remotely but not locally, you'll be prompted:
369
+
370
+ ```
371
+ Delete 2 insight(s) from workspace? (Y/n)
372
+ ```
373
+
374
+ ### When to Use
375
+
376
+ Use when you've:
377
+ - Added new insights
378
+ - Modified insight queries or data sources
379
+ - Changed insight members or permissions
380
+ - Removed insights from `insights.ts`
381
+
382
+ ### Notes
383
+
384
+ - Insights are workspace-level resources
385
+ - Members are managed separately from insight properties
386
+ - Insight queries use SQLite3 syntax
387
+
388
+ ---
389
+
390
+ ## Typical Workflow
391
+
392
+ Here's the recommended workflow for managing configurations:
393
+
394
+ ### 1. Initial Setup
395
+
396
+ ```bash
397
+ # Pull existing configuration
398
+ hailer-sdk ws-config pull
399
+ ```
400
+
401
+ ### 2. Make Changes
402
+
403
+ Edit the TypeScript files in `workspace/`:
404
+ - Modify `main.ts` for workflow settings
405
+ - Edit `fields.ts` to add/update fields
406
+ - Edit `phases.ts` to add/update phases
407
+
408
+ ### 3. Push Changes
409
+
410
+ ```bash
411
+ # Push all changes at once
412
+ hailer-sdk ws-config push
413
+
414
+ # Or push specific components
415
+ hailer-sdk ws-config workflows push
416
+ hailer-sdk ws-config fields push
417
+ hailer-sdk ws-config phases push
418
+ hailer-sdk ws-config groups push
419
+ hailer-sdk ws-config teams push
420
+ ```
421
+
422
+ ### 4. Sync Local Repository
423
+
424
+ ```bash
425
+ # Always pull after pushing to stay in sync
426
+ hailer-sdk ws-config pull
427
+ ```
428
+
429
+ ## Tips
430
+
431
+ - **Use enums** - Reference IDs using the generated enums for type safety
432
+ - **Version control** - Commit your `workspace/` directory to git
433
+ - **Test first** - Test changes in a development workspace before production
434
+ - **Pull often** - Pull before making changes to avoid conflicts
435
+ - **Push incrementally** - Push specific components instead of everything at once
package/CHANGELOG.md ADDED
@@ -0,0 +1,67 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [0.0.4] - 28-11-2025
8
+
9
+ ### Added
10
+
11
+ - CHANGELOG.md for version tracking
12
+ - Release scripts (`npm run release:patch/minor/major`) with auto npm publish
13
+
14
+ ## [0.0.3] - 28-11-2025
15
+
16
+ ### Added
17
+
18
+ - **Claude Code Hooks**: Auto-loading system for skills and safety guards
19
+ - `PreToolUse.sh` - Auto-loads SDK skills before bash commands
20
+ - `sdk-delete-guard.cjs` - Blocks destructive SDK commands, requires user confirmation
21
+ - `prompt-skill-loader.cjs` - Keyword-based disambiguation for ambiguous prompts
22
+ - `skill-loader.cjs` - Auto-loads skills before MCP tool calls
23
+
24
+ - Discussion tools: Find activity from discussion ID and vice versa
25
+ - Nuclear tool safety with opt-in access model
26
+ - Safety confirmations for destructive operations
27
+ - Configurable paths for workspace configs and dev apps
28
+
29
+ ### Changed
30
+
31
+ - Skills renamed to `MCP-*`/`SDK-*` prefix for clarity
32
+ - Skills optimized for Sonnet model token usage
33
+ - Default port changed from 3000 to 3030
34
+ - Documentation updates
35
+
36
+ ### Removed
37
+
38
+ - Template tools (moved to hailer-sdk)
39
+ - `/generate-types` command
40
+
41
+ ### Fixed
42
+
43
+ - Config import in app tools
44
+
45
+ ## [0.0.2] - 28-11-2025
46
+
47
+ ### Changed
48
+
49
+ - Updated README for npm package usage
50
+ - npm package readiness updates
51
+
52
+ ## [0.0.1] - 20-11-2025
53
+
54
+ ### Added
55
+
56
+ - Initial release
57
+ - 34+ MCP tools for Hailer integration with Claude Code
58
+ - Activity tools (create, read, update, delete with bulk support)
59
+ - Workflow tools (manage workflows, fields, phases, schemas)
60
+ - Discussion tools (chat/messaging within activities)
61
+ - Insight tools (SQL-like reporting over workflow data)
62
+ - App tools (Hailer app management and deployment)
63
+ - HTTP MCP server with SSE support
64
+ - Automated agent responding to @mentions
65
+ - Per-agent access control via tool groups
66
+ - Multi-workspace support with caching
67
+ - Skill documentation system