@cossistant/types 0.1.0 → 0.1.2

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 (76) hide show
  1. package/analytics.d.ts +31 -0
  2. package/analytics.d.ts.map +1 -0
  3. package/analytics.js +41 -0
  4. package/analytics.js.map +1 -0
  5. package/api/ai-agent-capabilities.d.ts +16 -19
  6. package/api/ai-agent-capabilities.d.ts.map +1 -1
  7. package/api/ai-agent-capabilities.js +215 -286
  8. package/api/ai-agent-capabilities.js.map +1 -1
  9. package/api/ai-agent-defaults.d.ts +6 -0
  10. package/api/ai-agent-defaults.d.ts.map +1 -0
  11. package/api/ai-agent-defaults.js +33 -0
  12. package/api/ai-agent-defaults.js.map +1 -0
  13. package/api/ai-agent.d.ts +314 -207
  14. package/api/ai-agent.d.ts.map +1 -1
  15. package/api/ai-agent.js +175 -111
  16. package/api/ai-agent.js.map +1 -1
  17. package/api/conversation.d.ts +79 -56
  18. package/api/conversation.d.ts.map +1 -1
  19. package/api/conversation.js +7 -2
  20. package/api/conversation.js.map +1 -1
  21. package/api/feedback.d.ts +5 -0
  22. package/api/feedback.d.ts.map +1 -1
  23. package/api/feedback.js +2 -0
  24. package/api/feedback.js.map +1 -1
  25. package/api/index.d.ts +7 -6
  26. package/api/index.js +7 -6
  27. package/api/link-source.d.ts +4 -4
  28. package/api/link-source.d.ts.map +1 -1
  29. package/api/link-source.js +1 -1
  30. package/api/link-source.js.map +1 -1
  31. package/api/timeline-item.d.ts +79 -67
  32. package/api/timeline-item.d.ts.map +1 -1
  33. package/api/timeline-item.js +3 -1
  34. package/api/timeline-item.js.map +1 -1
  35. package/api/user.d.ts +1 -1
  36. package/api/user.d.ts.map +1 -1
  37. package/api/user.js +2 -2
  38. package/api/user.js.map +1 -1
  39. package/api/visitor.d.ts +225 -1
  40. package/api/visitor.d.ts.map +1 -1
  41. package/api/visitor.js +142 -1
  42. package/api/visitor.js.map +1 -1
  43. package/api/website.d.ts +16 -7
  44. package/api/website.d.ts.map +1 -1
  45. package/api/website.js +16 -2
  46. package/api/website.js.map +1 -1
  47. package/enums.d.ts +2 -0
  48. package/enums.d.ts.map +1 -1
  49. package/enums.js +3 -1
  50. package/enums.js.map +1 -1
  51. package/index.d.ts +10 -8
  52. package/index.d.ts.map +1 -1
  53. package/index.js +10 -8
  54. package/package.json +1 -1
  55. package/realtime-events.d.ts +106 -36
  56. package/realtime-events.d.ts.map +1 -1
  57. package/realtime-events.js +6 -2
  58. package/realtime-events.js.map +1 -1
  59. package/schemas.d.ts +13 -11
  60. package/schemas.d.ts.map +1 -1
  61. package/tool-timeline-policy.d.ts +19 -2
  62. package/tool-timeline-policy.d.ts.map +1 -1
  63. package/tool-timeline-policy.js +29 -6
  64. package/tool-timeline-policy.js.map +1 -1
  65. package/trpc/conversation-hard-limit.d.ts +30 -0
  66. package/trpc/conversation-hard-limit.d.ts.map +1 -0
  67. package/trpc/conversation-hard-limit.js +43 -0
  68. package/trpc/conversation-hard-limit.js.map +1 -0
  69. package/trpc/conversation.d.ts +84 -44
  70. package/trpc/conversation.d.ts.map +1 -1
  71. package/trpc/conversation.js +6 -0
  72. package/trpc/conversation.js.map +1 -1
  73. package/trpc/visitor.d.ts +73 -15
  74. package/trpc/visitor.d.ts.map +1 -1
  75. package/trpc/visitor.js +15 -8
  76. package/trpc/visitor.js.map +1 -1
@@ -8,12 +8,14 @@ const AI_AGENT_TOOL_CATEGORIES = [
8
8
  "context",
9
9
  "analysis"
10
10
  ];
