@hailer/mcp 1.1.11 → 1.1.13

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 (252) hide show
  1. package/dist/app.js +18 -5
  2. package/dist/bot/bot-config.d.ts +12 -1
  3. package/dist/bot/bot-config.js +98 -14
  4. package/dist/bot/bot-manager.d.ts +13 -3
  5. package/dist/bot/bot-manager.js +80 -25
  6. package/dist/bot/bot.d.ts +46 -0
  7. package/dist/bot/bot.js +542 -166
  8. package/dist/bot/services/message-classifier.js +17 -0
  9. package/dist/bot/services/permission-guard.d.ts +52 -0
  10. package/dist/bot/services/permission-guard.js +149 -0
  11. package/dist/bot/services/types.d.ts +5 -0
  12. package/dist/bot/services/typing-indicator.d.ts +6 -1
  13. package/dist/bot/services/typing-indicator.js +19 -3
  14. package/dist/config.d.ts +6 -1
  15. package/dist/config.js +43 -0
  16. package/dist/core.js +3 -6
  17. package/dist/mcp/UserContextCache.d.ts +5 -0
  18. package/dist/mcp/UserContextCache.js +51 -19
  19. package/dist/mcp/hailer-clients.d.ts +19 -1
  20. package/dist/mcp/hailer-clients.js +157 -20
  21. package/dist/mcp/session-store.d.ts +68 -0
  22. package/dist/mcp/session-store.js +169 -0
  23. package/dist/mcp/signal-handler.js +12 -12
  24. package/dist/mcp/tool-registry.d.ts +17 -4
  25. package/dist/mcp/tool-registry.js +37 -7
  26. package/dist/mcp/tools/activity.js +99 -7
  27. package/dist/mcp/tools/app-scaffold.js +304 -336
  28. package/dist/mcp/tools/company.d.ts +9 -0
  29. package/dist/mcp/tools/company.js +88 -0
  30. package/dist/mcp/tools/discussion.js +68 -0
  31. package/dist/mcp/tools/workflow-permissions.d.ts +15 -0
  32. package/dist/mcp/tools/workflow-permissions.js +204 -0
  33. package/dist/mcp/tools/workflow.js +57 -18
  34. package/dist/mcp/utils/index.d.ts +2 -0
  35. package/dist/mcp/utils/index.js +12 -1
  36. package/dist/mcp/utils/role-utils.d.ts +74 -0
  37. package/dist/mcp/utils/role-utils.js +151 -0
  38. package/dist/mcp/utils/types.d.ts +43 -1
  39. package/dist/mcp/utils/types.js +14 -0
  40. package/dist/mcp/webhook-handler.d.ts +6 -0
  41. package/dist/mcp/webhook-handler.js +11 -0
  42. package/dist/mcp-server.d.ts +23 -2
  43. package/dist/mcp-server.js +639 -111
  44. package/dist/plugins/vipunen/client.d.ts +150 -0
  45. package/dist/plugins/vipunen/client.js +535 -0
  46. package/dist/plugins/vipunen/config/schema-config.json +19 -0
  47. package/dist/plugins/vipunen/config/schema-doc.json +22 -0
  48. package/dist/plugins/vipunen/index.d.ts +41 -0
  49. package/dist/plugins/vipunen/index.js +88 -0
  50. package/dist/plugins/vipunen/tools.d.ts +26 -0
  51. package/dist/plugins/vipunen/tools.js +501 -0
  52. package/package.json +2 -1
  53. package/.claude/.context-watchdog.json +0 -1
  54. package/.claude/.session-checked +0 -1
  55. package/.claude/CLAUDE.md +0 -370
  56. package/.claude/agents/agent-ada-skill-builder.md +0 -94
  57. package/.claude/agents/agent-alejandro-function-fields.md +0 -342
  58. package/.claude/agents/agent-bjorn-config-audit.md +0 -103
  59. package/.claude/agents/agent-builder-agent-creator.md +0 -130
  60. package/.claude/agents/agent-code-simplifier.md +0 -53
  61. package/.claude/agents/agent-dmitri-activity-crud.md +0 -159
  62. package/.claude/agents/agent-giuseppe-app-builder.md +0 -247
  63. package/.claude/agents/agent-gunther-mcp-tools.md +0 -39
  64. package/.claude/agents/agent-helga-workflow-config.md +0 -204
  65. package/.claude/agents/agent-igor-activity-mover-automation.md +0 -125
  66. package/.claude/agents/agent-ingrid-doc-templates.md +0 -261
  67. package/.claude/agents/agent-ivan-monolith.md +0 -154
  68. package/.claude/agents/agent-kenji-data-reader.md +0 -86
  69. package/.claude/agents/agent-lars-code-inspector.md +0 -102
  70. package/.claude/agents/agent-marco-mockup-builder.md +0 -110
  71. package/.claude/agents/agent-marcus-api-documenter.md +0 -323
  72. package/.claude/agents/agent-marketplace-publisher.md +0 -280
  73. package/.claude/agents/agent-marketplace-reviewer.md +0 -309
  74. package/.claude/agents/agent-permissions-handler.md +0 -208
  75. package/.claude/agents/agent-simple-writer.md +0 -48
  76. package/.claude/agents/agent-svetlana-code-review.md +0 -171
  77. package/.claude/agents/agent-tanya-test-runner.md +0 -333
  78. package/.claude/agents/agent-ui-designer.md +0 -100
  79. package/.claude/agents/agent-viktor-sql-insights.md +0 -212
  80. package/.claude/agents/agent-web-search.md +0 -55
  81. package/.claude/agents/agent-yevgeni-discussions.md +0 -45
  82. package/.claude/agents/agent-zara-zapier.md +0 -159
  83. package/.claude/commands/app-squad.md +0 -135
  84. package/.claude/commands/audit-squad.md +0 -158
  85. package/.claude/commands/autoplan.md +0 -563
  86. package/.claude/commands/cleanup-squad.md +0 -98
  87. package/.claude/commands/config-squad.md +0 -106
  88. package/.claude/commands/crud-squad.md +0 -87
  89. package/.claude/commands/data-squad.md +0 -97
  90. package/.claude/commands/debug-squad.md +0 -303
  91. package/.claude/commands/doc-squad.md +0 -65
  92. package/.claude/commands/handoff.md +0 -137
  93. package/.claude/commands/health.md +0 -49
  94. package/.claude/commands/help.md +0 -29
  95. package/.claude/commands/help:agents.md +0 -151
  96. package/.claude/commands/help:commands.md +0 -78
  97. package/.claude/commands/help:faq.md +0 -79
  98. package/.claude/commands/help:plugins.md +0 -50
  99. package/.claude/commands/help:skills.md +0 -93
  100. package/.claude/commands/help:tools.md +0 -75
  101. package/.claude/commands/hotfix-squad.md +0 -112
  102. package/.claude/commands/integration-squad.md +0 -82
  103. package/.claude/commands/janitor-squad.md +0 -167
  104. package/.claude/commands/learn-auto.md +0 -120
  105. package/.claude/commands/learn.md +0 -120
  106. package/.claude/commands/mcp-list.md +0 -27
  107. package/.claude/commands/onboard-squad.md +0 -140
  108. package/.claude/commands/plan-workspace.md +0 -732
  109. package/.claude/commands/prd.md +0 -130
  110. package/.claude/commands/project-status.md +0 -82
  111. package/.claude/commands/publish.md +0 -138
  112. package/.claude/commands/recap.md +0 -69
  113. package/.claude/commands/restore.md +0 -64
  114. package/.claude/commands/review-squad.md +0 -152
  115. package/.claude/commands/save.md +0 -24
  116. package/.claude/commands/stats.md +0 -19
  117. package/.claude/commands/swarm.md +0 -210
  118. package/.claude/commands/tool-builder.md +0 -39
  119. package/.claude/commands/ws-pull.md +0 -44
  120. package/.claude/hooks/_shared-memory.cjs +0 -305
  121. package/.claude/hooks/_utils.cjs +0 -108
  122. package/.claude/hooks/agent-failure-detector.cjs +0 -383
  123. package/.claude/hooks/agent-usage-logger.cjs +0 -204
  124. package/.claude/hooks/app-edit-guard.cjs +0 -494
  125. package/.claude/hooks/auto-learn.cjs +0 -304
  126. package/.claude/hooks/bash-guard.cjs +0 -272
  127. package/.claude/hooks/builder-mode-manager.cjs +0 -354
  128. package/.claude/hooks/bulk-activity-guard.cjs +0 -271
  129. package/.claude/hooks/context-watchdog.cjs +0 -230
  130. package/.claude/hooks/delegation-reminder.cjs +0 -465
  131. package/.claude/hooks/design-system-lint.cjs +0 -271
  132. package/.claude/hooks/post-scaffold-hook.cjs +0 -181
  133. package/.claude/hooks/prompt-guard.cjs +0 -354
  134. package/.claude/hooks/publish-template-guard.cjs +0 -147
  135. package/.claude/hooks/session-start.cjs +0 -35
  136. package/.claude/hooks/shared-memory-writer.cjs +0 -147
  137. package/.claude/hooks/skill-injector.cjs +0 -140
  138. package/.claude/hooks/skill-usage-logger.cjs +0 -258
  139. package/.claude/hooks/src-edit-guard.cjs +0 -240
  140. package/.claude/hooks/sync-marketplace-agents.cjs +0 -346
  141. package/.claude/settings.json +0 -257
  142. package/.claude/skills/SDK-activity-patterns/SKILL.md +0 -428
  143. package/.claude/skills/SDK-document-templates/SKILL.md +0 -1033
  144. package/.claude/skills/SDK-function-fields/SKILL.md +0 -542
  145. package/.claude/skills/SDK-generate-skill/SKILL.md +0 -92
  146. package/.claude/skills/SDK-init-skill/SKILL.md +0 -127
  147. package/.claude/skills/SDK-insight-queries/SKILL.md +0 -787
  148. package/.claude/skills/SDK-ws-config-skill/SKILL.md +0 -1139
  149. package/.claude/skills/agent-structure/SKILL.md +0 -98
  150. package/.claude/skills/api-documentation-patterns/SKILL.md +0 -474
  151. package/.claude/skills/chrome-mcp-reference/SKILL.md +0 -370
  152. package/.claude/skills/delegation-routing/SKILL.md +0 -202
  153. package/.claude/skills/frontend-design/SKILL.md +0 -254
  154. package/.claude/skills/hailer-activity-mover/SKILL.md +0 -213
  155. package/.claude/skills/hailer-api-client/SKILL.md +0 -518
  156. package/.claude/skills/hailer-app-builder/SKILL.md +0 -1434
  157. package/.claude/skills/hailer-apps-pictures/SKILL.md +0 -269
  158. package/.claude/skills/hailer-design-system/SKILL.md +0 -235
  159. package/.claude/skills/hailer-monolith-automations/SKILL.md +0 -686
  160. package/.claude/skills/hailer-permissions-system/SKILL.md +0 -121
  161. package/.claude/skills/hailer-project-protocol/SKILL.md +0 -488
  162. package/.claude/skills/hailer-rest-api/SKILL.md +0 -61
  163. package/.claude/skills/hailer-rest-api/hailer-activities.md +0 -184
  164. package/.claude/skills/hailer-rest-api/hailer-admin.md +0 -473
  165. package/.claude/skills/hailer-rest-api/hailer-calendar.md +0 -256
  166. package/.claude/skills/hailer-rest-api/hailer-feed.md +0 -249
  167. package/.claude/skills/hailer-rest-api/hailer-insights.md +0 -195
  168. package/.claude/skills/hailer-rest-api/hailer-messaging.md +0 -276
  169. package/.claude/skills/hailer-rest-api/hailer-workflows.md +0 -283
  170. package/.claude/skills/insight-join-patterns/SKILL.md +0 -174
  171. package/.claude/skills/integration-patterns/SKILL.md +0 -421
  172. package/.claude/skills/json-only-output/SKILL.md +0 -72
  173. package/.claude/skills/lsp-setup/SKILL.md +0 -160
  174. package/.claude/skills/mcp-direct-tools/SKILL.md +0 -153
  175. package/.claude/skills/optional-parameters/SKILL.md +0 -72
  176. package/.claude/skills/publish-hailer-app/SKILL.md +0 -244
  177. package/.claude/skills/testing-patterns/SKILL.md +0 -630
  178. package/.claude/skills/tool-builder/SKILL.md +0 -250
  179. package/.claude/skills/tool-parameter-usage/SKILL.md +0 -126
  180. package/.claude/skills/tool-response-verification/SKILL.md +0 -92
  181. package/.claude/skills/zapier-hailer-patterns/SKILL.md +0 -581
  182. package/.hailer-mcp-port +0 -1
  183. package/.mcp.json +0 -13
  184. package/.opencode/agent/agent-ada-skill-builder.md +0 -35
  185. package/.opencode/agent/agent-alejandro-function-fields.md +0 -39
  186. package/.opencode/agent/agent-bjorn-config-audit.md +0 -36
  187. package/.opencode/agent/agent-builder-agent-creator.md +0 -39
  188. package/.opencode/agent/agent-code-simplifier.md +0 -31
  189. package/.opencode/agent/agent-dmitri-activity-crud.md +0 -40
  190. package/.opencode/agent/agent-giuseppe-app-builder.md +0 -37
  191. package/.opencode/agent/agent-gunther-mcp-tools.md +0 -39
  192. package/.opencode/agent/agent-helga-workflow-config.md +0 -204
  193. package/.opencode/agent/agent-igor-activity-mover-automation.md +0 -46
  194. package/.opencode/agent/agent-ingrid-doc-templates.md +0 -39
  195. package/.opencode/agent/agent-ivan-monolith.md +0 -46
  196. package/.opencode/agent/agent-kenji-data-reader.md +0 -53
  197. package/.opencode/agent/agent-lars-code-inspector.md +0 -28
  198. package/.opencode/agent/agent-marco-mockup-builder.md +0 -42
  199. package/.opencode/agent/agent-marcus-api-documenter.md +0 -53
  200. package/.opencode/agent/agent-marketplace-publisher.md +0 -44
  201. package/.opencode/agent/agent-marketplace-reviewer.md +0 -42
  202. package/.opencode/agent/agent-permissions-handler.md +0 -50
  203. package/.opencode/agent/agent-simple-writer.md +0 -45
  204. package/.opencode/agent/agent-svetlana-code-review.md +0 -39
  205. package/.opencode/agent/agent-tanya-test-runner.md +0 -57
  206. package/.opencode/agent/agent-ui-designer.md +0 -56
  207. package/.opencode/agent/agent-viktor-sql-insights.md +0 -34
  208. package/.opencode/agent/agent-web-search.md +0 -42
  209. package/.opencode/agent/agent-yevgeni-discussions.md +0 -37
  210. package/.opencode/agent/agent-zara-zapier.md +0 -53
  211. package/.opencode/commands/app-squad.md +0 -135
  212. package/.opencode/commands/audit-squad.md +0 -158
  213. package/.opencode/commands/autoplan.md +0 -563
  214. package/.opencode/commands/cleanup-squad.md +0 -98
  215. package/.opencode/commands/config-squad.md +0 -106
  216. package/.opencode/commands/crud-squad.md +0 -87
  217. package/.opencode/commands/data-squad.md +0 -97
  218. package/.opencode/commands/debug-squad.md +0 -303
  219. package/.opencode/commands/doc-squad.md +0 -65
  220. package/.opencode/commands/handoff.md +0 -137
  221. package/.opencode/commands/health.md +0 -49
  222. package/.opencode/commands/help-agents.md +0 -151
  223. package/.opencode/commands/help-commands.md +0 -32
  224. package/.opencode/commands/help-faq.md +0 -29
  225. package/.opencode/commands/help-plugins.md +0 -28
  226. package/.opencode/commands/help-skills.md +0 -7
  227. package/.opencode/commands/help-tools.md +0 -40
  228. package/.opencode/commands/help.md +0 -28
  229. package/.opencode/commands/hotfix-squad.md +0 -112
  230. package/.opencode/commands/integration-squad.md +0 -82
  231. package/.opencode/commands/janitor-squad.md +0 -167
  232. package/.opencode/commands/learn-auto.md +0 -120
  233. package/.opencode/commands/learn.md +0 -120
  234. package/.opencode/commands/mcp-list.md +0 -27
  235. package/.opencode/commands/onboard-squad.md +0 -140
  236. package/.opencode/commands/plan-workspace.md +0 -732
  237. package/.opencode/commands/prd.md +0 -131
  238. package/.opencode/commands/project-status.md +0 -82
  239. package/.opencode/commands/publish.md +0 -138
  240. package/.opencode/commands/recap.md +0 -69
  241. package/.opencode/commands/restore.md +0 -64
  242. package/.opencode/commands/review-squad.md +0 -152
  243. package/.opencode/commands/save.md +0 -24
  244. package/.opencode/commands/stats.md +0 -19
  245. package/.opencode/commands/swarm.md +0 -210
  246. package/.opencode/commands/tool-builder.md +0 -39
  247. package/.opencode/commands/ws-pull.md +0 -44
  248. package/.opencode/opencode.json +0 -21
  249. package/inbox/failures.log +0 -1
  250. package/inbox/usage.jsonl +0 -4
  251. package/scripts/postinstall.cjs +0 -64
  252. package/scripts/test-hal-tools.ts +0 -154