11
+ const AI_AGENT_TOOL_GROUPS = ["behavior", "actions"];
11
12
  const AI_AGENT_TOOL_IDS = [
12
13
  "searchKnowledgeBase",
13
14
  "identifyVisitor",
14
15
  "updateConversationTitle",
15
16
  "updateSentiment",
16
17
  "setPriority",
18
+ "categorizeConversation",
17
19
  "sendMessage",
18
20
  "sendPrivateMessage",
19
21
  "respond",
@@ -27,406 +29,333 @@ const AI_AGENT_BEHAVIOR_SETTING_KEYS = [
27
29
  "canMarkSpam",
28
30
  "canSetPriority",
29
31
  "canEscalate",
32
+ "autoCategorize",
30
33
  "autoGenerateTitle",
31
34
  "autoAnalyzeSentiment"
32
35
  ];
33
- const AI_AGENT_TOOL_CATALOG = [
36
+ const AI_AGENT_TOOL_CATALOG_RAW = [
34
37
  {
35
38
  id: "searchKnowledgeBase",
36
39
  label: "Search Knowledge Base",
37
- description: "Looks up product or policy facts in your trained knowledge before answering.",
40
+ description: "Retrieve relevant knowledge snippets by keyword query.",
38
41
  category: "context",
42
+ group: "behavior",
43
+ order: 1,
39
44
  isSystem: true,
40
45
  isRequired: true,
41
46
  isToggleable: false,
42
47
  behaviorSettingKey: null,
43
- defaultTemplateNames: ["deep-research.md", "grounded-answers.md"]
48
+ defaultSkill: {
49
+ name: "search-knowledge-base.md",
50
+ label: "Search Knowledge Base",
51
+ description: "Keyword query patterns and result interpretation.",
52
+ content: `## Query Tactics
53
+
54
+ - Use short keyword queries (2-6 words).
55
+ - Retry with synonyms when results are weak.
56
+ - Prefer specific product/feature terms over full sentences.
57
+
58
+ ## Result Use
59
+
60
+ - Prioritize high-similarity results that directly answer the request.
61
+ - Use title/source metadata when it clarifies confidence.`
62
+ }
44
63
  },
45
64
  {
46
65
  id: "identifyVisitor",
47
66
  label: "Identify Visitor",
48
- description: "Links visitor details to a contact record when name and email are collected.",
67
+ description: "Attach visitor name/email to the conversation record.",
49
68
  category: "context",
69
+ group: "behavior",
70
+ order: 2,
50
71
  isSystem: true,
51
72
  isRequired: true,
52
73
  isToggleable: false,
53
74
  behaviorSettingKey: null,
54
- defaultTemplateNames: ["visitor-identification.md"]
75
+ defaultSkill: {
76
+ name: "identify-visitor.md",
77
+ label: "Identify Visitor",
78
+ description: "Input hygiene for profile linking.",
79
+ content: `## Input Hygiene
80
+
81
+ - Pass clean name/email values without extra text.
82
+ - Use the latest visitor-provided values if they correct earlier info.
83
+ - Avoid duplicate calls when identity is already up to date.`
84
+ }
55
85
  },
56
86
  {
57
87
  id: "updateConversationTitle",
58
88
  label: "Update Conversation Title",
59
- description: "Sets or refreshes the conversation title once the topic is clear.",
89
+ description: "Set a concise title for the conversation topic.",
60
90
  category: "analysis",
91
+ group: "behavior",
92
+ order: 3,
61
93
  isSystem: false,
62
94
  isRequired: false,
63
95
  isToggleable: true,
64
96
  behaviorSettingKey: "autoGenerateTitle",
65
- defaultTemplateNames: ["title-hygiene.md"]
97
+ defaultSkill: {
98
+ name: "update-conversation-title.md",
99
+ label: "Update Conversation Title",
100
+ description: "Title formatting conventions.",
101
+ content: `## Title Formatting
102
+
103
+ - Keep titles short and issue-focused.
104
+ - Use concrete nouns (feature, error, account area).
105
+ - Update only when the conversation topic is clear and stable across recent messages.
106
+ - Skip vague, transitional, or generic titles.
107
+ - Do not replace a title unless the newer title is meaningfully better.`
108
+ }
66
109
  },
67
110
  {
68
111
  id: "updateSentiment",
69
112
  label: "Update Sentiment",
70
- description: "Tracks tone shifts and keeps conversation sentiment metadata up to date.",
113
+ description: "Record meaningful sentiment changes for conversation analytics.",
71
114
  category: "analysis",
115
+ group: "behavior",
116
+ order: 4,
72
117
  isSystem: false,
73
118
  isRequired: false,
74
119
  isToggleable: true,
75
120
  behaviorSettingKey: "autoAnalyzeSentiment",
76
- defaultTemplateNames: ["sentiment-tracking.md"]
121
+ defaultSkill: {
122
+ name: "update-sentiment.md",
123
+ label: "Update Sentiment",
124
+ description: "When sentiment updates add signal.",
125
+ content: `## Sentiment Updates
126
+
127
+ - Update only for clear tone shifts.
128
+ - Keep rationale short and evidence-based.
129
+ - Skip minor wording changes with no practical impact.`
130
+ }
77
131
  },
78
132
  {
79
133
  id: "setPriority",
80
134
  label: "Set Priority",
81
- description: "Adjusts urgency level for critical issues so teams can triage quickly.",
135
+ description: "Set operational urgency for the conversation.",
82
136
  category: "analysis",
137
+ group: "behavior",
138
+ order: 5,
83
139
  isSystem: false,
84
140
  isRequired: false,
85
141
  isToggleable: true,
86
142
  behaviorSettingKey: "canSetPriority",
87
- defaultTemplateNames: ["priority-triage.md"]
143
+ defaultSkill: {
144
+ name: "set-priority.md",
145
+ label: "Set Priority",
146
+ description: "Priority mapping by impact and urgency.",
147
+ content: `## Priority Mapping
148
+
149
+ - Urgent: outage, security, or severe business impact.
150
+ - High: blocked workflow with no practical workaround.
151
+ - Normal: standard support work.
152
+ - Low: informational, non-blocking requests.`
153
+ }
154
+ },
155
+ {
156
+ id: "categorizeConversation",
157
+ label: "Categorize Conversation",
158
+ description: "Add the conversation to one matching saved view.",
159
+ category: "analysis",
160
+ group: "behavior",
161
+ order: 6,
162
+ isSystem: false,
163
+ isRequired: false,
164
+ isToggleable: true,
165
+ behaviorSettingKey: "autoCategorize",
166
+ defaultSkill: {
167
+ name: "categorize-conversation.md",
168
+ label: "Categorize Conversation",
169
+ description: "How to choose the best matching saved view.",
170
+ content: `## Categorization Rules
171
+
172
+ - Use only one saved view when the match is clear.
173
+ - Match the conversation to the closest existing view prompt and description.
174
+ - Skip when no view clearly fits.
175
+ - Prefer stable themes over one-off phrases from a single message.`
176
+ }
88
177
  },
89
178
  {
90
179
  id: "sendMessage",
91
- label: "Send Public Message",
92
- description: "Sends a visible reply to the visitor.",
180
+ label: "Send Chat Message",
181
+ description: "Send one short customer-visible chat message. Use up to 3 when shorter bubbles read better.",
93
182
  category: "messaging",
183
+ group: "behavior",
184
+ order: 7,
94
185
  isSystem: true,
95
186
  isRequired: true,
96
187
  isToggleable: false,
97
188
  behaviorSettingKey: null,
98
- defaultTemplateNames: ["tone-and-voice.md", "short-clear-replies.md"]
189
+ defaultSkill: {
190
+ name: "send-message.md",
191
+ label: "Send Chat Message",
192
+ description: "Short chat-bubble reply rules.",
193
+ content: `## Role
194
+
195
+ - Use this for every visitor-facing reply.
196
+ - Prefer short chat bubbles over one dense block of text.
197
+ - Use 2 or 3 separate calls when splitting improves readability.
198
+ - Do not exceed 3 public chat messages in one run.`
199
+ }
99
200
  },
100
201
  {
101
202
  id: "sendPrivateMessage",
102
203
  label: "Send Private Note",
103
- description: "Adds internal-only notes for teammates that visitors cannot see.",
204
+ description: "Send internal notes to teammates that visitors cannot see.",
104
205
  category: "messaging",
206
+ group: "behavior",
207
+ order: 8,
105
208
  isSystem: true,
106
209
  isRequired: true,
107
210
  isToggleable: false,
108
211
  behaviorSettingKey: null,
109
- defaultTemplateNames: ["handoff-notes.md"]
212
+ defaultSkill: {
213
+ name: "send-private-message.md",
214
+ label: "Send Private Note",
215
+ description: "Internal-note structure for handoff quality.",
216
+ content: `## Internal Note Structure
217
+
218
+ - Include issue summary, key facts, and actions already attempted.
219
+ - Keep notes scannable for fast teammate handoff.
220
+ - Use internal operational tone (not customer-facing copy).`
221
+ }
110
222
  },
111
223
  {
112
224
  id: "respond",
113
225
  label: "Finish: Respond",
114
- description: "Marks turn complete after responding to the visitor.",
226
+ description: "Finish the run after sending a complete public response.",
115
227
  category: "action",
228
+ group: "actions",
229
+ order: 1,
116
230
  isSystem: true,
117
231
  isRequired: true,
118
232
  isToggleable: false,
119
233
  behaviorSettingKey: null,
120
- defaultTemplateNames: ["reply-or-stay-silent.md"]
234
+ defaultSkill: {
235
+ name: "respond.md",
236
+ label: "Finish Respond",
237
+ description: "When to select the respond finish action.",
238
+ content: `## Finish Semantics
239
+
240
+ - Choose this when the turn is complete and no escalation/closure state change is required.
241
+ - Use this as the terminal action for normal reply flows.`
242
+ }
121
243
  },
122
244
  {
123
245
  id: "escalate",
124
246
  label: "Finish: Escalate",
125
- description: "Hands off the conversation to a human agent when needed.",
247
+ description: "Escalate to a human when AI should not complete the request.",
126
248
  category: "action",
249
+ group: "actions",
250
+ order: 2,
127
251
  isSystem: false,
128
252
  isRequired: false,
129
253
  isToggleable: true,
130
254
  behaviorSettingKey: "canEscalate",
131
- defaultTemplateNames: ["escalation-playbook.md"]
255
+ defaultSkill: {
256
+ name: "escalate.md",
257
+ label: "Finish Escalate",
258
+ description: "When to select the escalate finish action.",
259
+ content: `## Finish Semantics
260
+
261
+ - Choose this when human intervention is required.
262
+ - Include a clear escalation reason payload for teammate routing.`
263
+ }
132
264
  },
133
265
  {
134
266
  id: "resolve",
135
267
  label: "Finish: Resolve",
136
- description: "Marks the conversation as resolved when it is fully handled.",
268
+ description: "Mark conversation resolved once the issue is fully handled.",
137
269
  category: "action",
270
+ group: "actions",
271
+ order: 3,
138
272
  isSystem: false,
139
273
  isRequired: false,
140
274
  isToggleable: true,
141
275
  behaviorSettingKey: "canResolve",
142
- defaultTemplateNames: ["resolution-checklist.md"]
276
+ defaultSkill: {
277
+ name: "resolve.md",
278
+ label: "Finish Resolve",
279
+ description: "When to select the resolve finish action.",
280
+ content: `## Finish Semantics
281
+
282
+ - Choose this when the issue is closed and the conversation can be marked resolved.
283
+ - Use resolution-oriented reasoning in the payload.`
284
+ }
143
285
  },
144
286
  {
145
287
  id: "markSpam",
146
288
  label: "Finish: Mark Spam",
147
- description: "Flags obvious spam or abuse and closes the conversation.",
289
+ description: "Mark obvious abuse/spam and close quickly.",
148
290
  category: "action",
291
+ group: "actions",
292
+ order: 4,
149
293
  isSystem: false,
150
294
  isRequired: false,
151
295
  isToggleable: true,
152
296
  behaviorSettingKey: "canMarkSpam",
153
- defaultTemplateNames: ["spam-detection.md"]
297
+ defaultSkill: {
298
+ name: "mark-spam.md",
299
+ label: "Finish Mark Spam",
300
+ description: "When to select the spam finish action.",
301
+ content: `## Finish Semantics
302
+
303
+ - Choose this for clear spam/abuse/bot traffic.
304
+ - Capture concise evidence in reasoning for auditability.`
305
+ }
154
306
  },
155
307
  {
156
308
  id: "skip",
157
309
  label: "Finish: Skip",
158
- description: "Intentionally stays silent when no response is needed from AI.",
310
+ description: "Finish without a public response when silence is better.",
159
311
  category: "action",
312
+ group: "actions",
313
+ order: 5,
160
314
  isSystem: true,
161
315
  isRequired: true,
162
316
  isToggleable: false,
163
317
  behaviorSettingKey: null,
164
- defaultTemplateNames: ["reply-or-stay-silent.md"]
318
+ defaultSkill: {
319
+ name: "skip.md",
320
+ label: "Finish Skip",
321
+ description: "When to select the skip finish action.",
322
+ content: `## Finish Semantics
323
+
324
+ - Choose this when no additional assistant output is needed for this run.
325
+ - Use reasoning that explains why silence is intentional.`
326
+ }
165
327
  }
166
328
  ];
167
- const AI_AGENT_DEFAULT_SKILL_TEMPLATE_DEFINITIONS = [
168
- {
169
- name: "reply-or-stay-silent.md",
170
- label: "Reply Or Stay Silent",
171
- description: "Defines when the AI should answer and when it should intentionally stay silent.",
172
- content: `## Reply Decision
173
-
174
- - Reply when the visitor still needs a clear, concrete answer.
175
- - Stay silent when a human already answered well or when the message is only acknowledgement.
176
- - If unsure whether to reply, prefer one short helpful message over multiple partial replies.
177
-
178
- ## Tool Notes
179
-
180
- - Use [@Send Public Message](mention:tool:sendMessage) only when a reply adds value.
181
- - Finish with [@Finish: Respond](mention:tool:respond) after replying.
182
- - Use [@Finish: Skip](mention:tool:skip) when no reply is required.`,
183
- suggestedToolIds: [
184
- "sendMessage",
185
- "respond",
186
- "skip"
187
- ]
188
- },
189
- {
190
- name: "tone-and-voice.md",
191
- label: "Tone And Voice",
192
- description: "Keeps replies concise, empathetic, and aligned with a support tone.",
193
- content: `## Tone
194
-
195
- - Be concise, direct, and calm.
196
- - Prefer plain language over jargon.
197
- - Keep messages to 1-2 short sentences when possible.
198
-
199
- ## Empathy
200
-
201
- - Acknowledge frustration without over-apologizing.
202
- - Focus on the next useful action.
203
-
204
- ## Tool Notes
205
-
206
- - Send customer-visible text through [@Send Public Message](mention:tool:sendMessage).`,
207
- suggestedToolIds: ["sendMessage"]
208
- },
209
- {
210
- name: "short-clear-replies.md",
211
- label: "Short Clear Replies",
212
- description: "Enforces short, structured customer-facing responses.",
213
- content: `## Message Shape
214
-
215
- - First sentence: direct answer.
216
- - Optional second sentence: next step or clarifying question.
217
- - Avoid multi-paragraph replies unless the question is complex.
218
-
219
- ## Tool Notes
220
-
221
- - Send the final customer reply with [@Send Public Message](mention:tool:sendMessage).`,
222
- suggestedToolIds: ["sendMessage"]
223
- },
224
- {
225
- name: "deep-research.md",
226
- label: "Deep Research",
227
- description: "Guides multi-pass retrieval before giving factual or policy answers.",
228
- content: `## Research Workflow
229
-
230
- - For factual/product/policy questions, search before answering.
231
- - Start with a short focused query, then broaden if needed.
232
- - Use at least one follow-up search if confidence is low.
233
-
234
- ## Tool Notes
235
-
236
- - Use [@Search Knowledge Base](mention:tool:searchKnowledgeBase) for retrieval.
237
- - Only send final claims after grounding them in retrieved context.`,
238
- suggestedToolIds: ["searchKnowledgeBase"]
239
- },
240
- {
241
- name: "grounded-answers.md",
242
- label: "Grounded Answers",
243
- description: "Prevents hallucinations and enforces transparent uncertainty.",
244
- content: `## Grounding Rules
245
-
246
- - Do not invent product, policy, or pricing details.
247
- - If information is missing, say so clearly and offer escalation.
248
- - Prefer partial certainty over confident guessing.
249
-
250
- ## Tool Notes
251
-
252
- - Validate facts with [@Search Knowledge Base](mention:tool:searchKnowledgeBase).
253
- - If unsupported, use [@Finish: Escalate](mention:tool:escalate) when available.`,
254
- suggestedToolIds: ["searchKnowledgeBase", "escalate"]
255
- },
256
- {
257
- name: "visitor-identification.md",
258
- label: "Visitor Identification",
259
- description: "Controls when and how to request name/email and identify the visitor.",
260
- content: `## Identification Policy
261
-
262
- - Ask for name and email only when needed for account-specific help.
263
- - Validate that the name field contains a name and email field contains an email.
264
- - Update details if the visitor corrects their information.
265
-
266
- ## Tool Notes
267
-
268
- - Link identity with [@Identify Visitor](mention:tool:identifyVisitor).`,
269
- suggestedToolIds: ["identifyVisitor"]
270
- },
271
- {
272
- name: "escalation-playbook.md",
273
- label: "Escalation Playbook",
274
- description: "Defines when escalation is mandatory and what to include in handoff.",
275
- content: `## Escalate When
276
-
277
- - The visitor asks for a human.
278
- - You cannot find reliable information.
279
- - Legal, compliance, billing, or high-risk judgment is required.
280
-
281
- ## Handoff Quality
282
-
283
- - Tell the visitor what happens next.
284
- - Leave concise internal context for teammates.
285
-
286
- ## Tool Notes
287
-
288
- - Notify visitor with [@Send Public Message](mention:tool:sendMessage).
289
- - Add handoff context via [@Send Private Note](mention:tool:sendPrivateMessage).
290
- - Finish with [@Finish: Escalate](mention:tool:escalate).`,
291
- suggestedToolIds: [
292
- "sendMessage",
293
- "sendPrivateMessage",
294
- "escalate"
295
- ]
296
- },
297
- {
298
- name: "resolution-checklist.md",
299
- label: "Resolution Checklist",
300
- description: "Ensures conversations are only resolved after clear completion criteria.",
301
- content: `## Resolve Criteria
302
-
303
- - The visitor's request is fully addressed.
304
- - No unresolved dependency remains.
305
- - The final response includes a clear closure.
306
-
307
- ## Tool Notes
308
-
309
- - Send closure text with [@Send Public Message](mention:tool:sendMessage).
310
- - Finish with [@Finish: Resolve](mention:tool:resolve).`,
311
- suggestedToolIds: ["sendMessage", "resolve"]
312
- },
313
- {
314
- name: "spam-detection.md",
315
- label: "Spam Detection",
316
- description: "Sets strict criteria for spam classification.",
317
- content: `## Spam Heuristics
318
-
319
- - Mark as spam only for obvious bot, phishing, or abusive noise.
320
- - Do not mark difficult but valid customer requests as spam.
321
-
322
- ## Tool Notes
323
-
324
- - Use [@Finish: Mark Spam](mention:tool:markSpam) only when highly confident.`,
325
- suggestedToolIds: ["markSpam"]
326
- },
327
- {
328
- name: "priority-triage.md",
329
- label: "Priority Triage",
330
- description: "Standardizes urgency assignment for incoming issues.",
331
- content: `## Priority Rules
332
-
333
- - Urgent: outages, security incidents, severe business impact.
334
- - High: blocked workflow with no workaround.
335
- - Normal: standard product support requests.
336
- - Low: informational or minor questions.
337
-
338
- ## Tool Notes
339
-
340
- - Set urgency with [@Set Priority](mention:tool:setPriority).`,
341
- suggestedToolIds: ["setPriority"]
342
- },
343
- {
344
- name: "sentiment-tracking.md",
345
- label: "Sentiment Tracking",
346
- description: "Encourages sentiment updates when tone changes.",
347
- content: `## Sentiment Updates
348
-
349
- - Update sentiment when tone shifts meaningfully.
350
- - Keep reason short and factual.
351
- - Avoid over-updating on minor wording changes.
352
-
353
- ## Tool Notes
354
-
355
- - Record tone with [@Update Sentiment](mention:tool:updateSentiment).`,
356
- suggestedToolIds: ["updateSentiment"]
357
- },
358
- {
359
- name: "title-hygiene.md",
360
- label: "Title Hygiene",
361
- description: "Keeps conversation titles clear and actionable.",
362
- content: `## Title Standards
363
-
364
- - Keep titles short and specific.
365
- - Reflect the primary issue, not generic phrases.
366
- - Update title if topic changes significantly.
367
-
368
- ## Tool Notes
369
-
370
- - Use [@Update Conversation Title](mention:tool:updateConversationTitle).`,
371
- suggestedToolIds: ["updateConversationTitle"]
372
- },
373
- {
374
- name: "handoff-notes.md",
375
- label: "Handoff Notes",
376
- description: "Improves private notes shared with human teammates.",
377
- content: `## Private Note Checklist
378
-
379
- - Include issue summary, key facts, and what was already tried.
380
- - Add urgency and expected next action.
381
- - Keep notes scannable and concise.
382
-
383
- ## Tool Notes
384
-
385
- - Send internal details with [@Send Private Note](mention:tool:sendPrivateMessage).`,
386
- suggestedToolIds: ["sendPrivateMessage"]
329
+ const AI_AGENT_TOOL_CATALOG = AI_AGENT_TOOL_CATALOG_RAW.map((tool) => ({
330
+ ...tool,
331
+ defaultSkill: {
332
+ ...tool.defaultSkill,
333
+ content: serializeSkillFileContent({
334
+ name: stripSkillMarkdownExtension(tool.defaultSkill.name),
335
+ description: tool.defaultSkill.description,
336
+ body: tool.defaultSkill.content
337
+ })
387
338
  }
388
- ];
389
- const AI_AGENT_DEFAULT_SKILL_TEMPLATES = AI_AGENT_DEFAULT_SKILL_TEMPLATE_DEFINITIONS.map((template) => ({
390
- ...template,
391
- content: serializeSkillFileContent({
392
- name: stripSkillMarkdownExtension(template.name),
393
- description: template.description,
394
- body: template.content
395
- })
396
339
  }));
397
- const AI_AGENT_SYSTEM_SKILL_METADATA = [
398
- {
399
- name: "agent.md",
400
- label: "Agent Identity",
401
- description: "Core role, persona, and mission of the assistant."
402
- },
403
- {
404
- name: "security.md",
405
- label: "Security Guardrails",
406
- description: "Critical safety and confidentiality rules that should stay strict."
407
- },
408
- {
409
- name: "behaviour.md",
410
- label: "Behavior Policy",
411
- description: "Runtime behavior and mode-specific operating guidance."
412
- },
413
- {
414
- name: "participation.md",
415
- label: "Participation Policy",
416
- description: "Rules for when AI should participate versus intentionally stay silent."
417
- },
418
- {
419
- name: "grounding.md",
420
- label: "Grounding Policy",
421
- description: "Instructions for factual grounding and knowledge retrieval discipline."
422
- },
423
- {
424
- name: "capabilities.md",
425
- label: "Capabilities Contract",
426
- description: "Capability boundaries and references to optional behavior skills."
427
- }
340
+ const AI_AGENT_RESERVED_TOOL_SKILL_TEMPLATE_NAMES = [...new Set(AI_AGENT_TOOL_CATALOG.map((tool) => tool.defaultSkill.name))];
341
+ const AI_AGENT_DROPPED_SKILL_TEMPLATE_NAMES = [
342
+ "reply-or-stay-silent.md",
343
+ "send-message-behavior.md",
344
+ "deep-research.md",
345
+ "grounded-answers.md",
346
+ "visitor-identification.md",
347
+ "escalation-playbook.md",
348
+ "resolution-checklist.md",
349
+ "spam-detection.md",
350
+ "priority-triage.md",
351
+ "sentiment-tracking.md",
352
+ "title-hygiene.md",
353
+ "handoff-notes.md",
354
+ "tone-and-voice.md",
355
+ "short-clear-replies.md",
356
+ "wait.md"
428
357
  ];
429
358
 
430
359
  //#endregion
431
- export { AI_AGENT_BEHAVIOR_SETTING_KEYS, AI_AGENT_DEFAULT_SKILL_TEMPLATES, AI_AGENT_SYSTEM_SKILL_METADATA, AI_AGENT_TOOL_CATALOG, AI_AGENT_TOOL_CATEGORIES, AI_AGENT_TOOL_IDS };
360
+ export { AI_AGENT_BEHAVIOR_SETTING_KEYS, AI_AGENT_DROPPED_SKILL_TEMPLATE_NAMES, AI_AGENT_RESERVED_TOOL_SKILL_TEMPLATE_NAMES, AI_AGENT_TOOL_CATALOG, AI_AGENT_TOOL_CATEGORIES, AI_AGENT_TOOL_GROUPS, AI_AGENT_TOOL_IDS };
432
361
  //# sourceMappingURL=ai-agent-capabilities.js.map