@@ -1,98 +0,0 @@
1
- ---
2
- name: agent-structure
3
- description: Template for creating new Hailer SDK agents
4
- version: 1.1.0
5
- triggers: create agent, new agent, agent template
6
- ---
7
-
8
- # Agent Structure Template
9
-
10
- Use this template when creating new agents.
11
-
12
- ## File Location
13
-
14
- `.claude/agents/agent-{name}-{role}.md`
15
-
16
- ## Template
17
-
18
- ```markdown
19
- ---
20
- name: agent-{name}-{role}
21
- description: What it does.\n\n<example>\nuser: "request"\nassistant: {"status":"success","result":{},"summary":"Done"}\n</example>
22
- model: haiku|sonnet
23
- tools: tool_1, tool_2
24
- ---
25
-
26
- <identity>
27
- I am {Name}, {nationality} {role} specialist. {Philosophy}. Output JSON. Full stop.
28
- </identity>
29
-
30
- <handles>
31
- - Task 1
32
- - Task 2
33
- </handles>
34
-
35
- <skills>
36
- Load `skill-name` before complex tasks.
37
- </skills>
38
-
39
- <rules>
40
- 1. **NEVER FABRICATE** - Must call tools.
41
- 2. Rule 2
42
- 3. Rule 3
43
- </rules>
44
-
45
- <protocol>
46
- Input: JSON task spec
47
- Output: JSON only
48
- Schema: { "status": "success|error", "result": {}, "summary": "max 50 chars" }
49
- </protocol>
50
- ```
51
-
52
- ## Identity Shapes Behavior
53
-
54
- **The `<identity>` section is the most powerful lever for agent behavior** - more than rules.
55
-
56
- Rules tell agents what NOT to do. Identity tells them WHO they are and HOW they work. When an agent fabricates results despite having "NEVER FABRICATE" as rule 1, the fix is usually to rewrite identity to emphasize tool-first behavior.
57
-
58
- **Good identity (tool-centric):**
59
- ```
60
- I am Kenji. I read files. I query APIs. I verify data. Every answer comes from a tool call. Output JSON. Full stop.
61
- ```
62
-
63
- **Weak identity (role-centric only):**
64
- ```
65
- I am Kenji, a data reader specialist.
66
- ```
67
-
68
- **Additionally:** Give explicit step-by-step commands in the Task prompt, not just "do X". Agents follow concrete instructions better than abstract goals.
69
-
70
- ## Model Selection
71
-
72
- | Model | Use for | Cost |
73
- |-------|---------|------|
74
- | `haiku` | Procedural/checklist work, CRUD, simple lookups | Cheap, fast |
75
- | `sonnet` | Complex reasoning, code generation, validation logic | More expensive |
76
-
77
- ## Status Values
78
-
79
- | Status | Meaning | Orchestrator Action |
80
- |--------|---------|---------------------|
81
- | `success` | Task completed | Report to user |
82
- | `error` | Task failed | Report error, maybe retry |
83
- | `ready_to_push` | Files edited, needs push | Run commands in `commands` array |
84
- | `needs_confirmation` | Destructive action | Ask user, then run `safe_command` |
85
-
86
- ## Naming Convention
87
-
88
- - `agent-kenji-data-reader` - Kenji reads data
89
- - `agent-helga-workflow-config` - Helga configures workflows
90
- - `agent-igor-activity-mover-automation` - Igor builds activity movers
91
-
92
- Pattern: `agent-{firstname}-{domain}`
93
-
94
- ## Customization
95
-
96
- - **CREATE:** Add to `.claude/agents/`
97
- - **MODIFY:** Edit `.claude/agents/*.md`
98
- - **DISABLE:** Move to `docs/agents/`
@@ -1,474 +0,0 @@
1
- ---
2
- name: api-documentation-patterns
3
- description: Hailer API documentation standards - research workflow, section structure, example patterns
4
- version: 1.0.0
5
- triggers: Document endpoint, API documentation, @hailer/cli examples, Socket.IO signals
6
- ---
7
-
8
- # API Documentation Patterns
9
-
10
- ## Research Workflow
11
-
12
- Before documenting any endpoint, follow this research sequence:
13
-
14
- ### 1. Find Test Usage
15
-
16
- ```bash
17
- # Search test files for endpoint usage
18
- grep -n -A 10 -B 5 "endpoint.name" test/test-*.ts
19
-
20
- # Example
21
- grep -n -A 10 "v3.activity.archive" test/test-api-activities.ts
22
- ```
23
-
24
- ### 2. Find Implementation
25
-
26
- ```bash
27
- # RPC endpoints (v2, v3)
28
- grep -n -A 30 "_endpointName.*{" src/api/v3/
29
- grep -n -A 30 "endpointName: async" src/modules/
30
-
31
- # REST endpoints
32
- grep -n -A 30 "router\.(get|post|put|delete)" src/route-*.ts
33
- ```
34
-
35
- ### 3. Extract Validation Schemas
36
-
37
- ```bash
38
- # Find Joi validation
39
- grep -n -A 15 "validate.*req.*context" src/api/v3/
40
- grep -n -A 10 "Joi.object" src/api/v3/
41
- ```
42
-
43
- ### 4. Find Socket.IO Signals
44
-
45
- ```bash
46
- # Find signal broadcasts
47
- grep -n "broadcastCompany\|broadcastUsers" src/
48
- grep -n -A 5 "sig.*:" src/modules/
49
- ```
50
-
51
- ### 5. Check Permissions
52
-
53
- ```bash
54
- # Find permission checks
55
- grep -n "permission\|requireAuth\|checkAccess" src/api/v3/
56
- ```
57
-
58
- ---
59
-
60
- ## Required Documentation Structure
61
-
62
- Every endpoint MUST have these 10 sections in order:
63
-
64
- ### Section 1: Title and Description
65
-
66
- ```markdown
67
- # v3.activity.archive
68
-
69
- Archives one or more activities, removing them from active workflow views while preserving all data for compliance, reporting, and potential restoration.
70
-
71
- **Use Cases:**
72
- - Clean up completed project activities
73
- - Archive old records for compliance
74
- - Remove activities from active views without data loss
75
- ```
76
-
77
- ### Section 2: Understanding Context
78
-
79
- ```markdown
80
- ## Understanding Activity Archiving
81
-
82
- Archiving is a **soft-delete** operation in Hailer:
83
-
84
- - **Preserved**: All activity data, field values, history, and attachments remain intact
85
- - **Hidden**: Archived activities don't appear in standard workflow views
86
- - **Restorable**: Admin users can restore archived activities at any time
87
- - **Queryable**: Archived activities can still be included in insights with special filters
88
-
89
- ### Archive vs Delete
90
-
91
- | Operation | Data Preserved | Restorable | Appears in Views |
92
- |-----------|---------------|------------|------------------|
93
- | Archive | Yes | Yes | No (by default) |
94
- | Delete | No | No | No |
95
- ```
96
-
97
- ### Section 3: Prerequisites
98
-
99
- ```markdown
100
- ## Prerequisites
101
-
102
- ### Authentication
103
- - Valid session token required
104
- - User must be logged in
105
-
106
- ### Permissions
107
- One of the following:
108
- - `admin` workflow permission
109
- - `any` workflow permission
110
- - `own` permission AND activity owner
111
-
112
- ### Activity State
113
- - Activity must exist
114
- - Activity must not already be archived
115
- ```
116
-
117
- ### Section 4: Request Parameters
118
-
119
- ```markdown
120
- ## Request Parameters
121
-
122
- | Parameter | Type | Required | Description |
123
- |-----------|------|----------|-------------|
124
- | `activityIds` | string[] | Yes | Array of activity IDs to archive (max 100) |
125
- | `options` | object | No | Additional options |
126
- | `options.archiveLinked` | boolean | No | Also archive linked activities (default: false) |
127
- | `options.reason` | string | No | Archive reason for audit log |
128
-
129
- ### Parameter Details
130
-
131
- **activityIds**
132
- - Must be valid MongoDB ObjectIds
133
- - Maximum 100 activities per request
134
- - All activities must be in same workspace
135
-
136
- **options.archiveLinked**
137
- - When true, also archives activities linked TO these activities
138
- - Does not archive activities that link FROM these activities
139
- ```
140
-
141
- ### Section 5: Response Structure
142
-
143
- ```markdown
144
- ## Response Structure
145
-
146
- ### Success Response
147
-
148
- ```json
149
- {
150
- "archived": ["64a1b2c3d4e5f6a7b8c9d0e1", "64a1b2c3d4e5f6a7b8c9d0e2"],
151
- "failed": [],
152
- "count": 2
153
- }
154
- ```
155
-
156
- ### Partial Success Response
157
-
158
- ```json
159
- {
160
- "archived": ["64a1b2c3d4e5f6a7b8c9d0e1"],
161
- "failed": [
162
- {
163
- "activityId": "64a1b2c3d4e5f6a7b8c9d0e2",
164
- "reason": "Permission denied"
165
- }
166
- ],
167
- "count": 1
168
- }
169
- ```
170
-
171
- | Field | Type | Description |
172
- |-------|------|-------------|
173
- | `archived` | string[] | IDs of successfully archived activities |
174
- | `failed` | object[] | Activities that failed with reasons |
175
- | `count` | number | Number of successfully archived activities |
176
- ```
177
-
178
- ### Section 6: Examples (ALL 4 REQUIRED)
179
-
180
- ```markdown
181
- ## Examples
182
-
183
- ### Basic Usage
184
-
185
- ```javascript
186
- // Archive single activity
187
- const result = await client.request('v3.activity.archive', [
188
- ['64a1b2c3d4e5f6a7b8c9d0e1']
189
- ]);
190
- console.log(`Archived ${result.count} activities`);
191
-
192
- // Archive multiple activities
193
- const result = await client.request('v3.activity.archive', [
194
- ['64a1b2c3d4e5f6a7b8c9d0e1', '64a1b2c3d4e5f6a7b8c9d0e2']
195
- ]);
196
- ```
197
-
198
- ### Simplified Function
199
-
200
- ```javascript
201
- // Direct call syntax
202
- const result = v3.activity.archive(['activity_id_1', 'activity_id_2']);
203
- ```
204
-
205
- ### Complete Implementation
206
-
207
- ```javascript
208
- class ActivityArchiver {
209
- constructor(client) {
210
- this.client = client;
211
- }
212
-
213
- async archiveActivities(activityIds, options = {}) {
214
- // Validate input
215
- if (!activityIds || activityIds.length === 0) {
216
- throw new Error('At least one activity ID required');
217
- }
218
-
219
- if (activityIds.length > 100) {
220
- throw new Error('Maximum 100 activities per request');
221
- }
222
-
223
- try {
224
- const result = await this.client.request('v3.activity.archive', [
225
- activityIds,
226
- options
227
- ]);
228
-
229
- // Log results
230
- console.log(`Archived: ${result.archived.length}`);
231
-
232
- if (result.failed.length > 0) {
233
- console.warn('Some activities failed to archive:');
234
- result.failed.forEach(f => {
235
- console.warn(` - ${f.activityId}: ${f.reason}`);
236
- });
237
- }
238
-
239
- return result;
240
- } catch (error) {
241
- this.handleError(error);
242
- throw error;
243
- }
244
- }
245
-
246
- handleError(error) {
247
- switch (error.code) {
248
- case 'NotFound':
249
- console.error('One or more activities not found');
250
- break;
251
- case 'PermissionDenied':
252
- console.error('Insufficient permissions to archive');
253
- break;
254
- case 'InvalidArguments':
255
- console.error('Invalid activity IDs provided');
256
- break;
257
- default:
258
- console.error('Archive operation failed:', error.message);
259
- }
260
- }
261
- }
262
-
263
- // Usage
264
- const archiver = new ActivityArchiver(client);
265
- await archiver.archiveActivities(['id1', 'id2'], { reason: 'Project completed' });
266
- ```
267
-
268
- ### Integration Example
269
-
270
- ```javascript
271
- // Archive all completed activities older than 90 days
272
- async function archiveOldCompletedActivities(client, workflowId, completedPhaseId) {
273
- const ninetyDaysAgo = Date.now() - (90 * 24 * 60 * 60 * 1000);
274
-
275
- // Get old completed activities
276
- const activities = await client.request('v3.activity.list', [{
277
- processId: workflowId,
278
- phaseId: completedPhaseId,
279
- filter: {
280
- updated: { $lt: ninetyDaysAgo }
281
- },
282
- limit: 100
283
- }]);
284
-
285
- if (activities.length === 0) {
286
- console.log('No activities to archive');
287
- return;
288
- }
289
-
290
- // Archive them
291
- const ids = activities.map(a => a._id);
292
- const result = await client.request('v3.activity.archive', [
293
- ids,
294
- { reason: 'Auto-archive: >90 days in completed phase' }
295
- ]);
296
-
297
- console.log(`Archived ${result.count} old activities`);
298
- return result;
299
- }
300
- ```
301
- ```
302
-
303
- ### Section 7: Error Responses
304
-
305
- ```markdown
306
- ## Error Responses
307
-
308
- ### Activity Not Found
309
-
310
- ```json
311
- {
312
- "code": "NotFound",
313
- "message": "Activity not found: 64a1b2c3d4e5f6a7b8c9d0e1"
314
- }
315
- ```
316
-
317
- ### Permission Denied
318
-
319
- ```json
320
- {
321
- "code": "PermissionDenied",
322
- "message": "Insufficient permissions to archive activity"
323
- }
324
- ```
325
-
326
- ### Invalid Arguments
327
-
328
- ```json
329
- {
330
- "code": "InvalidArguments",
331
- "message": "activityIds must be an array of valid ObjectIds"
332
- }
333
- ```
334
-
335
- ### Already Archived
336
-
337
- ```json
338
- {
339
- "code": "Failed",
340
- "message": "Activity is already archived"
341
- }
342
- ```
343
- ```
344
-
345
- ### Section 8: Technical Sections
346
-
347
- ```markdown
348
- ## Socket.IO Signals
349
-
350
- This endpoint emits the following real-time signals:
351
-
352
- ### activities.archived
353
-
354
- Emitted to all workspace members with view access.
355
-
356
- ```json
357
- {
358
- "sig": "activities.archived",
359
- "meta": {
360
- "activityIds": ["64a1b2c3d4e5f6a7b8c9d0e1"],
361
- "processId": "64a1b2c3d4e5f6a7b8c9d0e3",
362
- "archivedBy": "64a1b2c3d4e5f6a7b8c9d0e4",
363
- "timestamp": 1730937600000
364
- }
365
- }
366
- ```
367
-
368
- ## Performance Considerations
369
-
370
- - **Batch size**: Maximum 100 activities per request
371
- - **Large archives**: Use pagination for >1000 activities
372
- - **Linked activities**: `archiveLinked: true` may increase processing time
373
- - **Indexes**: Archive queries are optimized via `archived` field index
374
-
375
- ## Security Considerations
376
-
377
- - All archive operations are logged in activity history
378
- - Archive reason is stored for audit purposes
379
- - Only admin users can restore archived activities
380
- - Archived data remains subject to data retention policies
381
- ```
382
-
383
- ### Section 9: Notes
384
-
385
- ```markdown
386
- ## Notes
387
-
388
- - Archived activities are **excluded from insights by default** - use `includeArchived: true` filter
389
- - The `activities.archived` signal is emitted to update connected clients
390
- - Archiving is **reversible** via `v3.activity.restore` (admin only)
391
- - Archive operations are **atomic** - partial failures don't affect successful archives
392
- - Archived activities still count toward workspace storage limits
393
- ```
394
-
395
- ### Section 10: Related Endpoints
396
-
397
- ```markdown
398
- ## Related Endpoints
399
-
400
- - [v3.activity.restore](v3.activity.restore.md) - Restore archived activities
401
- - [v3.activity.delete](v3.activity.delete.md) - Permanently delete activities
402
- - [v3.activity.list](v3.activity.list.md) - List activities (supports archive filter)
403
- - [v3.activity.get](v3.activity.get.md) - Get single activity (works on archived)
404
- ```
405
-
406
- ---
407
-
408
- ## Forbidden Patterns
409
-
410
- NEVER include these in documentation:
411
-
412
- ### Raw Socket.io
413
-
414
- ```javascript
415
- // WRONG - Never show raw socket calls
416
- socket.emit('v3.activity.archive', [ids], callback);
417
- ```
418
-
419
- ### Raw HTTP/Fetch
420
-
421
- ```javascript
422
- // WRONG - Never show raw HTTP
423
- fetch('/api/v3.activity.archive', {
424
- method: 'POST',
425
- body: JSON.stringify({ args: [ids] })
426
- });
427
- ```
428
-
429
- ### Framework-Specific Code
430
-
431
- ```javascript
432
- // WRONG - No React, Vue, Angular examples
433
- function useArchive() {
434
- const [loading, setLoading] = useState(false);
435
- // ...
436
- }
437
- ```
438
-
439
- ### Raw JSON-RPC
440
-
441
- ```json
442
- // WRONG - No raw protocol format
443
- {
444
- "method": "v3.activity.archive",
445
- "args": [["id1", "id2"]]
446
- }
447
- ```
448
-
449
- ---
450
-
451
- ## Quality Checklist
452
-
453
- Before marking documentation complete:
454
-
455
- **Content:**
456
- - [ ] All 10 sections present in correct order
457
- - [ ] All 4 example patterns included
458
- - [ ] Socket.IO signals documented (if applicable)
459
- - [ ] Complete parameter table with types
460
- - [ ] Error responses with JSON examples
461
- - [ ] Related endpoints listed
462
-
463
- **Research:**
464
- - [ ] Found test file usage examples
465
- - [ ] Located implementation code
466
- - [ ] Extracted Joi validation schemas
467
- - [ ] Identified Socket.IO signals
468
- - [ ] Documented permission requirements
469
-
470
- **Quality:**
471
- - [ ] Uses ONLY @hailer/cli patterns
472
- - [ ] No framework-specific examples
473
- - [ ] No raw Socket.io or HTTP examples
474
- - [ ] Consistent formatting throughout